"""init skill models Revision ID: 20260425_0001 Revises: Create Date: 2026-04-25 15:10:00 """ from collections.abc import Sequence from alembic import op import sqlalchemy as sa revision: str = "20260425_0001" down_revision: str | None = None branch_labels: Sequence[str] | None = None depends_on: Sequence[str] | None = None def upgrade() -> None: op.create_table( "skill_definition", sa.Column("code", sa.String(length=64), nullable=False), sa.Column("name", sa.String(length=128), nullable=False), sa.Column("skill_type", sa.String(length=32), nullable=False), sa.Column("description", sa.Text(), nullable=True), sa.Column("status", sa.String(length=32), nullable=False), sa.Column("owner_user_id", sa.String(length=36), nullable=True), sa.Column("metadata_json", sa.JSON(), nullable=True), sa.Column("id", sa.String(length=36), nullable=False), sa.Column("tenant_id", sa.String(length=36), nullable=False), sa.Column("created_by", sa.String(length=36), nullable=True), sa.Column("updated_by", sa.String(length=36), nullable=True), sa.Column("created_time", sa.DateTime(), nullable=False), sa.Column("updated_time", sa.DateTime(), nullable=False), sa.Column("deleted_time", sa.DateTime(), nullable=True), sa.Column("version", sa.Integer(), nullable=False), sa.PrimaryKeyConstraint("id"), ) op.create_index("ix_skill_definition_code", "skill_definition", ["code"], unique=False) op.create_index("ix_skill_definition_skill_type", "skill_definition", ["skill_type"], unique=False) op.create_index("ix_skill_definition_status", "skill_definition", ["status"], unique=False) op.create_index("ix_skill_definition_tenant_id", "skill_definition", ["tenant_id"], unique=False) op.create_table( "skill_version", sa.Column("skill_id", sa.String(length=36), nullable=False), sa.Column("version_no", sa.Integer(), nullable=False), sa.Column("status", sa.String(length=32), nullable=False), sa.Column("runtime_type", sa.String(length=32), nullable=False), sa.Column("entrypoint", sa.String(length=128), nullable=True), sa.Column("parameter_schema_json", sa.JSON(), nullable=False), sa.Column("output_schema_json", sa.JSON(), nullable=False), sa.Column("implementation_json", sa.JSON(), nullable=False), sa.Column("published_time", sa.DateTime(), nullable=True), sa.Column("id", sa.String(length=36), nullable=False), sa.Column("tenant_id", sa.String(length=36), nullable=False), sa.Column("created_by", sa.String(length=36), nullable=True), sa.Column("updated_by", sa.String(length=36), nullable=True), sa.Column("created_time", sa.DateTime(), nullable=False), sa.Column("updated_time", sa.DateTime(), nullable=False), sa.Column("deleted_time", sa.DateTime(), nullable=True), sa.Column("version", sa.Integer(), nullable=False), sa.PrimaryKeyConstraint("id"), ) op.create_index("ix_skill_version_skill_id", "skill_version", ["skill_id"], unique=False) op.create_index("ix_skill_version_status", "skill_version", ["status"], unique=False) op.create_index("ix_skill_version_tenant_id", "skill_version", ["tenant_id"], unique=False) op.create_table( "skill_installation", sa.Column("skill_id", sa.String(length=36), nullable=False), sa.Column("skill_version_id", sa.String(length=36), nullable=False), sa.Column("install_scope", sa.String(length=32), nullable=False), sa.Column("scope_id", sa.String(length=64), nullable=False), sa.Column("status", sa.String(length=32), nullable=False), sa.Column("config_json", sa.JSON(), nullable=False), sa.Column("installed_by", sa.String(length=36), nullable=True), sa.Column("installed_time", sa.DateTime(), nullable=True), sa.Column("id", sa.String(length=36), nullable=False), sa.Column("tenant_id", sa.String(length=36), nullable=False), sa.Column("created_by", sa.String(length=36), nullable=True), sa.Column("updated_by", sa.String(length=36), nullable=True), sa.Column("created_time", sa.DateTime(), nullable=False), sa.Column("updated_time", sa.DateTime(), nullable=False), sa.Column("deleted_time", sa.DateTime(), nullable=True), sa.Column("version", sa.Integer(), nullable=False), sa.PrimaryKeyConstraint("id"), ) op.create_index("ix_skill_installation_skill_id", "skill_installation", ["skill_id"], unique=False) op.create_index( "ix_skill_installation_skill_version_id", "skill_installation", ["skill_version_id"], unique=False, ) op.create_index( "ix_skill_installation_install_scope", "skill_installation", ["install_scope"], unique=False, ) op.create_index("ix_skill_installation_scope_id", "skill_installation", ["scope_id"], unique=False) op.create_index("ix_skill_installation_status", "skill_installation", ["status"], unique=False) op.create_index("ix_skill_installation_tenant_id", "skill_installation", ["tenant_id"], unique=False) op.create_table( "skill_run", sa.Column("skill_id", sa.String(length=36), nullable=False), sa.Column("skill_version_id", sa.String(length=36), nullable=False), sa.Column("installation_id", sa.String(length=36), nullable=True), sa.Column("status", sa.String(length=32), nullable=False), sa.Column("input_json", sa.JSON(), nullable=False), sa.Column("output_json", sa.JSON(), nullable=True), sa.Column("output_text", sa.Text(), nullable=True), sa.Column("worker_key", sa.String(length=128), nullable=True), sa.Column("started_time", sa.DateTime(), nullable=True), sa.Column("finished_time", sa.DateTime(), nullable=True), sa.Column("error_code", sa.String(length=64), nullable=True), sa.Column("error_message", sa.Text(), nullable=True), sa.Column("id", sa.String(length=36), nullable=False), sa.Column("tenant_id", sa.String(length=36), nullable=False), sa.Column("created_by", sa.String(length=36), nullable=True), sa.Column("updated_by", sa.String(length=36), nullable=True), sa.Column("created_time", sa.DateTime(), nullable=False), sa.Column("updated_time", sa.DateTime(), nullable=False), sa.Column("deleted_time", sa.DateTime(), nullable=True), sa.Column("version", sa.Integer(), nullable=False), sa.PrimaryKeyConstraint("id"), ) op.create_index("ix_skill_run_skill_id", "skill_run", ["skill_id"], unique=False) op.create_index("ix_skill_run_skill_version_id", "skill_run", ["skill_version_id"], unique=False) op.create_index("ix_skill_run_installation_id", "skill_run", ["installation_id"], unique=False) op.create_index("ix_skill_run_status", "skill_run", ["status"], unique=False) op.create_index("ix_skill_run_tenant_id", "skill_run", ["tenant_id"], unique=False) def downgrade() -> None: op.drop_index("ix_skill_run_tenant_id", table_name="skill_run") op.drop_index("ix_skill_run_status", table_name="skill_run") op.drop_index("ix_skill_run_installation_id", table_name="skill_run") op.drop_index("ix_skill_run_skill_version_id", table_name="skill_run") op.drop_index("ix_skill_run_skill_id", table_name="skill_run") op.drop_table("skill_run") op.drop_index("ix_skill_installation_tenant_id", table_name="skill_installation") op.drop_index("ix_skill_installation_status", table_name="skill_installation") op.drop_index("ix_skill_installation_scope_id", table_name="skill_installation") op.drop_index("ix_skill_installation_install_scope", table_name="skill_installation") op.drop_index("ix_skill_installation_skill_version_id", table_name="skill_installation") op.drop_index("ix_skill_installation_skill_id", table_name="skill_installation") op.drop_table("skill_installation") op.drop_index("ix_skill_version_tenant_id", table_name="skill_version") op.drop_index("ix_skill_version_status", table_name="skill_version") op.drop_index("ix_skill_version_skill_id", table_name="skill_version") op.drop_table("skill_version") op.drop_index("ix_skill_definition_tenant_id", table_name="skill_definition") op.drop_index("ix_skill_definition_status", table_name="skill_definition") op.drop_index("ix_skill_definition_skill_type", table_name="skill_definition") op.drop_index("ix_skill_definition_code", table_name="skill_definition") op.drop_table("skill_definition")