base.py 634 B

1234567891011121314151617181920212223242526
  1. from __future__ import annotations
  2. from datetime import datetime
  3. from sqlalchemy import DateTime, func
  4. from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column
  5. class Base(DeclarativeBase):
  6. """SQLAlchemy declarative base for all ORM models."""
  7. class TimestampMixin:
  8. """created_at / updated_at mixin for entities."""
  9. created_at: Mapped[datetime] = mapped_column(
  10. DateTime,
  11. server_default=func.now(),
  12. nullable=False,
  13. )
  14. updated_at: Mapped[datetime] = mapped_column(
  15. DateTime,
  16. server_default=func.now(),
  17. onupdate=func.now(),
  18. nullable=False,
  19. )