169 lines
7.3 KiB
Python
169 lines
7.3 KiB
Python
from __future__ import annotations
|
|
|
|
import sqlalchemy as sa
|
|
|
|
|
|
runtime_metadata = sa.MetaData()
|
|
|
|
runtime_registrations = sa.Table(
|
|
"runtime_registrations",
|
|
runtime_metadata,
|
|
sa.Column("hub_slug", sa.String(120), primary_key=True),
|
|
sa.Column("package", sa.JSON(), nullable=False),
|
|
sa.Column("created_at", sa.DateTime(timezone=True), nullable=False),
|
|
sa.Column("updated_at", sa.DateTime(timezone=True), nullable=False),
|
|
)
|
|
|
|
runtime_messages = sa.Table(
|
|
"runtime_messages",
|
|
runtime_metadata,
|
|
sa.Column("id", sa.String(36), primary_key=True),
|
|
sa.Column("schema_version", sa.String(40), nullable=False),
|
|
sa.Column("correlation_id", sa.String(36), nullable=False, index=True),
|
|
sa.Column("conversation_id", sa.String(36), nullable=True, index=True),
|
|
sa.Column("from_address", sa.String(240), nullable=False),
|
|
sa.Column("to_addresses", sa.JSON(), nullable=False),
|
|
sa.Column("body", sa.Text(), nullable=False),
|
|
sa.Column("subject_refs", sa.JSON(), nullable=False),
|
|
sa.Column("created_at", sa.DateTime(timezone=True), nullable=False, index=True),
|
|
)
|
|
|
|
|
|
def _event_table(name: str) -> sa.Table:
|
|
return sa.Table(
|
|
name,
|
|
runtime_metadata,
|
|
sa.Column("id", sa.String(36), primary_key=True),
|
|
sa.Column("schema_version", sa.String(40), nullable=False),
|
|
sa.Column("correlation_id", sa.String(36), nullable=False, index=True),
|
|
sa.Column("event_type", sa.String(160), nullable=False, index=True),
|
|
sa.Column("occurred_at", sa.DateTime(timezone=True), nullable=False),
|
|
sa.Column("subject_refs", sa.JSON(), nullable=False),
|
|
sa.Column("payload", sa.JSON(), nullable=False),
|
|
sa.Column("recorded_at", sa.DateTime(timezone=True), nullable=False, index=True),
|
|
)
|
|
|
|
|
|
runtime_progress_events = _event_table("runtime_progress_events")
|
|
runtime_interaction_events = _event_table("runtime_interaction_events")
|
|
|
|
runtime_audit_ledger = sa.Table(
|
|
"runtime_audit_ledger",
|
|
runtime_metadata,
|
|
sa.Column("id", sa.String(36), primary_key=True),
|
|
sa.Column("action", sa.String(120), nullable=False, index=True),
|
|
sa.Column("subject_type", sa.String(80), nullable=False),
|
|
sa.Column("subject_id", sa.String(240), nullable=False, index=True),
|
|
sa.Column("correlation_id", sa.String(36), nullable=True, index=True),
|
|
sa.Column("payload_hash", sa.String(64), nullable=False),
|
|
sa.Column("detail", sa.JSON(), nullable=False),
|
|
sa.Column("recorded_at", sa.DateTime(timezone=True), nullable=False, index=True),
|
|
)
|
|
|
|
compat_hubs = sa.Table(
|
|
"compat_hubs",
|
|
runtime_metadata,
|
|
sa.Column("id", sa.String(36), primary_key=True),
|
|
sa.Column("slug", sa.String(120), nullable=False, unique=True, index=True),
|
|
sa.Column("name", sa.String(240), nullable=False),
|
|
sa.Column("domain", sa.String(240), nullable=True),
|
|
sa.Column("hub_kind", sa.String(80), nullable=True),
|
|
sa.Column("hub_family", sa.String(80), nullable=True),
|
|
sa.Column("vsm_function", sa.String(80), nullable=True),
|
|
sa.Column("vsm_system", sa.String(80), nullable=True),
|
|
sa.Column("status", sa.String(40), nullable=False),
|
|
sa.Column("description", sa.Text(), nullable=True),
|
|
sa.Column("body", sa.JSON(), nullable=False),
|
|
sa.Column("created_at", sa.DateTime(timezone=True), nullable=False),
|
|
sa.Column("updated_at", sa.DateTime(timezone=True), nullable=False),
|
|
)
|
|
|
|
compat_manifests = sa.Table(
|
|
"compat_manifests",
|
|
runtime_metadata,
|
|
sa.Column("id", sa.String(36), primary_key=True),
|
|
sa.Column("hub_id", sa.String(36), sa.ForeignKey("compat_hubs.id"), nullable=True, index=True),
|
|
sa.Column("hub_slug", sa.String(120), nullable=True, index=True),
|
|
sa.Column("manifest_version", sa.String(40), nullable=False),
|
|
sa.Column("status", sa.String(40), nullable=False),
|
|
sa.Column("body", sa.JSON(), nullable=False),
|
|
sa.Column("created_at", sa.DateTime(timezone=True), nullable=False),
|
|
sa.Column("updated_at", sa.DateTime(timezone=True), nullable=False),
|
|
)
|
|
|
|
compat_api_consumers = sa.Table(
|
|
"compat_api_consumers",
|
|
runtime_metadata,
|
|
sa.Column("id", sa.String(36), primary_key=True),
|
|
sa.Column("slug", sa.String(120), nullable=True, unique=True, index=True),
|
|
sa.Column("name", sa.String(240), nullable=False, index=True),
|
|
sa.Column("description", sa.Text(), nullable=True),
|
|
sa.Column("hub_capability_manifest_id", sa.String(36), nullable=True, index=True),
|
|
sa.Column("rate_limit_per_minute", sa.Integer(), nullable=True),
|
|
sa.Column("quota_per_day", sa.Integer(), nullable=True),
|
|
sa.Column("key_prefix", sa.String(32), nullable=True),
|
|
sa.Column("status", sa.String(40), nullable=False),
|
|
sa.Column("body", sa.JSON(), nullable=False),
|
|
sa.Column("created_at", sa.DateTime(timezone=True), nullable=False),
|
|
)
|
|
|
|
compat_api_keys = sa.Table(
|
|
"compat_api_keys",
|
|
runtime_metadata,
|
|
sa.Column("id", sa.String(36), primary_key=True),
|
|
sa.Column(
|
|
"api_consumer_id",
|
|
sa.String(36),
|
|
sa.ForeignKey("compat_api_consumers.id"),
|
|
nullable=False,
|
|
index=True,
|
|
),
|
|
sa.Column("key_prefix", sa.String(32), nullable=False, index=True),
|
|
sa.Column("key_hash", sa.String(64), nullable=False, unique=True),
|
|
sa.Column("scopes", sa.Text(), nullable=True),
|
|
sa.Column("status", sa.String(40), nullable=False),
|
|
sa.Column("created_at", sa.DateTime(timezone=True), nullable=False),
|
|
)
|
|
|
|
compat_widgets = sa.Table(
|
|
"compat_widgets",
|
|
runtime_metadata,
|
|
sa.Column("id", sa.String(36), primary_key=True),
|
|
sa.Column("hub_id", sa.String(36), sa.ForeignKey("compat_hubs.id"), nullable=False, index=True),
|
|
sa.Column("name", sa.String(240), nullable=False),
|
|
sa.Column("widget_type", sa.String(120), nullable=True, index=True),
|
|
sa.Column("capability_ref", sa.String(240), nullable=True, index=True),
|
|
sa.Column("view_context", sa.String(500), nullable=True),
|
|
sa.Column("policy_scope", sa.String(120), nullable=True),
|
|
sa.Column("status", sa.String(40), nullable=False),
|
|
sa.Column("body", sa.JSON(), nullable=False),
|
|
sa.Column("created_at", sa.DateTime(timezone=True), nullable=False),
|
|
)
|
|
|
|
compat_migration_runs = sa.Table(
|
|
"compat_migration_runs",
|
|
runtime_metadata,
|
|
sa.Column("id", sa.String(36), primary_key=True),
|
|
sa.Column("source", sa.String(120), nullable=False, index=True),
|
|
sa.Column("schema_version", sa.String(80), nullable=False),
|
|
sa.Column("bundle_sha256", sa.String(64), nullable=False, index=True),
|
|
sa.Column("dry_run", sa.Boolean(), nullable=False),
|
|
sa.Column("status", sa.String(40), nullable=False),
|
|
sa.Column("counts", sa.JSON(), nullable=False),
|
|
sa.Column("diagnostics", sa.JSON(), nullable=False),
|
|
sa.Column("created_at", sa.DateTime(timezone=True), nullable=False),
|
|
)
|
|
|
|
runtime_import_runs = sa.Table(
|
|
"runtime_import_runs",
|
|
runtime_metadata,
|
|
sa.Column("id", sa.String(36), primary_key=True),
|
|
sa.Column("source", sa.String(120), nullable=False, index=True),
|
|
sa.Column("schema_version", sa.String(80), nullable=False),
|
|
sa.Column("bundle_sha256", sa.String(64), nullable=False, unique=True, index=True),
|
|
sa.Column("high_water_mark", sa.String(200), nullable=True),
|
|
sa.Column("counts", sa.JSON(), nullable=False),
|
|
sa.Column("content_hashes", sa.JSON(), nullable=False),
|
|
sa.Column("status", sa.String(40), nullable=False),
|
|
sa.Column("created_at", sa.DateTime(timezone=True), nullable=False),
|
|
)
|