| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- import sqlalchemy as sa
- from alembic import op
- from sqlalchemy.dialects import mysql
- revision = "0024_channel_inbox"
- down_revision = "0023_stream_window"
- branch_labels = None
- depends_on = None
- def upgrade():
- op.add_column("conversations", sa.Column("channel", sa.String(16), nullable=False,
- server_default="h5"))
- op.alter_column("conversations", "channel", server_default=None, existing_type=sa.String(16))
- op.add_column("conversations", sa.Column(
- "external_subject", sa.String(128, collation="utf8mb4_bin"), nullable=True))
- op.create_table("channel_keys",
- sa.Column("tenant_id", mysql.BINARY(16), primary_key=True),
- sa.Column("store_id", mysql.BINARY(16), primary_key=True),
- sa.Column("key_id", sa.String(64, collation="utf8mb4_bin"), primary_key=True),
- sa.Column("credential_env", sa.String(128), nullable=False),
- sa.Column("valid_from", mysql.DATETIME(fsp=6), nullable=False),
- sa.Column("valid_until", mysql.DATETIME(fsp=6), nullable=False),
- sa.Column("enabled", sa.Boolean(), nullable=False),
- sa.ForeignKeyConstraint(["tenant_id", "store_id"],
- ["channel_applications.tenant_id", "channel_applications.store_id"]))
- op.create_table("channel_nonces",
- sa.Column("tenant_id", mysql.BINARY(16), primary_key=True),
- sa.Column("store_id", mysql.BINARY(16), primary_key=True),
- sa.Column("nonce_hash", mysql.BINARY(32), primary_key=True),
- sa.Column("expires_at", mysql.DATETIME(fsp=6), nullable=False),
- sa.ForeignKeyConstraint(["tenant_id", "store_id"],
- ["channel_applications.tenant_id", "channel_applications.store_id"]))
- op.create_table("channel_inbox",
- 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("external_message_id", sa.String(128, collation="utf8mb4_bin"), nullable=False),
- sa.Column("external_subject", sa.String(128, collation="utf8mb4_bin"), nullable=False),
- sa.Column("actor_id", mysql.BINARY(16), nullable=False),
- sa.Column("request_hash", mysql.BINARY(32), nullable=False),
- sa.Column("response", sa.JSON(), nullable=False),
- sa.Column("created_at", mysql.DATETIME(fsp=6), nullable=False),
- sa.ForeignKeyConstraint(["tenant_id", "store_id"],
- ["channel_applications.tenant_id", "channel_applications.store_id"]),
- sa.UniqueConstraint("tenant_id", "store_id", "external_message_id",
- name="uq_channel_inbox_message"))
- def downgrade():
- op.drop_table("channel_inbox")
- op.drop_table("channel_nonces")
- op.drop_table("channel_keys")
- op.drop_column("conversations", "external_subject")
- op.drop_column("conversations", "channel")
|