import sqlalchemy as sa
from alembic import op

revision = '008_add_training_platform_fields'
down_revision = '007_training_global_schema'
branch_labels = None
depends_on = None

def upgrade() -> None:
    op.add_column('dpo_tasks', sa.Column('platform', sa.String(50), server_default='mock'), schema='hub_global')
    op.add_column('dpo_tasks', sa.Column('platform_job_id', sa.String(255), nullable=True), schema='hub_global')
    op.add_column('dpo_tasks', sa.Column('training_config', sa.JSON(), nullable=True), schema='hub_global')
    op.add_column('dpo_tasks', sa.Column('progress', sa.Float(), server_default='0.0'), schema='hub_global')
    op.add_column('dpo_tasks', sa.Column('logs', sa.Text(), nullable=True), schema='hub_global')
    op.add_column('dpo_tasks', sa.Column('error_message', sa.Text(), nullable=True), schema='hub_global')
    op.add_column('dpo_tasks', sa.Column('started_at', sa.DateTime(), nullable=True), schema='hub_global')
    op.add_column('dpo_tasks', sa.Column('completed_at', sa.DateTime(), nullable=True), schema='hub_global')
    op.create_table('training_templates', sa.Column('id', sa.Integer(), nullable=False), sa.Column('name', sa.String(255), nullable=False), sa.Column('description', sa.Text(), nullable=True), sa.Column('task_type', sa.String(50), nullable=False), sa.Column('platform', sa.String(50), nullable=False), sa.Column('config', sa.JSON(), nullable=False), sa.Column('is_public', sa.Boolean(), server_default='false'), sa.Column('tenant_id', sa.Integer(), nullable=False), sa.Column('created_by', sa.Integer(), nullable=True), sa.Column('created_at', sa.DateTime(), nullable=False), sa.Column('updated_at', sa.DateTime(), nullable=False), sa.PrimaryKeyConstraint('id'), schema='hub_global')
    op.create_index('ix_training_templates_tenant_id', 'training_templates', ['tenant_id'], schema='hub_global')

def downgrade() -> None:
    op.drop_index('ix_training_templates_tenant_id', 'training_templates', schema='hub_global')
    op.drop_table('training_templates', schema='hub_global')
    op.drop_column('dpo_tasks', 'completed_at', schema='hub_global')
    op.drop_column('dpo_tasks', 'started_at', schema='hub_global')
    op.drop_column('dpo_tasks', 'error_message', schema='hub_global')
    op.drop_column('dpo_tasks', 'logs', schema='hub_global')
    op.drop_column('dpo_tasks', 'progress', schema='hub_global')
    op.drop_column('dpo_tasks', 'training_config', schema='hub_global')
    op.drop_column('dpo_tasks', 'platform_job_id', schema='hub_global')
    op.drop_column('dpo_tasks', 'platform', schema='hub_global')
    op.drop_column('sft_tasks', 'completed_at', schema='hub_global')
    op.drop_column('sft_tasks', 'started_at', schema='hub_global')
    op.drop_column('sft_tasks', 'error_message', schema='hub_global')
    op.drop_column('sft_tasks', 'logs', schema='hub_global')
    op.drop_column('sft_tasks', 'progress', schema='hub_global')
    op.drop_column('sft_tasks', 'training_config', schema='hub_global')
    op.drop_column('sft_tasks', 'platform_job_id', schema='hub_global')
    op.drop_column('sft_tasks', 'platform', schema='hub_global')
