"""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 ###