/
KKleinikov
/
FastAPI-GigaChatAI
Обзор
Документация
Войти
/
KKleinikov
/
FastAPI-GigaChatAI
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
db.py
78 строк
3 KB
Konstantin-Kleinikov
1.01 First release
05 дек 2025, 23:54
05 дек 2025, 23:54
7cb1635
Код
Авторство
О чём код?
from datetime import UTC, datetime from sqlalchemy import create_engine from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column, sessionmaker # Настройка базы данных DATABASE_URL = 'sqlite:///./chat_history.db' engine = create_engine( DATABASE_URL, connect_args={'check_same_thread': False}, ) SessionLocal = sessionmaker( autocommit=False, autoflush=False, bind=engine, ) class Base(DeclarativeBase): """Базовый класс для всех моделей SQLAlchemy.""" class ChatHistory(Base): """ Модель для хранения истории чатов. Содержит информацию о каждом запросе к GigaChat API, включая: - IP-адрес пользователя - Введённый промпт - Ответ модели - Использованную модель - Временную метку запроса Attributes: id: Уникальный идентификатор записи (первичный ключ). user_ip: IP-адрес пользователя, сделавшего запрос. prompt: Текст запроса, отправленный в модель. response: Ответ, полученный от модели. model: Название использованной GigaChat-модели (например, 'GigaChat', 'GigaChat-Plus'). timestamp: Время создания записи в UTC. """ __tablename__ = 'chat_history' id: Mapped[int] = mapped_column(primary_key=True, index=True) user_ip: Mapped[str] = mapped_column() prompt: Mapped[str] = mapped_column(index=True) response: Mapped[str] = mapped_column() model: Mapped[str] = mapped_column() timestamp: Mapped[datetime] = mapped_column( default=lambda: datetime.now(UTC) ) def __repr__(self) -> str: """ Возвращает строковое представление объекта ChatHistory. Returns: Строка вида: <ChatHistory(id=1, model='GigaChat', user_ip='192.168.1.1')> """ return (f"<ChatHistory(id={self.id}, model='{self.model}', " f"user_ip='{self.user_ip}')>") def to_dict(self) -> dict[str, str | int | datetime | None]: """ Преобразует объект в словарь. Returns: Словарь с полями: id, user_ip, prompt, response, model, timestamp """ return { 'id': self.id, 'user_ip': self.user_ip, 'prompt': self.prompt, 'response': self.response, 'model': self.model, 'timestamp': self.timestamp, }