/
dv.peskov
/
help_you_remember_everything_bot
Обзор
Документация
Войти
/
dv.peskov
/
help_you_remember_everything_bot
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
database/models.py
93 строки
3 KB
Dmitry-Peskov
Перенес логику представления str и repr в модель Reminder. В логах использую repr, для пользователя отдаю str
14 июн 2025, 23:32
14 июн 2025, 23:32
95966c9
Код
Авторство
О чём код?
import datetime from sqlalchemy import func from sqlalchemy.ext.asyncio import AsyncAttrs from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column from sqlalchemy.sql import expression from sqlalchemy.types import Boolean, DateTime, Integer, Text class BaseModel(AsyncAttrs, DeclarativeBase): __abstract__ = True id: Mapped[int] = mapped_column( Integer, primary_key=True, autoincrement=True, doc="Целочисленный идентификатор, первичный ключ. Автоинкремент.", ) create_at: Mapped[datetime.datetime] = mapped_column( DateTime, nullable=False, server_default=func.now(), doc="Дата и время создания записи в системе", ) update_at: Mapped[datetime.datetime] = mapped_column( DateTime, nullable=False, server_default=func.now(), onupdate=func.now(), doc="Дата и время последнего обновления записи в системе", ) class Reminder(BaseModel): __tablename__ = "reminder" user_id: Mapped[int] = mapped_column( Integer, nullable=False, index=True, doc="Целочисленный идентификатор пользователя Telegram, которому предназначено напоминание.", ) remind_in: Mapped[datetime.datetime] = mapped_column( DateTime, nullable=False, doc="Дата и время, в которое необходимо направить пользователю напоминание.", ) text: Mapped[str] = mapped_column( Text, nullable=False, doc="Содержимое напоминания, которое необходимо отправить пользователю.", ) is_sent: Mapped[bool] = mapped_column( Boolean, nullable=False, server_default=expression.false(), doc="Флаг, отражающий факт отправки напоминания.", ) sent_to: Mapped[datetime.datetime] = mapped_column( DateTime, nullable=True, doc="Фактические дата и время отправки напоминания пользователю", ) sending_status: Mapped[str] = mapped_column( Text, nullable=True, doc="Текстовое пояснение результата отправки напоминания пользователю.", ) is_archived: Mapped[bool] = mapped_column( Boolean, nullable=False, server_default=expression.false(), doc="Флаг, показывающий, отмечал ли пользователь данное напоминание к удалению.", ) def __repr__(self) -> str: return f"{self.__class__.__name__}({self.id=}, {self.user_id=}, {self.remind_in=}, {self.text})" def __str__(self) -> str: card = ( f"🆔 {self.id}\n🕰 <i>{self.remind_in.strftime('%d.%m.%Y')}</i> в <i>{self.remind_in.strftime('%H:%M')}</i>\n" f"📝 {self.text}\n\n" ) return card