Initialize governed Views module

This commit is contained in:
2026-07-28 21:04:44 +02:00
commit e14432db73
34 changed files with 6013 additions and 0 deletions
@@ -0,0 +1 @@
"""Views migrations."""
@@ -0,0 +1 @@
"""Views migration revisions."""
@@ -0,0 +1,235 @@
"""v0.1.0 Views definitions and assignments
Revision ID: b8e4c1f7a2d9
Revises: None
Create Date: 2026-07-28 00:00:00.000000
"""
from __future__ import annotations
from alembic import op
import sqlalchemy as sa
revision = "b8e4c1f7a2d9"
down_revision = None
branch_labels = None
depends_on = None
def upgrade() -> None:
op.create_table(
"view_definitions",
sa.Column("id", sa.String(length=36), nullable=False),
sa.Column("tenant_id", sa.String(length=36), nullable=True),
sa.Column("scope_type", sa.String(length=20), nullable=False),
sa.Column("scope_id", sa.String(length=255), nullable=True),
sa.Column("scope_key", sa.String(length=300), nullable=False),
sa.Column("definition_key", sa.String(length=120), nullable=False),
sa.Column("name", sa.String(length=200), nullable=False),
sa.Column("description", sa.Text(), nullable=True),
sa.Column("status", sa.String(length=24), nullable=False),
sa.Column("current_revision", sa.Integer(), nullable=False),
sa.Column("published_revision_id", sa.String(length=36), nullable=True),
sa.Column("created_by", sa.String(length=255), nullable=True),
sa.Column("updated_by", sa.String(length=255), nullable=True),
sa.Column("deleted_at", sa.DateTime(timezone=True), nullable=True),
sa.Column("created_at", sa.DateTime(timezone=True), nullable=False),
sa.Column("updated_at", sa.DateTime(timezone=True), nullable=False),
sa.PrimaryKeyConstraint("id", name=op.f("pk_view_definitions")),
sa.UniqueConstraint(
"scope_key",
"definition_key",
name="uq_view_definition_scope_key",
),
)
for column in (
"tenant_id",
"scope_type",
"scope_id",
"scope_key",
"status",
"published_revision_id",
"created_by",
"updated_by",
"deleted_at",
):
op.create_index(
op.f(f"ix_view_definitions_{column}"),
"view_definitions",
[column],
unique=False,
)
op.create_index(
"ix_view_definitions_tenant_status",
"view_definitions",
["tenant_id", "status"],
unique=False,
)
op.create_index(
"ix_view_definitions_scope",
"view_definitions",
["scope_type", "scope_id"],
unique=False,
)
op.create_table(
"view_revisions",
sa.Column("id", sa.String(length=36), nullable=False),
sa.Column("tenant_id", sa.String(length=36), nullable=True),
sa.Column("definition_id", sa.String(length=36), nullable=False),
sa.Column("revision", sa.Integer(), nullable=False),
sa.Column("surface_contract_version", sa.String(length=20), nullable=False),
sa.Column("visible_surface_ids", sa.JSON(), nullable=False),
sa.Column("content_hash", sa.String(length=64), nullable=False),
sa.Column("created_by", sa.String(length=255), nullable=True),
sa.Column("created_at", sa.DateTime(timezone=True), nullable=False),
sa.Column("updated_at", sa.DateTime(timezone=True), nullable=False),
sa.ForeignKeyConstraint(
["definition_id"],
["view_definitions.id"],
name=op.f("fk_view_revisions_definition_id_view_definitions"),
ondelete="CASCADE",
),
sa.PrimaryKeyConstraint("id", name=op.f("pk_view_revisions")),
sa.UniqueConstraint(
"definition_id",
"revision",
name="uq_view_revision_number",
),
)
for column in (
"tenant_id",
"definition_id",
"content_hash",
"created_by",
):
op.create_index(
op.f(f"ix_view_revisions_{column}"),
"view_revisions",
[column],
unique=False,
)
op.create_index(
"ix_view_revisions_definition",
"view_revisions",
["definition_id", "revision"],
unique=False,
)
op.create_index(
"ix_view_revisions_contract",
"view_revisions",
["surface_contract_version"],
unique=False,
)
op.create_table(
"view_assignments",
sa.Column("id", sa.String(length=36), nullable=False),
sa.Column("tenant_id", sa.String(length=36), nullable=True),
sa.Column("scope_type", sa.String(length=20), nullable=False),
sa.Column("scope_id", sa.String(length=255), nullable=True),
sa.Column("target_key", sa.String(length=320), nullable=False),
sa.Column("definition_id", sa.String(length=36), nullable=False),
sa.Column("revision_id", sa.String(length=36), nullable=True),
sa.Column("mode", sa.String(length=20), nullable=False),
sa.Column("priority", sa.Integer(), nullable=False),
sa.Column("is_active", sa.Boolean(), nullable=False),
sa.Column("metadata", sa.JSON(), nullable=False),
sa.Column("created_by", sa.String(length=255), nullable=True),
sa.Column("updated_by", sa.String(length=255), nullable=True),
sa.Column("created_at", sa.DateTime(timezone=True), nullable=False),
sa.Column("updated_at", sa.DateTime(timezone=True), nullable=False),
sa.ForeignKeyConstraint(
["definition_id"],
["view_definitions.id"],
name=op.f("fk_view_assignments_definition_id_view_definitions"),
ondelete="CASCADE",
),
sa.ForeignKeyConstraint(
["revision_id"],
["view_revisions.id"],
name=op.f("fk_view_assignments_revision_id_view_revisions"),
ondelete="SET NULL",
),
sa.PrimaryKeyConstraint("id", name=op.f("pk_view_assignments")),
sa.UniqueConstraint(
"target_key",
"definition_id",
"mode",
name="uq_view_assignment_target_definition_mode",
),
)
for column in (
"tenant_id",
"scope_type",
"scope_id",
"target_key",
"definition_id",
"revision_id",
"mode",
"is_active",
"created_by",
"updated_by",
):
op.create_index(
op.f(f"ix_view_assignments_{column}"),
"view_assignments",
[column],
unique=False,
)
op.create_index(
"ix_view_assignments_tenant_active",
"view_assignments",
["tenant_id", "is_active"],
unique=False,
)
op.create_index(
"ix_view_assignments_target",
"view_assignments",
["scope_type", "scope_id"],
unique=False,
)
op.create_table(
"view_preferences",
sa.Column("id", sa.String(length=36), nullable=False),
sa.Column("tenant_id", sa.String(length=36), nullable=False),
sa.Column("account_id", sa.String(length=255), nullable=False),
sa.Column("selection_kind", sa.String(length=20), nullable=False),
sa.Column("view_id", sa.String(length=36), nullable=True),
sa.Column("created_at", sa.DateTime(timezone=True), nullable=False),
sa.Column("updated_at", sa.DateTime(timezone=True), nullable=False),
sa.ForeignKeyConstraint(
["view_id"],
["view_definitions.id"],
name=op.f("fk_view_preferences_view_id_view_definitions"),
ondelete="SET NULL",
),
sa.PrimaryKeyConstraint("id", name=op.f("pk_view_preferences")),
sa.UniqueConstraint(
"tenant_id",
"account_id",
name="uq_view_preference_tenant_account",
),
)
for column in ("tenant_id", "account_id", "selection_kind", "view_id"):
op.create_index(
op.f(f"ix_view_preferences_{column}"),
"view_preferences",
[column],
unique=False,
)
op.create_index(
"ix_view_preferences_tenant_account",
"view_preferences",
["tenant_id", "account_id"],
unique=False,
)
def downgrade() -> None:
op.drop_table("view_preferences")
op.drop_table("view_assignments")
op.drop_table("view_revisions")
op.drop_table("view_definitions")