49 lines
1.6 KiB
Python
49 lines
1.6 KiB
Python
"""add_agent_fields_and_nullable_tenant
|
|
|
|
Revision ID: add_agent_fields
|
|
Revises: 4ca4b9958baf
|
|
Create Date: 2025-12-02 19:30:00.000000
|
|
|
|
"""
|
|
from typing import Sequence, Union
|
|
|
|
from alembic import op
|
|
import sqlalchemy as sa
|
|
|
|
|
|
# revision identifiers, used by Alembic.
|
|
revision: str = 'add_agent_fields'
|
|
down_revision: Union[str, None] = '4ca4b9958baf'
|
|
branch_labels: Union[str, Sequence[str], None] = None
|
|
depends_on: Union[str, Sequence[str], None] = None
|
|
|
|
|
|
def upgrade() -> None:
|
|
# Add new columns to agents table
|
|
op.add_column('agents', sa.Column('version', sa.String(length=50), nullable=False, server_default=''))
|
|
op.add_column('agents', sa.Column('status', sa.String(length=20), nullable=False, server_default='offline'))
|
|
op.add_column('agents', sa.Column('token', sa.Text(), nullable=False, server_default=''))
|
|
|
|
# Create index on status for efficient queries
|
|
op.create_index(op.f('ix_agents_status'), 'agents', ['status'], unique=False)
|
|
|
|
# Make tenant_id nullable (agents can register without a tenant)
|
|
op.alter_column('agents', 'tenant_id',
|
|
existing_type=sa.UUID(),
|
|
nullable=True)
|
|
|
|
|
|
def downgrade() -> None:
|
|
# Make tenant_id NOT NULL again (will fail if there are rows with NULL tenant_id)
|
|
op.alter_column('agents', 'tenant_id',
|
|
existing_type=sa.UUID(),
|
|
nullable=False)
|
|
|
|
# Drop the status index
|
|
op.drop_index(op.f('ix_agents_status'), table_name='agents')
|
|
|
|
# Drop new columns
|
|
op.drop_column('agents', 'token')
|
|
op.drop_column('agents', 'status')
|
|
op.drop_column('agents', 'version')
|