| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- import sqlalchemy as sa
- from alembic import op
- from sqlalchemy.dialects import mysql
- revision = "0015_merchant"
- down_revision = "0014_money_budget"
- branch_labels = None
- depends_on = None
- def upgrade():
- op.add_column("principals", sa.Column(
- "version", mysql.BIGINT(unsigned=True), nullable=False, server_default="1"
- ))
- op.add_column("conversations", sa.Column(
- "agent_release_version", mysql.BIGINT(unsigned=True), nullable=True
- ))
- op.add_column("agent_runs", sa.Column("release_snapshot", sa.JSON(), nullable=True))
- op.create_table(
- "staff_invitations",
- sa.Column("id", mysql.BINARY(16), primary_key=True),
- sa.Column("tenant_id", mysql.BINARY(16), nullable=False),
- sa.Column("store_id", mysql.BINARY(16), nullable=False),
- sa.Column("account", sa.String(128, collation="utf8mb4_bin"), nullable=False),
- sa.Column("role", sa.String(32), nullable=False),
- sa.Column("status", sa.String(16), nullable=False),
- sa.Column("created_by", mysql.BINARY(16), nullable=False),
- sa.Column("created_at", mysql.DATETIME(fsp=6), nullable=False),
- sa.ForeignKeyConstraint(["tenant_id", "store_id"], ["stores.tenant_id", "stores.id"]),
- sa.UniqueConstraint("tenant_id", "store_id", "account", name="uq_staff_invitation_account"),
- )
- op.create_table(
- "channel_applications",
- sa.Column("tenant_id", mysql.BINARY(16), primary_key=True),
- sa.Column("store_id", mysql.BINARY(16), primary_key=True),
- sa.Column("name", sa.String(128), nullable=False),
- sa.Column("callback_url", sa.String(2048), nullable=False),
- sa.Column("credential_env", sa.String(128), nullable=False),
- sa.Column("enabled", sa.Boolean(), nullable=False),
- sa.Column("version", mysql.BIGINT(unsigned=True), nullable=False),
- sa.Column("scopes", sa.JSON(), nullable=False),
- sa.Column("updated_at", mysql.DATETIME(fsp=6), nullable=False),
- sa.ForeignKeyConstraint(["tenant_id", "store_id"], ["stores.tenant_id", "stores.id"]),
- )
- op.create_table(
- "rule_drafts",
- sa.Column("tenant_id", mysql.BINARY(16), primary_key=True),
- sa.Column("store_id", mysql.BINARY(16), primary_key=True),
- sa.Column("version", mysql.BIGINT(unsigned=True), nullable=False),
- sa.Column("base_version", mysql.BIGINT(unsigned=True), nullable=False),
- sa.Column("window_days", sa.Integer(), nullable=False),
- sa.Column("product_types", sa.JSON(), nullable=False),
- sa.Column("citation", sa.String(2000), nullable=False),
- sa.Column("updated_at", mysql.DATETIME(fsp=6), nullable=False),
- sa.ForeignKeyConstraint(["tenant_id", "store_id"], ["stores.tenant_id", "stores.id"]),
- )
- op.create_table(
- "agent_releases",
- sa.Column("tenant_id", mysql.BINARY(16), primary_key=True),
- sa.Column("store_id", mysql.BINARY(16), primary_key=True),
- sa.Column("version", mysql.BIGINT(unsigned=True), primary_key=True),
- sa.Column("manifest", sa.JSON(), nullable=False),
- sa.Column("reason", sa.String(2000), nullable=False),
- sa.Column("published_by", mysql.BINARY(16), nullable=False),
- sa.Column("published_at", mysql.DATETIME(fsp=6), nullable=False),
- sa.ForeignKeyConstraint(["tenant_id", "store_id"], ["stores.tenant_id", "stores.id"]),
- )
- def downgrade():
- op.drop_table("agent_releases")
- op.drop_table("rule_drafts")
- op.drop_table("channel_applications")
- op.drop_table("staff_invitations")
- op.drop_column("agent_runs", "release_snapshot")
- op.drop_column("conversations", "agent_release_version")
- op.drop_column("principals", "version")
|