web-dev/labs/lab-6/app/migrations/versions/9f3eafbe74db_.py
2026-03-13 13:14:58 +03:00

89 lines
3.7 KiB
Python

"""empty message
Revision ID: 9f3eafbe74db
Revises:
Create Date: 2026-02-25 16:02:49.708125
"""
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision = '9f3eafbe74db'
down_revision = None
branch_labels = None
depends_on = None
def upgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.create_table('categories',
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('name', sa.String(length=100), nullable=False),
sa.Column('parent_id', sa.Integer(), nullable=True),
sa.ForeignKeyConstraint(['parent_id'], ['categories.id'], name=op.f('fk_categories_parent_id_categories')),
sa.PrimaryKeyConstraint('id', name=op.f('pk_categories'))
)
op.create_table('images',
sa.Column('id', sa.String(length=100), nullable=False),
sa.Column('file_name', sa.String(length=100), nullable=False),
sa.Column('mime_type', sa.String(length=100), nullable=False),
sa.Column('md5_hash', sa.String(length=100), nullable=False),
sa.Column('object_id', sa.Integer(), nullable=True),
sa.Column('object_type', sa.String(length=100), nullable=True),
sa.Column('created_at', sa.DateTime(), nullable=False),
sa.PrimaryKeyConstraint('id', name=op.f('pk_images')),
sa.UniqueConstraint('md5_hash', name=op.f('uq_images_md5_hash'))
)
op.create_table('users',
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('first_name', sa.String(length=100), nullable=False),
sa.Column('last_name', sa.String(length=100), nullable=False),
sa.Column('middle_name', sa.String(length=100), nullable=True),
sa.Column('login', sa.String(length=100), nullable=False),
sa.Column('password_hash', sa.String(length=200), nullable=False),
sa.Column('created_at', sa.DateTime(), nullable=False),
sa.PrimaryKeyConstraint('id', name=op.f('pk_users')),
sa.UniqueConstraint('login', name=op.f('uq_users_login'))
)
op.create_table('courses',
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('name', sa.String(length=100), nullable=False),
sa.Column('short_desc', sa.Text(), nullable=False),
sa.Column('full_desc', sa.Text(), nullable=False),
sa.Column('rating_sum', sa.Integer(), nullable=False),
sa.Column('rating_num', sa.Integer(), nullable=False),
sa.Column('category_id', sa.Integer(), nullable=False),
sa.Column('author_id', sa.Integer(), nullable=False),
sa.Column('background_image_id', sa.String(length=100), nullable=False),
sa.Column('created_at', sa.DateTime(), nullable=False),
sa.ForeignKeyConstraint(['author_id'], ['users.id'], name=op.f('fk_courses_author_id_users')),
sa.ForeignKeyConstraint(['background_image_id'], ['images.id'], name=op.f('fk_courses_background_image_id_images')),
sa.ForeignKeyConstraint(['category_id'], ['categories.id'], name=op.f('fk_courses_category_id_categories')),
sa.PrimaryKeyConstraint('id', name=op.f('pk_courses'))
)
# ### end Alembic commands ###
data_upgrades() # Заполнение таблицы categories начальными данными
# Начальные данные
def data_upgrades():
"""Заполнение категорий."""
table = sa.sql.table('categories', sa.sql.column('name', sa.String))
op.bulk_insert(table,
[
{'name': 'Программирование'},
{'name': 'Математика'},
{'name': 'Языкознание'},
]
)
def downgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.drop_table('courses')
op.drop_table('users')
op.drop_table('images')
op.drop_table('categories')
# ### end Alembic commands ###