Skip to content

Commit 32bd8fa

Browse files
committed
Fix database migrations
1 parent f8a4c56 commit 32bd8fa

File tree

4 files changed

+148
-41
lines changed

4 files changed

+148
-41
lines changed

alembic/versions/2e683e5273fa_initial.py renamed to alembic/versions/3a872ea246b9_add_missing_constraints.py

+12-6
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
1-
"""Initial
1+
"""Add missing constraints
22
3-
Revision ID: 2e683e5273fa
4-
Revises:
5-
Create Date: 2015-10-24 04:51:47.989296
3+
Revision ID: 3a872ea246b9
4+
Revises: 4690204e5a62
5+
Create Date: 2015-10-28 19:00:20.176000
66
77
"""
88

99
# revision identifiers, used by Alembic.
10-
revision = '2e683e5273fa'
11-
down_revision = None
10+
revision = '3a872ea246b9'
11+
down_revision = '4690204e5a62'
1212
branch_labels = None
1313
depends_on = None
1414

@@ -22,11 +22,17 @@ def upgrade():
2222
existing_type=mysql.TINYINT(display_width=1),
2323
type_=sa.Boolean(),
2424
existing_nullable=True)
25+
op.add_column('sourcequeue', sa.Column('target', sa.Integer(), nullable=True))
26+
op.create_unique_constraint('_user_target_uc', 'sourcequeue', ['user', 'target'])
27+
op.create_foreign_key(None, 'sourcequeue', 'player', ['target'], ['id'])
2528
### end Alembic commands ###
2629

2730

2831
def downgrade():
2932
### commands auto generated by Alembic - please adjust! ###
33+
op.drop_constraint(None, 'sourcequeue', type_='foreignkey')
34+
op.drop_constraint('_user_target_uc', 'sourcequeue', type_='unique')
35+
op.drop_column('sourcequeue', 'target')
3036
op.alter_column('event', 'visible',
3137
existing_type=sa.Boolean(),
3238
type_=mysql.TINYINT(display_width=1),
+135
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,135 @@
1+
"""Initial
2+
3+
Revision ID: 4690204e5a62
4+
Revises:
5+
Create Date: 2015-10-28 18:43:54.656000
6+
7+
"""
8+
9+
# revision identifiers, used by Alembic.
10+
revision = '4690204e5a62'
11+
down_revision = None
12+
branch_labels = None
13+
depends_on = None
14+
15+
from alembic import op
16+
import sqlalchemy as sa
17+
18+
19+
def upgrade():
20+
### commands auto generated by Alembic - please adjust! ###
21+
op.create_table('event',
22+
sa.Column('id', sa.Integer(), nullable=False),
23+
sa.Column('name', sa.String(length=32), nullable=True),
24+
sa.Column('visible', sa.Boolean(), nullable=True),
25+
sa.PrimaryKeyConstraint('id')
26+
)
27+
op.create_table('source',
28+
sa.Column('id', sa.Integer(), nullable=False),
29+
sa.Column('hash', sa.String(length=64), nullable=True),
30+
sa.Column('file_name', sa.String(length=256), nullable=True),
31+
sa.Column('file_ext', sa.String(length=4), nullable=True),
32+
sa.Column('mime_type', sa.String(length=32), nullable=True),
33+
sa.Column('size_bytes', sa.Integer(), nullable=True),
34+
sa.Column('media_type', sa.Integer(), nullable=True),
35+
sa.Column('youtube_hash', sa.String(length=32), nullable=True),
36+
sa.Column('other_url', sa.String(length=512), nullable=True),
37+
sa.Column('length_seconds', sa.Integer(), nullable=True),
38+
sa.Column('created_at', sa.DateTime(timezone=True), nullable=True),
39+
sa.Column('title', sa.String(length=100), nullable=True),
40+
sa.Column('description', sa.Text(), nullable=True),
41+
sa.Column('status', sa.Integer(), nullable=True),
42+
sa.Column('message', sa.String(length=64), nullable=True),
43+
sa.Column('video_codec', sa.String(length=16), nullable=True),
44+
sa.Column('video_bitrate', sa.Integer(), nullable=True),
45+
sa.Column('video_w', sa.Integer(), nullable=True),
46+
sa.Column('video_h', sa.Integer(), nullable=True),
47+
sa.Column('audio_codec', sa.String(length=16), nullable=True),
48+
sa.Column('audio_bitrate', sa.Integer(), nullable=True),
49+
sa.PrimaryKeyConstraint('id')
50+
)
51+
op.create_table('user',
52+
sa.Column('id', sa.Integer(), nullable=False),
53+
sa.Column('username', sa.String(length=32), nullable=True),
54+
sa.Column('password', sa.String(length=255), nullable=True),
55+
sa.Column('nickname', sa.String(length=32), nullable=True),
56+
sa.Column('email', sa.String(length=128), nullable=True),
57+
sa.Column('level', sa.Integer(), nullable=True),
58+
sa.PrimaryKeyConstraint('id'),
59+
sa.UniqueConstraint('username')
60+
)
61+
op.create_table('setting',
62+
sa.Column('id', sa.Integer(), nullable=False),
63+
sa.Column('user', sa.Integer(), nullable=True),
64+
sa.Column('key', sa.String(length=32), nullable=True),
65+
sa.Column('value', sa.String(length=32), nullable=True),
66+
sa.Column('type', sa.Integer(), nullable=True),
67+
sa.Column('max', sa.Integer(), nullable=True),
68+
sa.Column('min', sa.Integer(), nullable=True),
69+
sa.ForeignKeyConstraint(['user'], ['user.id'], ),
70+
sa.PrimaryKeyConstraint('id')
71+
)
72+
op.create_table('session',
73+
sa.Column('key', sa.String(length=32), nullable=False),
74+
sa.Column('user', sa.Integer(), nullable=True),
75+
sa.Column('start', sa.DateTime(timezone=True), nullable=True),
76+
sa.ForeignKeyConstraint(['user'], ['user.id'], ),
77+
sa.PrimaryKeyConstraint('key')
78+
)
79+
op.create_table('sourcequeue',
80+
sa.Column('id', sa.Integer(), nullable=False),
81+
sa.Column('user', sa.Integer(), nullable=True),
82+
sa.Column('created_at', sa.DateTime(timezone=True), nullable=True),
83+
sa.ForeignKeyConstraint(['user'], ['user.id'], ),
84+
sa.PrimaryKeyConstraint('id'),
85+
)
86+
op.create_table('media',
87+
sa.Column('id', sa.Integer(), nullable=False),
88+
sa.Column('source', sa.Integer(), nullable=True),
89+
sa.Column('user', sa.Integer(), nullable=True),
90+
sa.Column('queue', sa.Integer(), nullable=True),
91+
sa.ForeignKeyConstraint(['queue'], ['sourcequeue.id'], ),
92+
sa.ForeignKeyConstraint(['source'], ['source.id'], ),
93+
sa.ForeignKeyConstraint(['user'], ['user.id'], ),
94+
sa.PrimaryKeyConstraint('id')
95+
)
96+
op.create_table('player',
97+
sa.Column('id', sa.Integer(), nullable=False),
98+
sa.Column('token', sa.String(length=16), nullable=True),
99+
sa.Column('event', sa.Integer(), nullable=True),
100+
sa.Column('name', sa.String(length=32), nullable=True),
101+
sa.Column('last', sa.Integer(), nullable=True),
102+
sa.Column('status', sa.Integer(), nullable=True),
103+
sa.ForeignKeyConstraint(['event'], ['event.id'], ),
104+
sa.ForeignKeyConstraint(['last'], ['media.id'], ),
105+
sa.PrimaryKeyConstraint('id')
106+
)
107+
op.create_index(op.f('ix_player_token'), 'player', ['token'], unique=True)
108+
op.create_table('skip',
109+
sa.Column('id', sa.Integer(), nullable=False),
110+
sa.Column('user', sa.Integer(), nullable=True),
111+
sa.Column('media', sa.Integer(), nullable=True),
112+
sa.Column('player', sa.Integer(), nullable=True),
113+
sa.ForeignKeyConstraint(['media'], ['media.id'], ),
114+
sa.ForeignKeyConstraint(['player'], ['player.id'], ),
115+
sa.ForeignKeyConstraint(['user'], ['user.id'], ),
116+
sa.PrimaryKeyConstraint('id'),
117+
sa.UniqueConstraint('user', 'media', 'player', name='_user_media_player_uc')
118+
)
119+
120+
### end Alembic commands ###
121+
122+
123+
def downgrade():
124+
### commands auto generated by Alembic - please adjust! ###
125+
op.drop_table('user')
126+
op.drop_table('sourcequeue')
127+
op.drop_table('source')
128+
op.drop_table('skip')
129+
op.drop_table('setting')
130+
op.drop_table('session')
131+
op.drop_index(op.f('ix_player_token'), table_name='player')
132+
op.drop_table('player')
133+
op.drop_table('media')
134+
op.drop_table('event')
135+
### end Alembic commands ###

alembic/versions/8a89f83250a_.py

-34
This file was deleted.

utuputki/common/db.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,7 @@ class Session(Base):
222222
def db_init(engine_str):
223223
_engine = create_engine(engine_str+'?charset=utf8', pool_recycle=3600)
224224
_session.configure(bind=_engine)
225-
Base.metadata.create_all(_engine)
225+
#Base.metadata.create_all(_engine)
226226

227227

228228
def db_session():

0 commit comments

Comments
 (0)