Skip to content

Commit 710b02b

Browse files
committed
update init migration to account for existing databases
1 parent 4505ee4 commit 710b02b

File tree

1 file changed

+70
-44
lines changed

1 file changed

+70
-44
lines changed

alembic/versions/592b912adf54_init.py

+70-44
Original file line numberDiff line numberDiff line change
@@ -5,67 +5,93 @@
55
Create Date: 2024-12-02 13:22:59.911782
66
77
"""
8+
89
from typing import Sequence, Union
910

1011
import sqlalchemy as sa
1112

1213
from alembic import op
1314

1415
# revision identifiers, used by Alembic.
15-
revision: str = '592b912adf54'
16+
revision: str = "592b912adf54"
1617
down_revision: Union[str, None] = None
1718
branch_labels: Union[str, Sequence[str], None] = None
1819
depends_on: Union[str, Sequence[str], None] = None
1920

2021

2122
def upgrade() -> None:
23+
bind = op.get_bind()
24+
inspector = sa.Inspector.from_engine(bind)
25+
26+
has_apikeys = "apikeys" in inspector.get_table_names()
27+
has_users = "users" in inspector.get_table_names()
28+
has_cdms = "cdms" in inspector.get_table_names()
29+
has_keys = "keys_" in inspector.get_table_names()
30+
2231
# ### commands auto generated by Alembic - please adjust! ###
23-
op.create_table('apikeys',
24-
sa.Column('id', sa.Integer(), autoincrement=True, nullable=False),
25-
sa.Column('created_at', sa.DateTime(), nullable=False),
26-
sa.Column('api_key', sa.String(length=255), nullable=False),
27-
sa.Column('user_id', sa.String(length=255), nullable=False),
28-
sa.PrimaryKeyConstraint('id'),
29-
sa.UniqueConstraint('id')
30-
)
31-
op.create_table('users',
32-
sa.Column('id', sa.String(length=255), nullable=False),
33-
sa.Column('username', sa.String(length=255), nullable=False),
34-
sa.Column('discriminator', sa.String(length=255), nullable=False),
35-
sa.Column('avatar', sa.String(length=255), nullable=True),
36-
sa.Column('public_flags', sa.Integer(), nullable=False),
37-
sa.Column('api_key', sa.String(length=255), nullable=False),
38-
sa.Column('flags', sa.Integer(), nullable=False),
39-
sa.PrimaryKeyConstraint('id'),
40-
sa.UniqueConstraint('id')
41-
)
42-
op.create_table('cdms',
43-
sa.Column('id', sa.Integer(), autoincrement=True, nullable=False),
44-
sa.Column('session_id_type', sa.String(length=255), nullable=False),
45-
sa.Column('security_level', sa.Integer(), nullable=False),
46-
sa.Column('client_id_blob_filename', sa.Text(), nullable=False),
47-
sa.Column('device_private_key', sa.Text(), nullable=False),
48-
sa.Column('code', sa.Text(), nullable=False),
49-
sa.Column('uploaded_by', sa.String(length=255), nullable=True),
50-
sa.ForeignKeyConstraint(['uploaded_by'], ['users.id'], ),
51-
sa.PrimaryKeyConstraint('id')
52-
)
53-
op.create_table('keys_',
54-
sa.Column('kid', sa.String(length=32), nullable=False),
55-
sa.Column('added_at', sa.Integer(), nullable=False),
56-
sa.Column('added_by', sa.String(length=255), nullable=True),
57-
sa.Column('license_url', sa.Text(), nullable=False),
58-
sa.Column('key_', sa.String(length=255), nullable=False),
59-
sa.ForeignKeyConstraint(['added_by'], ['users.id'], ),
60-
sa.PrimaryKeyConstraint('kid')
61-
)
32+
if not has_apikeys:
33+
op.create_table(
34+
"apikeys",
35+
sa.Column("id", sa.Integer(), autoincrement=True, nullable=False),
36+
sa.Column("created_at", sa.DateTime(), nullable=False),
37+
sa.Column("api_key", sa.String(length=255), nullable=False),
38+
sa.Column("user_id", sa.String(length=255), nullable=False),
39+
sa.PrimaryKeyConstraint("id"),
40+
sa.UniqueConstraint("id"),
41+
)
42+
43+
if not has_users:
44+
op.create_table(
45+
"users",
46+
sa.Column("id", sa.String(length=255), nullable=False),
47+
sa.Column("username", sa.String(length=255), nullable=False),
48+
sa.Column("discriminator", sa.String(length=255), nullable=False),
49+
sa.Column("avatar", sa.String(length=255), nullable=True),
50+
sa.Column("public_flags", sa.Integer(), nullable=False),
51+
sa.Column("api_key", sa.String(length=255), nullable=False),
52+
sa.Column("flags", sa.Integer(), nullable=False),
53+
sa.PrimaryKeyConstraint("id"),
54+
sa.UniqueConstraint("id"),
55+
)
56+
57+
if not has_cdms:
58+
op.create_table(
59+
"cdms",
60+
sa.Column("id", sa.Integer(), autoincrement=True, nullable=False),
61+
sa.Column("session_id_type", sa.String(length=255), nullable=False),
62+
sa.Column("security_level", sa.Integer(), nullable=False),
63+
sa.Column("client_id_blob_filename", sa.Text(), nullable=False),
64+
sa.Column("device_private_key", sa.Text(), nullable=False),
65+
sa.Column("code", sa.Text(), nullable=False),
66+
sa.Column("uploaded_by", sa.String(length=255), nullable=True),
67+
sa.ForeignKeyConstraint(
68+
["uploaded_by"],
69+
["users.id"],
70+
),
71+
sa.PrimaryKeyConstraint("id"),
72+
)
73+
74+
if not has_keys:
75+
op.create_table(
76+
"keys_",
77+
sa.Column("kid", sa.String(length=32), nullable=False),
78+
sa.Column("added_at", sa.Integer(), nullable=False),
79+
sa.Column("added_by", sa.String(length=255), nullable=True),
80+
sa.Column("license_url", sa.Text(), nullable=False),
81+
sa.Column("key_", sa.String(length=255), nullable=False),
82+
sa.ForeignKeyConstraint(
83+
["added_by"],
84+
["users.id"],
85+
),
86+
sa.PrimaryKeyConstraint("kid"),
87+
)
6288
# ### end Alembic commands ###
6389

6490

6591
def downgrade() -> None:
6692
# ### commands auto generated by Alembic - please adjust! ###
67-
op.drop_table('keys_')
68-
op.drop_table('cdms')
69-
op.drop_table('users')
70-
op.drop_table('apikeys')
93+
op.drop_table("keys_")
94+
op.drop_table("cdms")
95+
op.drop_table("users")
96+
op.drop_table("apikeys")
7197
# ### end Alembic commands ###

0 commit comments

Comments
 (0)