diff --git a/backend-app/alembic/versions/2024_07_31_2249-12fb0121c6a3_create_tables_user_login.py b/backend-app/alembic/versions/2024_07_31_2303-43539348d64d_create_tables_user_login_with_convention.py similarity index 72% rename from backend-app/alembic/versions/2024_07_31_2249-12fb0121c6a3_create_tables_user_login.py rename to backend-app/alembic/versions/2024_07_31_2303-43539348d64d_create_tables_user_login_with_convention.py index f04cc11..fc9ed40 100644 --- a/backend-app/alembic/versions/2024_07_31_2249-12fb0121c6a3_create_tables_user_login.py +++ b/backend-app/alembic/versions/2024_07_31_2303-43539348d64d_create_tables_user_login_with_convention.py @@ -1,8 +1,8 @@ -"""create tables user, login +"""create tables user, login with convention -Revision ID: 12fb0121c6a3 +Revision ID: 43539348d64d Revises: -Create Date: 2024-07-31 22:49:23.147480 +Create Date: 2024-07-31 23:03:58.400569 """ @@ -13,7 +13,7 @@ import sqlalchemy as sa # revision identifiers, used by Alembic. -revision: str = "12fb0121c6a3" +revision: str = "43539348d64d" down_revision: Union[str, None] = None branch_labels: Union[str, Sequence[str], None] = None depends_on: Union[str, Sequence[str], None] = None @@ -26,8 +26,8 @@ def upgrade() -> None: sa.Column("id", sa.Integer(), nullable=False), sa.Column("username", sa.String(length=255), nullable=False), sa.Column("password", sa.String(length=255), nullable=False), - sa.PrimaryKeyConstraint("id"), - sa.UniqueConstraint("username"), + sa.PrimaryKeyConstraint("id", name=op.f("pk_logins")), + sa.UniqueConstraint("username", name=op.f("uq_logins_username")), ) op.create_table( "users", @@ -38,11 +38,10 @@ def upgrade() -> None: sa.Column("email", sa.String(length=255), nullable=True), sa.Column("login_id", sa.Integer(), nullable=False), sa.ForeignKeyConstraint( - ["login_id"], - ["logins.id"], + ["login_id"], ["logins.id"], name=op.f("fk_users_login_id_logins") ), - sa.PrimaryKeyConstraint("id"), - sa.UniqueConstraint("email"), + sa.PrimaryKeyConstraint("id", name=op.f("pk_users")), + sa.UniqueConstraint("email", name=op.f("uq_users_email")), ) # ### end Alembic commands ### diff --git a/backend-app/core/models/base.py b/backend-app/core/models/base.py index d4c131f..8646482 100644 --- a/backend-app/core/models/base.py +++ b/backend-app/core/models/base.py @@ -1,5 +1,7 @@ from sqlalchemy.orm import DeclarativeBase - +from sqlalchemy import MetaData +from core.settings import settings class Base(DeclarativeBase): - pass + __abstract__ = True + metadata = MetaData(naming_convention=settings.db.convention) diff --git a/backend-app/core/settings.py b/backend-app/core/settings.py index 6c7550c..c3607e8 100644 --- a/backend-app/core/settings.py +++ b/backend-app/core/settings.py @@ -11,6 +11,13 @@ class DatabaseConfig(BaseModel): echo_pool:bool=False pool_size: int = 50 max_overflow: int =10 + convention:dict = { + "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", + } class Settings(BaseSettings): model_config = SettingsConfigDict(