"""initial_tables Revision ID: 001 Revises: Create Date: 2026-04-06 16:33:55.958961 """ from typing import Sequence, Union import sqlalchemy as sa import sqlmodel from alembic import op revision: str = "001" down_revision: Union[str, Sequence[str], None] = None branch_labels: Union[str, Sequence[str], None] = None depends_on: Union[str, Sequence[str], None] = None def upgrade() -> None: op.create_table( "users", sa.Column("id", sa.Integer, primary_key=True), sa.Column("name", sqlmodel.sql.sqltypes.AutoString(length=100), nullable=False), sa.Column( "email", sqlmodel.sql.sqltypes.AutoString(length=255), nullable=False ), sa.Column("phone", sqlmodel.sql.sqltypes.AutoString(length=20), nullable=True), sa.Column("hashed_password", sqlmodel.sql.sqltypes.AutoString, nullable=False), sa.Column( "is_organizer", sa.Boolean, nullable=False, server_default=sa.text("false") ), ) op.create_index("ix_users_email", "users", ["email"], unique=True) op.create_table( "hackathons", sa.Column("id", sa.Integer, primary_key=True), sa.Column( "title", sqlmodel.sql.sqltypes.AutoString(length=200), nullable=False ), sa.Column("description", sqlmodel.sql.sqltypes.AutoString, nullable=False), sa.Column("start_date", sa.DateTime, nullable=False), sa.Column("end_date", sa.DateTime, nullable=False), sa.Column( "organizer_id", sa.Integer, sa.ForeignKey("users.id"), nullable=False ), ) op.create_table( "hackathon_participants", sa.Column("id", sa.Integer, primary_key=True), sa.Column("user_id", sa.Integer, sa.ForeignKey("users.id"), nullable=False), sa.Column( "hackathon_id", sa.Integer, sa.ForeignKey("hackathons.id"), nullable=False ), sa.Column( "is_confirmed", sa.Boolean, nullable=False, server_default=sa.text("false") ), ) op.create_table( "teams", sa.Column("id", sa.Integer, primary_key=True), sa.Column("name", sqlmodel.sql.sqltypes.AutoString(length=100), nullable=False), sa.Column( "hackathon_id", sa.Integer, sa.ForeignKey("hackathons.id"), nullable=False ), ) op.create_table( "team_members", sa.Column("id", sa.Integer, primary_key=True), sa.Column("user_id", sa.Integer, sa.ForeignKey("users.id"), nullable=False), sa.Column("team_id", sa.Integer, sa.ForeignKey("teams.id"), nullable=False), sa.Column( "role", sqlmodel.sql.sqltypes.AutoString(length=50), nullable=False, server_default="participant", ), ) op.create_table( "tasks", sa.Column("id", sa.Integer, primary_key=True), sa.Column( "hackathon_id", sa.Integer, sa.ForeignKey("hackathons.id"), nullable=False ), sa.Column( "title", sqlmodel.sql.sqltypes.AutoString(length=200), nullable=False ), sa.Column("description", sqlmodel.sql.sqltypes.AutoString, nullable=False), sa.Column("requirements", sqlmodel.sql.sqltypes.AutoString, nullable=False), sa.Column( "evaluation_criteria", sqlmodel.sql.sqltypes.AutoString, nullable=False ), ) op.create_table( "submissions", sa.Column("id", sa.Integer, primary_key=True), sa.Column("team_id", sa.Integer, sa.ForeignKey("teams.id"), nullable=False), sa.Column("task_id", sa.Integer, sa.ForeignKey("tasks.id"), nullable=False), sa.Column("description", sqlmodel.sql.sqltypes.AutoString, nullable=False), sa.Column("file_url", sqlmodel.sql.sqltypes.AutoString, nullable=True), sa.Column("submitted_at", sa.DateTime, nullable=False), ) def downgrade() -> None: op.drop_table("submissions") op.drop_table("tasks") op.drop_table("team_members") op.drop_table("teams") op.drop_table("hackathon_participants") op.drop_table("hackathons") op.drop_index("ix_users_email", "users") op.drop_table("users")