- Создан файл `__init__.py` в пакете `lkeep.database.mixins`. - Добавлен класс `IDMixin` для генерации уникальных идентификаторов. - Создан файл `id_mixins.py` с реализацией миксина `IDMixin`. - Добавлены классы `CreatedAtMixin`, `UpdatedAtMixin` и `TimestampsMixin` для управления временными метками в моделях SQLAlchemy.
54 lines
1.7 KiB
Python
54 lines
1.7 KiB
Python
"""
|
|
Проект: Lkeep
|
|
Автор: Иван Ашихмин
|
|
Год: 2025
|
|
Специально для проекта "Код на салфетке"
|
|
https://pressanybutton.ru/category/servis-na-fastapi/
|
|
"""
|
|
|
|
import datetime
|
|
|
|
from sqlalchemy import DateTime, func
|
|
from sqlalchemy.orm import Mapped, mapped_column
|
|
|
|
|
|
class CreatedAtMixin:
|
|
"""
|
|
Класс-миксин, добавляющий атрибут created_at для отслеживания времени создания объектов.
|
|
|
|
:ivar created_at: Время создания объекта.
|
|
:type created_at: datetime.datetime
|
|
"""
|
|
|
|
created_at: Mapped[datetime.datetime] = mapped_column(
|
|
DateTime(timezone=True),
|
|
server_default=func.now(),
|
|
default=datetime.datetime.now,
|
|
)
|
|
|
|
|
|
class UpdatedAtMixin:
|
|
"""
|
|
Класс-миксин, добавляющий атрибут `updated_at`, который автоматически обновляется при каждом изменении записи.
|
|
|
|
:ivar updated_at: Время последнего обновления записи.
|
|
:type updated_at: Mapped[datetime.datetime]
|
|
"""
|
|
|
|
updated_at: Mapped[datetime.datetime] = mapped_column(
|
|
DateTime(timezone=True), server_default=func.now(), onupdate=func.now()
|
|
)
|
|
|
|
|
|
class TimestampsMixin(CreatedAtMixin, UpdatedAtMixin):
|
|
"""
|
|
Класс-миксин для добавления временных меток создания и обновления в классы.
|
|
|
|
:ivar created_at: Время создания записи.
|
|
:type created_at: datetime.datetime
|
|
:ivar updated_at: Время последнего обновления записи.
|
|
:type updated_at: datetime.datetime
|
|
"""
|
|
|
|
pass
|