2024-08-11 17:18:32 +00:00
|
|
|
from sqlalchemy import MetaData
|
2024-08-10 14:52:46 +00:00
|
|
|
from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column, declared_attr
|
|
|
|
|
2024-08-11 17:18:32 +00:00
|
|
|
from utils import camel_case_to_snake_case
|
|
|
|
from core.config import settings
|
2024-08-10 14:52:46 +00:00
|
|
|
|
|
|
|
|
2024-08-11 17:18:32 +00:00
|
|
|
class Base(DeclarativeBase):
|
|
|
|
__abstract__ = True
|
|
|
|
metadata = MetaData(
|
|
|
|
naming_convention=settings.db.naming_convention,
|
|
|
|
)
|
2024-08-10 14:52:46 +00:00
|
|
|
|
|
|
|
@declared_attr.directive
|
|
|
|
def __tablename__(cls) -> str:
|
2024-08-11 17:18:32 +00:00
|
|
|
return f"{camel_case_to_snake_case(cls.__name__)}s"
|
2024-08-10 14:52:46 +00:00
|
|
|
|
|
|
|
id: Mapped[int] = mapped_column(primary_key=True)
|