eventcally/migrations/versions/5fde26e1904d_.py
2023-05-01 19:53:01 +02:00

57 lines
1.4 KiB
Python

"""empty message
Revision ID: 5fde26e1904d
Revises: 58d8aae621e6
Create Date: 2023-04-28 13:04:22.142011
"""
import sqlalchemy as sa
from alembic import op
from sqlalchemy.sql.elements import conv
from sqlalchemy.sql.naming import ConventionDict, _get_convention
from project import dbtypes
# revision identifiers, used by Alembic.
revision = "5fde26e1904d"
down_revision = "58d8aae621e6"
branch_labels = None
depends_on = None
def upgrade():
conn = op.get_bind()
ctx = op.get_context()
existing_metadata = sa.schema.MetaData()
existing_metadata.reflect(bind=conn)
target_metadata = ctx.opts["target_metadata"]
for table_name, table in existing_metadata.tables.items():
if table_name not in target_metadata.tables:
continue
for c in table.constraints:
existing_name = c.name
if not existing_name:
continue
convention = _get_convention(target_metadata.naming_convention, type(c))
if not convention:
continue
target_c_name = conv(
convention % ConventionDict(c, table, target_metadata.naming_convention)
)
if not target_c_name:
continue
if existing_name != target_c_name:
op.execute(
f"ALTER TABLE public.{table_name} RENAME CONSTRAINT {existing_name} to {target_c_name};"
)
def downgrade():
pass