Make cascade rules alembic upgrade optional to un-break sqlite

This commit is contained in:
Tulir Asokan
2018-06-03 14:30:19 +03:00
parent c0da861562
commit 708110eb08
2 changed files with 26 additions and 11 deletions
@@ -7,7 +7,6 @@ Create Date: 2018-05-31 11:11:59.482112
""" """
from alembic import op from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from sqlalchemy.dialects import postgresql
# revision identifiers, used by Alembic. # revision identifiers, used by Alembic.
revision = '2228d49c383f' revision = '2228d49c383f'
@@ -17,14 +16,26 @@ depends_on = None
def upgrade(): def upgrade():
op.drop_constraint('user_portal_user_fkey', 'user_portal', type_='foreignkey') try:
op.drop_constraint('user_portal_portal_fkey', 'user_portal', type_='foreignkey') with op.batch_alter_table("user_portal") as batch_op:
op.create_foreign_key('user_portal_user_fkey', 'user_portal', 'user', ['user'], ['tgid'], onupdate='CASCADE', ondelete='CASCADE') batch_op.drop_constraint("user_portal_user_fkey", type_="foreignkey")
op.create_foreign_key('user_portal_portal_fkey', 'user_portal', 'portal', ['portal', 'portal_receiver'], ['tgid', 'tg_receiver'], onupdate='CASCADE', ondelete='CASCADE') batch_op.drop_constraint("user_portal_portal_fkey", type_="foreignkey")
batch_op.create_foreign_key("user_portal_user_fkey", "user", ["user"], ["tgid"],
onupdate="CASCADE", ondelete="CASCADE")
batch_op.create_foreign_key("user_portal_portal_fkey", "portal",
["portal", "portal_receiver"], ["tgid", "tg_receiver"],
onupdate="CASCADE", ondelete="CASCADE")
except ValueError:
return
def downgrade(): def downgrade():
op.drop_constraint('user_portal_portal_fkey', 'user_portal', type_='foreignkey') try:
op.drop_constraint('user_portal_user_fkey', 'user_portal', type_='foreignkey') with op.batch_alter_table("user_portal") as batch_op:
op.create_foreign_key('user_portal_portal_fkey', 'user_portal', 'portal', ['portal', 'portal_receiver'], ['tgid', 'tg_receiver']) batch_op.drop_constraint("user_portal_user_fkey", type_="foreignkey")
op.create_foreign_key('user_portal_user_fkey', 'user_portal', 'user', ['user'], ['tgid']) batch_op.drop_constraint("user_portal_portal_fkey", type_="foreignkey")
batch_op.create_foreign_key("user_portal_user_fkey", "portal",
["portal", "portal_receiver"], ["tgid", "tg_receiver"])
batch_op.create_foreign_key("user_portal_portal_fkey", "user", ["user"], ["tgid"])
except ValueError:
return
@@ -50,9 +50,13 @@ def upgrade():
sa.Column('portal', sa.Integer), sa.Column('portal', sa.Integer),
sa.Column('portal_receiver', sa.Integer), sa.Column('portal_receiver', sa.Integer),
sa.PrimaryKeyConstraint('user', 'portal', 'portal_receiver'), sa.PrimaryKeyConstraint('user', 'portal', 'portal_receiver'),
sa.ForeignKeyConstraint(("user",), ("user.tgid",)), sa.ForeignKeyConstraint(("user",), ("user.tgid",),
name="user_portal_user_fkey",
onupdate="CASCADE", ondelete="CASCADE"),
sa.ForeignKeyConstraint(("portal", "portal_receiver"), sa.ForeignKeyConstraint(("portal", "portal_receiver"),
("portal.tgid", "portal.tg_receiver"))) ("portal.tgid", "portal.tg_receiver"),
name="user_portal_portal_fkey",
onupdate="CASCADE", ondelete="CASCADE"))
op.create_table('message', op.create_table('message',
sa.Column('mxid', sa.String), sa.Column('mxid', sa.String),
sa.Column('mx_room', sa.String), sa.Column('mx_room', sa.String),