|
| 1 | +"""empty message |
| 2 | +
|
| 3 | +Revision ID: 2768dfee8bbc |
| 4 | +Revises: 12ea6d2bf365 |
| 5 | +Create Date: 2025-06-21 00:28:36.443046 |
| 6 | +
|
| 7 | +""" |
| 8 | +from typing import Sequence, Union |
| 9 | + |
| 10 | +from alembic import op |
| 11 | +import sqlalchemy as sa |
| 12 | + |
| 13 | + |
| 14 | +# revision identifiers, used by Alembic. |
| 15 | +revision: str = '2768dfee8bbc' |
| 16 | +down_revision: Union[str, None] = '12ea6d2bf365' |
| 17 | +branch_labels: Union[str, Sequence[str], None] = None |
| 18 | +depends_on: Union[str, Sequence[str], None] = None |
| 19 | + |
| 20 | + |
| 21 | +def upgrade() -> None: |
| 22 | + """Upgrade schema.""" |
| 23 | + # ### commands auto generated by Alembic - please adjust! ### |
| 24 | + op.create_table('audit_log', |
| 25 | + sa.Column('id', sa.String(length=36), nullable=False), |
| 26 | + sa.Column('user_id', sa.String(length=36), nullable=True, comment='User ID'), |
| 27 | + sa.Column('username', sa.String(length=255), nullable=True, comment='Username'), |
| 28 | + sa.Column('resource_type', sa.Enum('collection', 'document', 'bot', 'chat', 'message', 'api_key', 'llm_provider', 'llm_provider_model', 'model_service_provider', 'user', 'config', 'invitation', 'auth', 'chat_completion', 'search_test', 'llm', 'flow', 'system', name='auditresource'), nullable=True, comment='Resource type'), |
| 29 | + sa.Column('resource_id', sa.String(length=255), nullable=True, comment='Resource ID (extracted at query time)'), |
| 30 | + sa.Column('api_name', sa.String(length=255), nullable=False, comment='API operation name'), |
| 31 | + sa.Column('http_method', sa.String(length=10), nullable=False, comment='HTTP method (POST, PUT, DELETE)'), |
| 32 | + sa.Column('path', sa.String(length=512), nullable=False, comment='API path'), |
| 33 | + sa.Column('status_code', sa.Integer(), nullable=True, comment='HTTP status code'), |
| 34 | + sa.Column('request_data', sa.Text(), nullable=True, comment='Request data (JSON)'), |
| 35 | + sa.Column('response_data', sa.Text(), nullable=True, comment='Response data (JSON)'), |
| 36 | + sa.Column('error_message', sa.Text(), nullable=True, comment='Error message if failed'), |
| 37 | + sa.Column('ip_address', sa.String(length=45), nullable=True, comment='Client IP address'), |
| 38 | + sa.Column('user_agent', sa.String(length=500), nullable=True, comment='User agent string'), |
| 39 | + sa.Column('request_id', sa.String(length=255), nullable=False, comment='Request ID for tracking'), |
| 40 | + sa.Column('start_time', sa.BigInteger(), nullable=False, comment='Request start time (milliseconds since epoch)'), |
| 41 | + sa.Column('end_time', sa.BigInteger(), nullable=True, comment='Request end time (milliseconds since epoch)'), |
| 42 | + sa.Column('gmt_created', sa.DateTime(timezone=True), nullable=False, comment='Created time'), |
| 43 | + sa.PrimaryKeyConstraint('id') |
| 44 | + ) |
| 45 | + op.create_index('idx_audit_api_name', 'audit_log', ['api_name'], unique=False) |
| 46 | + op.create_index('idx_audit_gmt_created', 'audit_log', ['gmt_created'], unique=False) |
| 47 | + op.create_index('idx_audit_http_method', 'audit_log', ['http_method'], unique=False) |
| 48 | + op.create_index('idx_audit_request_id', 'audit_log', ['request_id'], unique=False) |
| 49 | + op.create_index('idx_audit_resource_id', 'audit_log', ['resource_id'], unique=False) |
| 50 | + op.create_index('idx_audit_resource_type', 'audit_log', ['resource_type'], unique=False) |
| 51 | + op.create_index('idx_audit_start_time', 'audit_log', ['start_time'], unique=False) |
| 52 | + op.create_index('idx_audit_status_code', 'audit_log', ['status_code'], unique=False) |
| 53 | + op.create_index('idx_audit_user_id', 'audit_log', ['user_id'], unique=False) |
| 54 | + # ### end Alembic commands ### |
| 55 | + |
| 56 | + |
| 57 | +def downgrade() -> None: |
| 58 | + """Downgrade schema.""" |
| 59 | + # ### commands auto generated by Alembic - please adjust! ### |
| 60 | + op.drop_index('idx_audit_user_id', table_name='audit_log') |
| 61 | + op.drop_index('idx_audit_status_code', table_name='audit_log') |
| 62 | + op.drop_index('idx_audit_start_time', table_name='audit_log') |
| 63 | + op.drop_index('idx_audit_resource_type', table_name='audit_log') |
| 64 | + op.drop_index('idx_audit_resource_id', table_name='audit_log') |
| 65 | + op.drop_index('idx_audit_request_id', table_name='audit_log') |
| 66 | + op.drop_index('idx_audit_http_method', table_name='audit_log') |
| 67 | + op.drop_index('idx_audit_gmt_created', table_name='audit_log') |
| 68 | + op.drop_index('idx_audit_api_name', table_name='audit_log') |
| 69 | + op.drop_table('audit_log') |
| 70 | + # ### end Alembic commands ### |
0 commit comments