"""Modelle und Zugänge Revision ID: 0002 Revises: 0001 Erstellt: 2026-10-21 22:40:30.431417 """ from alembic import op import sqlalchemy as sa revision = '0002' down_revision = '0001' branch_labels = None depends_on = None def upgrade() -> None: op.create_table('providers', sa.Column('id', sa.Integer(), nullable=False), sa.Column('name', sa.String(length=100), nullable=False), sa.Column('base_url', sa.String(length=500), nullable=False), sa.Column('active', sa.Boolean(), nullable=False), sa.Column('created', sa.DateTime(timezone=True), nullable=False), sa.PrimaryKeyConstraint('id', name=op.f('pk_providers')), sa.UniqueConstraint('name', name=op.f('uq_providers_name')) ) op.create_table('models', sa.Column('id', sa.Integer(), nullable=False), sa.Column('provider_id', sa.Integer(), nullable=False), sa.Column('name', sa.String(length=200), nullable=False), sa.Column('label', sa.String(length=200), nullable=False), sa.Column('model_class', sa.String(length=20), nullable=False), sa.Column('context_window', sa.Integer(), nullable=False), sa.Column('supports_tools', sa.Boolean(), nullable=False), sa.Column('supports_reasoning', sa.Boolean(), nullable=False), sa.Column('active', sa.Boolean(), nullable=False), sa.Column('is_default', sa.Boolean(), nullable=False), sa.Column('created', sa.DateTime(timezone=True), nullable=False), sa.ForeignKeyConstraint(['provider_id'], ['providers.id'], name=op.f('fk_models_provider_id_providers'), ondelete='CASCADE'), sa.PrimaryKeyConstraint('id', name=op.f('pk_models')), sa.UniqueConstraint('provider_id', 'name', name=op.f('uq_models_provider_id')) ) op.create_index('uq_models_default', 'models', ['is_default'], unique=True, postgresql_where=sa.text('is_default')) op.create_table('provider_keys', sa.Column('id', sa.Integer(), nullable=False), sa.Column('provider_id', sa.Integer(), nullable=False), sa.Column('team_id', sa.Integer(), nullable=True), sa.Column('secret', sa.String(length=2000), nullable=False), sa.Column('hint', sa.String(length=10), nullable=False), sa.Column('updated_by', sa.Integer(), nullable=False), sa.Column('updated', sa.DateTime(timezone=True), nullable=False), sa.ForeignKeyConstraint(['provider_id'], ['providers.id'], name=op.f('fk_provider_keys_provider_id_providers'), ondelete='CASCADE'), sa.ForeignKeyConstraint(['team_id'], ['teams.id'], name=op.f('fk_provider_keys_team_id_teams'), ondelete='CASCADE'), sa.ForeignKeyConstraint(['updated_by'], ['users.id'], name=op.f('fk_provider_keys_updated_by_users')), sa.PrimaryKeyConstraint('id', name=op.f('pk_provider_keys')), sa.UniqueConstraint('provider_id', 'team_id', name=op.f('uq_provider_keys_provider_id')) ) op.create_index('uq_provider_keys_default', 'provider_keys', ['provider_id'], unique=True, postgresql_where=sa.text('team_id IS NULL')) op.add_column('messages', sa.Column('items', sa.JSON(), nullable=False, server_default='[]')) op.add_column('messages', sa.Column('model', sa.String(length=200), nullable=False, server_default='')) op.add_column('messages', sa.Column('usage', sa.JSON(), nullable=False, server_default='{}')) op.add_column('workspaces', sa.Column('model_id', sa.Integer(), nullable=True)) op.create_foreign_key(op.f('fk_workspaces_model_id_models'), 'workspaces', 'models', ['model_id'], ['id'], ondelete='SET NULL') def downgrade() -> None: op.drop_constraint(op.f('fk_workspaces_model_id_models'), 'workspaces', type_='foreignkey') op.drop_column('workspaces', 'model_id') op.drop_column('messages', 'usage') op.drop_column('messages', 'model') op.drop_column('messages', 'items') op.drop_index('uq_provider_keys_default', table_name='provider_keys', postgresql_where=sa.text('team_id IS NULL')) op.drop_table('provider_keys') op.drop_index('uq_models_default', table_name='models', postgresql_where=sa.text('is_default')) op.drop_table('models') op.drop_table('providers')