108 lines
7.3 KiB
Python
108 lines
7.3 KiB
Python
"""add team management
|
|
|
|
Revision ID: 170005531deb
|
|
Revises: 78fb32c26a6e
|
|
Create Date: 2026-06-30 11:07:14.278871
|
|
"""
|
|
from typing import Sequence, Union
|
|
|
|
from alembic import op
|
|
import sqlalchemy as sa
|
|
from sqlalchemy.dialects import postgresql
|
|
|
|
# revision identifiers, used by Alembic.
|
|
revision: str = '170005531deb'
|
|
down_revision: Union[str, None] = '78fb32c26a6e'
|
|
branch_labels: Union[str, Sequence[str], None] = None
|
|
depends_on: Union[str, Sequence[str], None] = None
|
|
|
|
|
|
def upgrade() -> None:
|
|
# ### commands auto generated by Alembic - please adjust! ###
|
|
op.create_table('teams',
|
|
sa.Column('id', sa.String(length=32), nullable=False),
|
|
sa.Column('name', sa.String(length=128), nullable=False, comment='团队名称'),
|
|
sa.Column('code', sa.String(length=64), nullable=True, comment='团队编码'),
|
|
sa.Column('description', sa.String(length=512), nullable=True, comment='团队备注'),
|
|
sa.Column('status', sa.String(length=16), server_default='active', nullable=False, comment='团队状态:active启用,disabled禁用'),
|
|
sa.Column('sort_order', sa.Integer(), server_default='0', nullable=False, comment='排序值,越小越靠前'),
|
|
sa.Column('created_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=False),
|
|
sa.Column('updated_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=False),
|
|
sa.Column('deleted_at', sa.DateTime(timezone=True), nullable=True),
|
|
sa.PrimaryKeyConstraint('id')
|
|
)
|
|
op.create_index('ix_teams_code', 'teams', ['code'], unique=False)
|
|
op.create_index(op.f('ix_teams_deleted_at'), 'teams', ['deleted_at'], unique=False)
|
|
op.create_index(op.f('ix_teams_name'), 'teams', ['name'], unique=False)
|
|
op.create_index(op.f('ix_teams_sort_order'), 'teams', ['sort_order'], unique=False)
|
|
op.create_index(op.f('ix_teams_status'), 'teams', ['status'], unique=False)
|
|
op.create_index('ix_teams_status_sort', 'teams', ['status', 'sort_order', 'created_at'], unique=False)
|
|
op.drop_index(op.f('ix_contact_requests_phone'), table_name='contact_requests')
|
|
op.drop_index(op.f('ix_contact_requests_user_id'), table_name='contact_requests')
|
|
op.drop_table('contact_requests')
|
|
op.add_column('credit_records', sa.Column('team_id_snapshot', sa.String(length=32), nullable=True))
|
|
op.add_column('credit_records', sa.Column('team_name_snapshot', sa.String(length=128), nullable=True))
|
|
op.drop_index(op.f('ix_credit_records_engine_type'), table_name='credit_records')
|
|
op.create_index(op.f('ix_credit_records_team_id_snapshot'), 'credit_records', ['team_id_snapshot'], unique=False)
|
|
op.create_index('ix_credit_records_team_time', 'credit_records', ['team_id_snapshot', 'created_at'], unique=False)
|
|
op.create_index('ix_credit_records_user_kind_team_time', 'credit_records', ['user_type_snapshot', 'frontend_user_kind_snapshot', 'team_id_snapshot', 'created_at'], unique=False)
|
|
op.create_index('idx_genrec_project_status', 'generation_records', ['project_id', 'status'], unique=False)
|
|
op.create_index('idx_genrec_user_status_created', 'generation_records', ['user_id', 'status', 'created_at'], unique=False)
|
|
op.create_index('idx_menu_target_active_sort', 'menu_configs', ['menu_target', 'is_active', 'sort_order'], unique=False)
|
|
op.create_index(op.f('ix_menu_configs_parent_id'), 'menu_configs', ['parent_id'], unique=False)
|
|
op.create_index('idx_oplog_created', 'operation_logs', ['created_at'], unique=False)
|
|
op.create_index('idx_oplog_user_created', 'operation_logs', ['user_id', 'created_at'], unique=False)
|
|
op.create_index('idx_payorder_status_created', 'payment_orders', ['status', 'created_at'], unique=False)
|
|
op.create_index('idx_payorder_user_status_created', 'payment_orders', ['user_id', 'status', 'created_at'], unique=False)
|
|
op.create_index('idx_upload_oauth_status', 'upload_task', ['oauth_id', 'status'], unique=False)
|
|
op.create_index('idx_upload_user_status_created', 'upload_task', ['user_id', 'status', 'created_at'], unique=False)
|
|
op.add_column('users', sa.Column('team_id', sa.String(length=32), nullable=True))
|
|
op.create_index(op.f('ix_users_team_id'), 'users', ['team_id'], unique=False)
|
|
# ### end Alembic commands ###
|
|
|
|
|
|
def downgrade() -> None:
|
|
# ### commands auto generated by Alembic - please adjust! ###
|
|
op.drop_index(op.f('ix_users_team_id'), table_name='users')
|
|
op.drop_column('users', 'team_id')
|
|
op.drop_index('idx_upload_user_status_created', table_name='upload_task')
|
|
op.drop_index('idx_upload_oauth_status', table_name='upload_task')
|
|
op.drop_index('idx_payorder_user_status_created', table_name='payment_orders')
|
|
op.drop_index('idx_payorder_status_created', table_name='payment_orders')
|
|
op.drop_index('idx_oplog_user_created', table_name='operation_logs')
|
|
op.drop_index('idx_oplog_created', table_name='operation_logs')
|
|
op.drop_index(op.f('ix_menu_configs_parent_id'), table_name='menu_configs')
|
|
op.drop_index('idx_menu_target_active_sort', table_name='menu_configs')
|
|
op.drop_index('idx_genrec_user_status_created', table_name='generation_records')
|
|
op.drop_index('idx_genrec_project_status', table_name='generation_records')
|
|
op.drop_index('ix_credit_records_user_kind_team_time', table_name='credit_records')
|
|
op.drop_index('ix_credit_records_team_time', table_name='credit_records')
|
|
op.drop_index(op.f('ix_credit_records_team_id_snapshot'), table_name='credit_records')
|
|
op.create_index(op.f('ix_credit_records_engine_type'), 'credit_records', ['engine_type'], unique=False)
|
|
op.drop_column('credit_records', 'team_name_snapshot')
|
|
op.drop_column('credit_records', 'team_id_snapshot')
|
|
op.create_table('contact_requests',
|
|
sa.Column('id', sa.VARCHAR(length=32), autoincrement=False, nullable=False),
|
|
sa.Column('user_id', sa.VARCHAR(length=32), autoincrement=False, nullable=False),
|
|
sa.Column('phone', sa.VARCHAR(length=20), autoincrement=False, nullable=False),
|
|
sa.Column('company_name', sa.VARCHAR(length=128), autoincrement=False, nullable=False),
|
|
sa.Column('industry', sa.VARCHAR(length=64), autoincrement=False, nullable=False),
|
|
sa.Column('name', sa.VARCHAR(length=64), autoincrement=False, nullable=False),
|
|
sa.Column('message', sa.TEXT(), autoincrement=False, nullable=True),
|
|
sa.Column('is_handled', sa.BOOLEAN(), autoincrement=False, nullable=False),
|
|
sa.Column('created_at', postgresql.TIMESTAMP(timezone=True, precision=6), server_default=sa.text('now()'), autoincrement=False, nullable=False),
|
|
sa.Column('updated_at', postgresql.TIMESTAMP(timezone=True, precision=6), server_default=sa.text('now()'), autoincrement=False, nullable=False),
|
|
sa.ForeignKeyConstraint(['user_id'], ['users.id'], name=op.f('contact_requests_user_id_fkey')),
|
|
sa.PrimaryKeyConstraint('id', name=op.f('contact_requests_pkey'))
|
|
)
|
|
op.create_index(op.f('ix_contact_requests_user_id'), 'contact_requests', ['user_id'], unique=False)
|
|
op.create_index(op.f('ix_contact_requests_phone'), 'contact_requests', ['phone'], unique=False)
|
|
op.drop_index('ix_teams_status_sort', table_name='teams')
|
|
op.drop_index(op.f('ix_teams_status'), table_name='teams')
|
|
op.drop_index(op.f('ix_teams_sort_order'), table_name='teams')
|
|
op.drop_index(op.f('ix_teams_name'), table_name='teams')
|
|
op.drop_index(op.f('ix_teams_deleted_at'), table_name='teams')
|
|
op.drop_index('ix_teams_code', table_name='teams')
|
|
op.drop_table('teams')
|
|
# ### end Alembic commands ###
|