2025-05-30 20:35:55 +00:00

31 lines
755 B
Python

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