Spaces:
Running
Running
| """Create users and tasks tables | |
| Revision ID: 001_initial | |
| Revises: | |
| Create Date: 2026-01-08 | |
| """ | |
| from alembic import op | |
| import sqlalchemy as sa | |
| from sqlalchemy.dialects import postgresql | |
| # revision identifiers, used by Alembic. | |
| revision = '001_initial' | |
| down_revision = None | |
| branch_labels = None | |
| depends_on = None | |
| def upgrade() -> None: | |
| # Create users table | |
| op.create_table( | |
| 'users', | |
| sa.Column('id', sa.Integer(), nullable=False), | |
| sa.Column('email', sa.String(length=255), nullable=False), | |
| sa.Column('name', sa.String(length=100), nullable=False), | |
| sa.Column('created_at', sa.DateTime(), nullable=False), | |
| sa.Column('updated_at', sa.DateTime(), nullable=False), | |
| sa.PrimaryKeyConstraint('id') | |
| ) | |
| op.create_index('ix_users_email', 'users', ['email'], unique=True) | |
| # Create tasks table | |
| op.create_table( | |
| 'tasks', | |
| sa.Column('id', sa.Integer(), nullable=False), | |
| sa.Column('user_id', sa.Integer(), nullable=False), | |
| sa.Column('title', sa.String(length=200), nullable=False), | |
| sa.Column('description', sa.String(length=1000), nullable=True), | |
| sa.Column('completed', sa.Boolean(), nullable=False, server_default='false'), | |
| sa.Column('created_at', sa.DateTime(), nullable=False), | |
| sa.Column('updated_at', sa.DateTime(), nullable=False), | |
| sa.ForeignKeyConstraint(['user_id'], ['users.id'], ondelete='CASCADE'), | |
| sa.PrimaryKeyConstraint('id') | |
| ) | |
| # Create indexes for tasks table | |
| op.create_index('ix_tasks_user_id', 'tasks', ['user_id']) | |
| op.create_index('ix_tasks_completed', 'tasks', ['completed']) | |
| op.create_index('ix_tasks_user_id_completed', 'tasks', ['user_id', 'completed']) | |
| op.create_index('ix_tasks_created_at', 'tasks', ['created_at']) | |
| def downgrade() -> None: | |
| # Drop indexes | |
| op.drop_index('ix_tasks_created_at', table_name='tasks') | |
| op.drop_index('ix_tasks_user_id_completed', table_name='tasks') | |
| op.drop_index('ix_tasks_completed', table_name='tasks') | |
| op.drop_index('ix_tasks_user_id', table_name='tasks') | |
| # Drop tables | |
| op.drop_table('tasks') | |
| op.drop_index('ix_users_email', table_name='users') | |
| op.drop_table('users') | |