feat: добавлены миксины для работы с идентификаторами и временными метками
- Создан файл `__init__.py` в пакете `lkeep.database.mixins`. - Добавлен класс `IDMixin` для генерации уникальных идентификаторов. - Создан файл `id_mixins.py` с реализацией миксина `IDMixin`. - Добавлены классы `CreatedAtMixin`, `UpdatedAtMixin` и `TimestampsMixin` для управления временными метками в моделях SQLAlchemy.
This commit is contained in:
parent
ac19bb4397
commit
a53ffb5213
7
lkeep/database/mixins/__init__.py
Normal file
7
lkeep/database/mixins/__init__.py
Normal file
@ -0,0 +1,7 @@
|
||||
"""
|
||||
Проект: Lkeep
|
||||
Автор: Иван Ашихмин
|
||||
Год: 2025
|
||||
Специально для проекта "Код на салфетке"
|
||||
https://pressanybutton.ru/category/servis-na-fastapi/
|
||||
"""
|
23
lkeep/database/mixins/id_mixins.py
Normal file
23
lkeep/database/mixins/id_mixins.py
Normal file
@ -0,0 +1,23 @@
|
||||
"""
|
||||
Проект: Lkeep
|
||||
Автор: Иван Ашихмин
|
||||
Год: 2025
|
||||
Специально для проекта "Код на салфетке"
|
||||
https://pressanybutton.ru/category/servis-na-fastapi/
|
||||
"""
|
||||
|
||||
import uuid
|
||||
|
||||
from sqlalchemy import UUID
|
||||
from sqlalchemy.orm import Mapped, mapped_column
|
||||
|
||||
|
||||
class IDMixin:
|
||||
"""
|
||||
Класс-миксин для добавления уникального идентификатора к объектам.
|
||||
|
||||
:ivar id: Уникальный идентификатор объекта.
|
||||
:type id: uuid.UUID
|
||||
"""
|
||||
|
||||
id: Mapped[uuid.UUID] = mapped_column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
|
53
lkeep/database/mixins/timestamp_mixins.py
Normal file
53
lkeep/database/mixins/timestamp_mixins.py
Normal file
@ -0,0 +1,53 @@
|
||||
"""
|
||||
Проект: 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
|
Loading…
x
Reference in New Issue
Block a user