blocking-ip/core/models/base.py

19 lines
513 B
Python
Raw Normal View History

from sqlalchemy import MetaData
2024-08-10 14:52:46 +00:00
from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column, declared_attr
from utils import camel_case_to_snake_case
from core.config import settings
2024-08-10 14:52:46 +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:
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)