Spaces:
Running
Running
| """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()) | |