Arag / app /models /base.py
AuthorBot
Restructure project for HF Spaces deployment
772f852
Raw
History Blame Contribute Delete
923 Bytes
"""Author RAG Chatbot SaaS — SQLAlchemy Base Model and Mixins."""
import uuid
from datetime import datetime, timezone
from sqlalchemy import DateTime, String
from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column
class Base(DeclarativeBase):
"""Base class for all SQLAlchemy ORM models."""
pass
class TimestampMixin:
"""Adds created_at and updated_at columns to any model."""
created_at: Mapped[datetime] = mapped_column(
DateTime(timezone=True),
default=lambda: datetime.now(timezone.utc),
nullable=False,
)
updated_at: Mapped[datetime] = mapped_column(
DateTime(timezone=True),
default=lambda: datetime.now(timezone.utc),
onupdate=lambda: datetime.now(timezone.utc),
nullable=False,
)
def generate_uuid() -> str:
"""Generate a new UUID4 string. Used as default for primary keys."""
return str(uuid.uuid4())