Skip to content

Commit b4c44d6

Browse files
authored
fix/migrations (#79)
Linked with #76
2 parents 490ddf8 + 96d07ee commit b4c44d6

File tree

2 files changed

+82
-29
lines changed

2 files changed

+82
-29
lines changed

backend/alembic/versions/82d86aae966e_initial_migration.py

Lines changed: 0 additions & 29 deletions
This file was deleted.
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
"""Initial Migration
2+
3+
Revision ID: fc55a0c85ffc
4+
Revises:
5+
Create Date: 2025-12-13 11:51:55.858980
6+
7+
"""
8+
from alembic import op
9+
import sqlalchemy as sa
10+
11+
12+
# revision identifiers, used by Alembic.
13+
revision = 'fc55a0c85ffc'
14+
down_revision = None
15+
branch_labels = None
16+
depends_on = None
17+
18+
19+
def upgrade() -> None:
20+
# ### commands auto generated by Alembic - please adjust! ###
21+
op.create_table('users',
22+
sa.Column('id', sa.Integer(), autoincrement=True, nullable=False),
23+
sa.Column('username', sa.String(length=50), nullable=False),
24+
sa.Column('email', sa.String(length=100), nullable=False),
25+
sa.Column('role', sa.String(length=20), nullable=False),
26+
sa.Column('password', sa.String(length=255), nullable=False),
27+
sa.Column('score', sa.Integer(), nullable=False),
28+
sa.Column('created_at', sa.DateTime(), nullable=False),
29+
sa.PrimaryKeyConstraint('id')
30+
)
31+
op.create_index(op.f('ix_users_email'), 'users', ['email'], unique=True)
32+
op.create_index(op.f('ix_users_username'), 'users', ['username'], unique=True)
33+
op.create_table('contests',
34+
sa.Column('id', sa.Integer(), autoincrement=True, nullable=False),
35+
sa.Column('name', sa.String(length=200), nullable=False),
36+
sa.Column('code_link', sa.String(length=500), nullable=True),
37+
sa.Column('project_name', sa.String(length=100), nullable=False),
38+
sa.Column('created_by', sa.String(length=50), nullable=False),
39+
sa.Column('description', sa.Text(), nullable=True),
40+
sa.Column('start_date', sa.Date(), nullable=True),
41+
sa.Column('end_date', sa.Date(), nullable=True),
42+
sa.Column('rules', sa.Text(), nullable=True),
43+
sa.Column('marks_setting_accepted', sa.Integer(), nullable=False),
44+
sa.Column('marks_setting_rejected', sa.Integer(), nullable=False),
45+
sa.Column('allowed_submission_type', sa.String(length=20), nullable=False),
46+
sa.Column('jury_members', sa.Text(), nullable=True),
47+
sa.Column('created_at', sa.DateTime(), nullable=False),
48+
sa.ForeignKeyConstraint(['created_by'], ['users.username'], ),
49+
sa.PrimaryKeyConstraint('id')
50+
)
51+
op.create_table('submissions',
52+
sa.Column('id', sa.Integer(), autoincrement=True, nullable=False),
53+
sa.Column('user_id', sa.Integer(), nullable=False),
54+
sa.Column('contest_id', sa.Integer(), nullable=False),
55+
sa.Column('article_title', sa.String(length=500), nullable=False),
56+
sa.Column('article_link', sa.String(length=1000), nullable=False),
57+
sa.Column('article_author', sa.String(length=200), nullable=True),
58+
sa.Column('article_created_at', sa.String(length=50), nullable=True),
59+
sa.Column('article_word_count', sa.Integer(), nullable=True),
60+
sa.Column('article_page_id', sa.String(length=50), nullable=True),
61+
sa.Column('article_size_at_start', sa.Integer(), nullable=True),
62+
sa.Column('article_expansion_bytes', sa.Integer(), nullable=True),
63+
sa.Column('status', sa.String(length=20), nullable=False),
64+
sa.Column('score', sa.Integer(), nullable=False),
65+
sa.Column('submitted_at', sa.DateTime(), nullable=False),
66+
sa.ForeignKeyConstraint(['contest_id'], ['contests.id'], ),
67+
sa.ForeignKeyConstraint(['user_id'], ['users.id'], ),
68+
sa.PrimaryKeyConstraint('id'),
69+
sa.UniqueConstraint('user_id', 'contest_id', name='unique_user_contest_submission')
70+
)
71+
# ### end Alembic commands ###
72+
73+
74+
def downgrade() -> None:
75+
# ### commands auto generated by Alembic - please adjust! ###
76+
op.drop_table('submissions')
77+
op.drop_table('contests')
78+
op.drop_index(op.f('ix_users_username'), table_name='users')
79+
op.drop_index(op.f('ix_users_email'), table_name='users')
80+
op.drop_table('users')
81+
# ### end Alembic commands ###
82+

0 commit comments

Comments
 (0)