"""Add playbooks and dockerfiles tables Revision ID: 002_add_playbooks Revises: 001_initial Create Date: 2024-01-02 00:00:00.000000 """ from alembic import op import sqlalchemy as sa from sqlalchemy.dialects import postgresql # revision identifiers, used by Alembic. revision = '002_add_playbooks' down_revision = '001_initial' branch_labels = None depends_on = None def upgrade() -> None: # Создание таблицы playbooks op.create_table( 'playbooks', sa.Column('id', sa.Integer(), nullable=False), sa.Column('name', sa.String(), nullable=False), sa.Column('description', sa.Text()), sa.Column('content', sa.Text(), nullable=False), sa.Column('roles', postgresql.JSON(astext_type=sa.Text()), nullable=False), sa.Column('variables', postgresql.JSON(astext_type=sa.Text())), sa.Column('inventory', sa.Text()), sa.Column('status', sa.String(), server_default='active'), sa.Column('created_at', sa.DateTime(), nullable=False, server_default=sa.text('now()')), sa.Column('updated_at', sa.DateTime(), nullable=False, server_default=sa.text('now()')), sa.Column('created_by', sa.String()), sa.Column('updated_by', sa.String()), sa.Column('extra_data', postgresql.JSON(astext_type=sa.Text())), sa.PrimaryKeyConstraint('id') ) op.create_index(op.f('ix_playbooks_id'), 'playbooks', ['id'], unique=False) op.create_index(op.f('ix_playbooks_name'), 'playbooks', ['name'], unique=True) # Создание таблицы playbook_test_runs op.create_table( 'playbook_test_runs', sa.Column('id', sa.Integer(), nullable=False), sa.Column('playbook_id', sa.Integer(), nullable=False), sa.Column('preset_name', sa.String()), sa.Column('status', sa.String(), nullable=False), sa.Column('started_at', sa.DateTime(), nullable=False, server_default=sa.text('now()')), sa.Column('finished_at', sa.DateTime()), sa.Column('duration', sa.Integer()), sa.Column('output', sa.Text()), sa.Column('error', sa.Text()), sa.Column('returncode', sa.Integer()), sa.Column('user', sa.String()), sa.Column('extra_data', postgresql.JSON(astext_type=sa.Text())), sa.ForeignKeyConstraint(['playbook_id'], ['playbooks.id'], ), sa.PrimaryKeyConstraint('id') ) op.create_index(op.f('ix_playbook_test_runs_id'), 'playbook_test_runs', ['id'], unique=False) op.create_index(op.f('ix_playbook_test_runs_playbook_id'), 'playbook_test_runs', ['playbook_id'], unique=False) op.create_index(op.f('ix_playbook_test_runs_preset_name'), 'playbook_test_runs', ['preset_name'], unique=False) # Создание таблицы playbook_deployments op.create_table( 'playbook_deployments', sa.Column('id', sa.Integer(), nullable=False), sa.Column('playbook_id', sa.Integer(), nullable=False), sa.Column('inventory', sa.Text()), sa.Column('hosts', postgresql.JSON(astext_type=sa.Text())), sa.Column('status', sa.String(), nullable=False), sa.Column('started_at', sa.DateTime(), nullable=False, server_default=sa.text('now()')), sa.Column('finished_at', sa.DateTime()), sa.Column('duration', sa.Integer()), sa.Column('output', sa.Text()), sa.Column('error', sa.Text()), sa.Column('returncode', sa.Integer()), sa.Column('user', sa.String()), sa.Column('extra_data', postgresql.JSON(astext_type=sa.Text())), sa.ForeignKeyConstraint(['playbook_id'], ['playbooks.id'], ), sa.PrimaryKeyConstraint('id') ) op.create_index(op.f('ix_playbook_deployments_id'), 'playbook_deployments', ['id'], unique=False) op.create_index(op.f('ix_playbook_deployments_playbook_id'), 'playbook_deployments', ['playbook_id'], unique=False) # Создание таблицы dockerfiles op.create_table( 'dockerfiles', sa.Column('id', sa.Integer(), nullable=False), sa.Column('name', sa.String(), nullable=False), sa.Column('description', sa.Text()), sa.Column('content', sa.Text(), nullable=False), sa.Column('base_image', sa.String()), sa.Column('tags', postgresql.JSON(astext_type=sa.Text())), sa.Column('status', sa.String(), server_default='active'), sa.Column('created_at', sa.DateTime(), nullable=False, server_default=sa.text('now()')), sa.Column('updated_at', sa.DateTime(), nullable=False, server_default=sa.text('now()')), sa.Column('created_by', sa.String()), sa.Column('updated_by', sa.String()), sa.Column('extra_data', postgresql.JSON(astext_type=sa.Text())), sa.PrimaryKeyConstraint('id') ) op.create_index(op.f('ix_dockerfiles_id'), 'dockerfiles', ['id'], unique=False) op.create_index(op.f('ix_dockerfiles_name'), 'dockerfiles', ['name'], unique=True) def downgrade() -> None: op.drop_index(op.f('ix_dockerfiles_name'), table_name='dockerfiles') op.drop_index(op.f('ix_dockerfiles_id'), table_name='dockerfiles') op.drop_table('dockerfiles') op.drop_index(op.f('ix_playbook_deployments_playbook_id'), table_name='playbook_deployments') op.drop_index(op.f('ix_playbook_deployments_id'), table_name='playbook_deployments') op.drop_table('playbook_deployments') op.drop_index(op.f('ix_playbook_test_runs_preset_name'), table_name='playbook_test_runs') op.drop_index(op.f('ix_playbook_test_runs_playbook_id'), table_name='playbook_test_runs') op.drop_index(op.f('ix_playbook_test_runs_id'), table_name='playbook_test_runs') op.drop_table('playbook_test_runs') op.drop_index(op.f('ix_playbooks_name'), table_name='playbooks') op.drop_index(op.f('ix_playbooks_id'), table_name='playbooks') op.drop_table('playbooks')