From 7e1ab6c6ee145ecfdf17938fd00d1e362747671b Mon Sep 17 00:00:00 2001 From: luxferre Date: Mon, 22 Jun 2026 13:23:06 +0100 Subject: [PATCH] feat: db model mixins --- src/models.py | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/src/models.py b/src/models.py index f2467de..3f2295d 100644 --- a/src/models.py +++ b/src/models.py @@ -5,8 +5,8 @@ Global database models from datetime import datetime from typing import Any -from sqlalchemy import DateTime, JSON -from sqlalchemy.orm import DeclarativeBase +from sqlalchemy import DateTime, JSON, func +from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column class CustomBase(DeclarativeBase): @@ -14,3 +14,24 @@ class CustomBase(DeclarativeBase): datetime: DateTime(timezone=True), dict[str, Any]: JSON, } + + +class ActivatedMixin: + active: Mapped[bool] = mapped_column(default=True) + + +class DeletedTimestampMixin: + deleted_at: Mapped[datetime | None] = mapped_column(nullable=True) + + +class DescriptionMixin: + description: Mapped[str] + + +class IdMixin: + id: Mapped[int] = mapped_column(primary_key=True, autoincrement=True) + + +class TimestampMixin: + created_at: Mapped[datetime] = mapped_column(default=func.now()) + updated_at: Mapped[datetime] = mapped_column(default=func.now(), onupdate=func.now())