"""empty message Revision ID: f1b06efacec0 Revises: Create Date: 2025-04-23 15:09:14.833213 """ from typing import Sequence, Union from alembic import op import sqlalchemy as sa from sqlalchemy.dialects import mysql # revision identifiers, used by Alembic. revision: str = 'f1b06efacec0' down_revision: Union[str, None] = None branch_labels: Union[str, Sequence[str], None] = None depends_on: Union[str, Sequence[str], None] = None def upgrade() -> None: """Upgrade schema.""" # ### commands auto generated by Alembic - please adjust! ### op.create_table('account', sa.Column('id', sa.Integer().with_variant(mysql.INTEGER(unsigned=True), 'mysql'), autoincrement=True, nullable=False), sa.Column('name', sa.String(length=100), nullable=False), sa.Column('login', sa.String(length=100), nullable=False), sa.Column('email', sa.String(length=100), nullable=True), sa.Column('bind_tenant_id', sa.String(length=40), nullable=True), sa.Column('role', sa.Enum('OWNER', 'ADMIN', 'EDITOR', 'VIEWER', name='accountrole'), nullable=False), sa.Column('meta', sa.JSON(), nullable=True), sa.Column('creator_id', sa.Integer().with_variant(mysql.INTEGER(unsigned=True), 'mysql'), nullable=True), sa.Column('created_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=True), sa.Column('status', sa.Enum('ACTIVE', 'DISABLED', 'BLOCKED', 'DELETED', name='accountstatus'), nullable=False), sa.ForeignKeyConstraint(['creator_id'], ['account.id'], ), sa.PrimaryKeyConstraint('id') ) op.create_index('idx_login', 'account', ['login'], unique=False) op.create_index('idx_name', 'account', ['name'], unique=False) op.create_table('account_keyring', sa.Column('owner_id', sa.Integer().with_variant(mysql.INTEGER(unsigned=True), 'mysql'), nullable=False), sa.Column('key_type', sa.Enum('PASSWORD', 'ACCESS_TOKEN', 'REFRESH_TOKEN', 'API_KEY', name='keytype'), nullable=False), sa.Column('key_id', sa.String(length=40), nullable=False), sa.Column('key_value', sa.String(length=255), nullable=False), sa.Column('created_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=True), sa.Column('expiry', sa.DateTime(timezone=True), nullable=True), sa.Column('status', sa.Enum('ACTIVE', 'EXPIRED', 'DELETED', name='keystatus'), nullable=False), sa.ForeignKeyConstraint(['owner_id'], ['account.id'], ), sa.PrimaryKeyConstraint('owner_id', 'key_type', 'key_id') ) op.create_table('list_events', sa.Column('id', sa.Integer().with_variant(mysql.INTEGER(unsigned=True), 'mysql'), autoincrement=True, nullable=False), sa.Column('name', sa.String(length=40, collation='latin1_bin'), nullable=False), sa.Column('title', sa.String(length=64), nullable=False), sa.Column('creator_id', sa.Integer().with_variant(mysql.INTEGER(unsigned=True), 'mysql'), nullable=False), sa.Column('created_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=True), sa.Column('schema', sa.JSON(), nullable=True), sa.Column('state', sa.Enum('AUTO', 'DESCRIPTED', name='eventstate'), nullable=False), sa.Column('status', sa.Enum('ACTIVE', 'DISABLED', 'DELETED', name='eventstatus'), nullable=False), sa.ForeignKeyConstraint(['creator_id'], ['account.id'], ), sa.PrimaryKeyConstraint('id'), sa.UniqueConstraint('name') ) op.create_table('process_schema', sa.Column('id', sa.Integer().with_variant(mysql.INTEGER(unsigned=True), 'mysql'), autoincrement=True, nullable=False), sa.Column('title', sa.String(length=100), nullable=False), sa.Column('description', sa.Text(), nullable=False), sa.Column('owner_id', sa.Integer().with_variant(mysql.INTEGER(unsigned=True), 'mysql'), nullable=False), sa.Column('creator_id', sa.Integer().with_variant(mysql.INTEGER(unsigned=True), 'mysql'), nullable=False), sa.Column('created_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=True), sa.Column('settings', sa.JSON(), nullable=True), sa.Column('status', sa.Enum('ACTIVE', 'STOPPING', 'STOPPED', 'DELETED', name='processstatus'), nullable=False), sa.ForeignKeyConstraint(['creator_id'], ['account.id'], ), sa.ForeignKeyConstraint(['owner_id'], ['account.id'], ), sa.PrimaryKeyConstraint('id') ) op.create_index('idx_owner_id', 'process_schema', ['owner_id'], unique=False) op.create_table('process_version_archive', sa.Column('id', sa.Integer().with_variant(mysql.INTEGER(unsigned=True), 'mysql'), autoincrement=True, nullable=False), sa.Column('ps_id', sa.Integer().with_variant(mysql.INTEGER(unsigned=True), 'mysql'), nullable=False), sa.Column('version', sa.Integer().with_variant(mysql.INTEGER(unsigned=True), 'mysql'), nullable=False), sa.Column('snapshot', sa.JSON(), nullable=True), sa.Column('owner_id', sa.Integer().with_variant(mysql.INTEGER(unsigned=True), 'mysql'), nullable=False), sa.Column('created_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=True), sa.Column('is_last', sa.Integer().with_variant(mysql.INTEGER(unsigned=True), 'mysql'), nullable=True), sa.ForeignKeyConstraint(['owner_id'], ['account.id'], ), sa.ForeignKeyConstraint(['ps_id'], ['process_schema.id'], ), sa.PrimaryKeyConstraint('id', 'version') ) op.create_table('ps_node', sa.Column('id', sa.Integer().with_variant(mysql.INTEGER(unsigned=True), 'mysql'), autoincrement=True, nullable=False), sa.Column('ps_id', sa.Integer().with_variant(mysql.INTEGER(unsigned=True), 'mysql'), nullable=False), sa.Column('node_type', sa.Enum('TYPE1', 'TYPE2', 'TYPE3', name='nodetype'), nullable=False), sa.Column('settings', sa.JSON(), nullable=True), sa.Column('creator_id', sa.Integer().with_variant(mysql.INTEGER(unsigned=True), 'mysql'), nullable=False), sa.Column('created_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=True), sa.Column('status', sa.Enum('ACTIVE', 'DISABLED', 'DELETED', name='nodestatus'), nullable=False), sa.ForeignKeyConstraint(['creator_id'], ['account.id'], ), sa.ForeignKeyConstraint(['ps_id'], ['process_schema.id'], ), sa.PrimaryKeyConstraint('id') ) op.create_index('idx_ps_id', 'ps_node', ['ps_id'], unique=False) op.create_table('node_link', sa.Column('id', sa.Integer().with_variant(mysql.INTEGER(unsigned=True), 'mysql'), autoincrement=True, nullable=False), sa.Column('link_name', sa.String(length=20), nullable=False), sa.Column('node_id', sa.Integer().with_variant(mysql.INTEGER(unsigned=True), 'mysql'), nullable=False), sa.Column('next_node_id', sa.Integer().with_variant(mysql.INTEGER(unsigned=True), 'mysql'), nullable=False), sa.Column('settings', sa.JSON(), nullable=True), sa.Column('creator_id', sa.Integer().with_variant(mysql.INTEGER(unsigned=True), 'mysql'), nullable=False), sa.Column('created_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=True), sa.Column('status', sa.Enum('ACTIVE', 'STOPPING', 'STOPPED', 'DELETED', name='nodelinkstatus'), nullable=False), sa.ForeignKeyConstraint(['creator_id'], ['account.id'], ), sa.ForeignKeyConstraint(['next_node_id'], ['ps_node.id'], ), sa.ForeignKeyConstraint(['node_id'], ['ps_node.id'], ), sa.PrimaryKeyConstraint('id') ) op.create_index('idx_next_node_id', 'node_link', ['next_node_id'], unique=False) op.create_index('idx_node_id', 'node_link', ['node_id'], unique=False) # ### end Alembic commands ### def downgrade() -> None: """Downgrade schema.""" # ### commands auto generated by Alembic - please adjust! ### op.drop_index('idx_node_id', table_name='node_link') op.drop_index('idx_next_node_id', table_name='node_link') op.drop_table('node_link') op.drop_index('idx_ps_id', table_name='ps_node') op.drop_table('ps_node') op.drop_table('process_version_archive') op.drop_index('idx_owner_id', table_name='process_schema') op.drop_table('process_schema') op.drop_table('list_events') op.drop_table('account_keyring') op.drop_index('idx_name', table_name='account') op.drop_index('idx_login', table_name='account') op.drop_table('account') # ### end Alembic commands ###