"""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())