""" Database Base models configuration """ from typing import Any from sqlalchemy import MetaData from sqlalchemy.ext.declarative import as_declarative, declared_attr convention = { "ix": "ix_%(column_0_label)s", "uq": "uq_%(table_name)s_%(column_0_name)s", "ck": "ck_%(table_name)s_%(constraint_name)s", "fk": "fk_%(table_name)s_%(column_0_name)s_%(referred_table_name)s", "pk": "pk_%(table_name)s", } metadata = MetaData(naming_convention=convention) @as_declarative(metadata=metadata) class Base: """Base class for all database models""" id: Any __name__: str # Generate __tablename__ automatically based on class name @declared_attr def __tablename__(cls) -> str: return cls.__name__.lower()