Neda/Back/db/base.py
2026-03-06 15:16:41 +03:30

34 lines
911 B
Python
Executable File

from datetime import datetime
import uuid
from sqlalchemy.ext.asyncio import AsyncAttrs
from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column, declared_attr
from sqlalchemy import DateTime, func
from sqlalchemy.dialects.postgresql import UUID
class Base(AsyncAttrs, DeclarativeBase):
"""Base model with common fields"""
@declared_attr.directive
def __tablename__(cls) -> str:
return cls.__name__.lower() + "s"
id: Mapped[uuid.UUID] = mapped_column(
UUID(as_uuid=True),
primary_key=True,
default=uuid.uuid4,
)
created_at: Mapped[datetime] = mapped_column(
DateTime(timezone=True),
server_default=func.now(),
nullable=False,
)
updated_at: Mapped[datetime] = mapped_column(
DateTime(timezone=True),
server_default=func.now(),
server_onupdate=func.now(),
nullable=False,
)