"""add audit_logs table Revision ID: g7h8i9j0k1l2 Revises: f6a7b8c9d0e1 Create Date: 2026-04-05 """ from alembic import op import sqlalchemy as sa from sqlalchemy.dialects.postgresql import JSONB revision = 'g7h8i9j0k1l2' down_revision = 'f6a7b8c9d0e1' branch_labels = None depends_on = None def upgrade(): op.create_table( 'audit_logs', sa.Column('id', sa.Integer(), primary_key=True), sa.Column('user_id', sa.String(100), nullable=False), sa.Column('username', sa.String(100), nullable=False), sa.Column('user_role', sa.String(50)), sa.Column('action_time', sa.TIMESTAMP(), nullable=False, server_default=sa.text('now()')), sa.Column('action_type', sa.String(50), nullable=False), sa.Column('action_subtype', sa.String(50)), sa.Column('ip_address', sa.String(45)), sa.Column('user_agent', sa.Text()), sa.Column('request_method', sa.String(10)), sa.Column('request_path', sa.String(500)), sa.Column('status', sa.String(20), nullable=False), sa.Column('status_code', sa.Integer()), sa.Column('resource_type', sa.String(50)), sa.Column('resource_id', sa.String(100)), sa.Column('resource_name', sa.String(200)), sa.Column('description', sa.Text(), nullable=False), sa.Column('request_params', JSONB()), sa.Column('response_data', JSONB()), sa.Column('error_message', sa.Text()), sa.Column('created_at', sa.TIMESTAMP(), nullable=False, server_default=sa.text('now()')), ) op.create_index('idx_audit_logs_action_time', 'audit_logs', ['action_time']) op.create_index('idx_audit_logs_user_id', 'audit_logs', ['user_id']) op.create_index('idx_audit_logs_action_type', 'audit_logs', ['action_type']) op.create_index('idx_audit_logs_resource_type', 'audit_logs', ['resource_type']) op.create_index('idx_audit_logs_status', 'audit_logs', ['status']) def downgrade(): op.drop_index('idx_audit_logs_status', 'audit_logs') op.drop_index('idx_audit_logs_resource_type', 'audit_logs') op.drop_index('idx_audit_logs_action_type', 'audit_logs') op.drop_index('idx_audit_logs_user_id', 'audit_logs') op.drop_index('idx_audit_logs_action_time', 'audit_logs') op.drop_table('audit_logs')