| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- """Add governed DataFlow to n8n Workflow version mappings."""
- from alembic import op
- revision = "20260716_20"
- down_revision = "20260716_10"
- branch_labels = None
- depends_on = None
- def upgrade() -> None:
- op.execute(
- """
- CREATE TABLE IF NOT EXISTS public.dataflow_workflow_versions (
- id UUID PRIMARY KEY,
- dataflow_uid UUID NOT NULL,
- environment VARCHAR(20) NOT NULL
- CHECK (environment IN ('development', 'test', 'production')),
- version_no INTEGER NOT NULL CHECK (version_no > 0),
- n8n_workflow_id VARCHAR(100) NOT NULL,
- n8n_workflow_name VARCHAR(200),
- definition_hash CHAR(64) NOT NULL,
- definition_snapshot JSONB NOT NULL,
- status VARCHAR(30) NOT NULL DEFAULT 'draft'
- CHECK (status IN ('draft', 'validating', 'active',
- 'superseded', 'activation_failed')),
- activation_error VARCHAR(1000),
- activation_correlation_id UUID,
- created_by UUID REFERENCES public.users(id) ON DELETE SET NULL,
- created_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,
- activated_by UUID REFERENCES public.users(id) ON DELETE SET NULL,
- activated_at TIMESTAMPTZ,
- updated_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,
- UNIQUE (dataflow_uid, environment, version_no),
- UNIQUE (dataflow_uid, environment, definition_hash)
- );
- CREATE UNIQUE INDEX IF NOT EXISTS uq_dataflow_workflow_active_environment
- ON public.dataflow_workflow_versions(dataflow_uid, environment)
- WHERE status = 'active';
- CREATE INDEX IF NOT EXISTS idx_workflow_versions_n8n
- ON public.dataflow_workflow_versions(n8n_workflow_id);
- """
- )
- def downgrade() -> None:
- pass
|