PSA/server/migrations/20250512094730_standardize_tenant_columns.cjs
Hermes 284313f908
Some checks are pending
Bidi Control Character Guard / bidi-control-guard (push) Waiting to run
Circular Dependency Check / Check for new circular dependencies (push) Waiting to run
Citus Migration Smoke / Combined migrations on single-node Citus (push) Waiting to run
E2E Fresh Install Tests / fresh-install-e2e (push) Waiting to run
ext-v2 guardrails / Run ext-v2 guard and ESLint (push) Waiting to run
Integration Tests / Check for relevant changes (push) Waiting to run
Integration Tests / ${{ (github.event_name == 'schedule' || github.event.inputs.suite == 'full') && 'Full integration suite' || 'Tier-1 integration subset' }} (push) Blocked by required conditions
Mobile checks / Mobile lint + typecheck (push) Waiting to run
Mobile checks / Mobile unit tests (push) Waiting to run
Mobile checks / Mobile dependency audit (report) (push) Waiting to run
Mobile checks / Mobile reproducibility checks (push) Waiting to run
Secrets guard (env backups) / Ensure no tracked env backup files (push) Waiting to run
Temporal Readiness / fast-readiness (push) Waiting to run
Temporal Readiness / docker-parity (push) Waiting to run
TypeScript Type Check / Nx affected typecheck (push) Waiting to run
Unit Tests / Skipped-test budget (push) Waiting to run
Unit Tests / Nx affected unit tests (push) Waiting to run
Unit Tests / Server unit coverage (informational) (push) Waiting to run
Validate Tenant Management Schema / Check for relevant changes (push) Waiting to run
Validate Tenant Management Schema / Validate Tenant Management Schema (push) Blocked by required conditions
EE Workflows Build Guard / ee-workflows-build-guard (push) Waiting to run
Initial import of AlgaPSA codebase from PSA server
Excluded: .git, node_modules, secrets/, compose.env, assemblyscript tgz

Source: /opt/alga-psa on psa.joliet.tech
2026-06-22 16:12:17 -05:00

690 lines
22 KiB
JavaScript

exports.up = async function(knex) {
// 1. Rename 'tenant_id' columns to 'tenant'
// event_catalog
await knex.raw(`
ALTER TABLE event_catalog RENAME COLUMN tenant_id TO tenant;
`);
// service_types
await knex.raw(`
ALTER TABLE service_types RENAME COLUMN tenant_id TO tenant;
`);
// tenant_companies
await knex.raw(`
ALTER TABLE tenant_companies RENAME COLUMN tenant_id TO tenant;
`);
// tenant_external_entity_mappings
await knex.raw(`
ALTER TABLE tenant_external_entity_mappings RENAME COLUMN tenant_id TO tenant;
`);
// time_period_settings
await knex.raw(`
ALTER TABLE time_period_settings RENAME COLUMN tenant_id TO tenant;
`);
// workflow_event_attachments
await knex.raw(`
ALTER TABLE workflow_event_attachments RENAME COLUMN tenant_id TO tenant;
`);
// workflow_registration_versions
await knex.raw(`
ALTER TABLE workflow_registration_versions RENAME COLUMN tenant_id TO tenant;
`);
// workflow_registrations
await knex.raw(`
ALTER TABLE workflow_registrations RENAME COLUMN tenant_id TO tenant;
`);
// workflow_template_categories
await knex.raw(`
ALTER TABLE workflow_template_categories RENAME COLUMN tenant_id TO tenant;
`);
// workflow_templates
await knex.raw(`
ALTER TABLE workflow_templates RENAME COLUMN tenant_id TO tenant;
`);
// workflow_triggers
await knex.raw(`
ALTER TABLE workflow_triggers RENAME COLUMN tenant_id TO tenant;
`);
// 2. Change the data type of non-UUID tenant columns to UUID
// api_keys (varchar to uuid) - Need to drop and recreate policy
await knex.raw(`
DROP POLICY IF EXISTS tenant_isolation_policy ON api_keys;
`);
await knex.raw(`
ALTER TABLE api_keys ALTER COLUMN tenant TYPE uuid USING tenant::uuid;
`);
await knex.raw(`
CREATE POLICY tenant_isolation_policy ON api_keys
FOR ALL
TO public
USING (tenant = current_setting('app.current_tenant')::uuid);
`);
// audit_logs (varchar to uuid) - Need to drop and recreate policies
await knex.raw(`
DROP POLICY IF EXISTS tenant_isolation_policy ON audit_logs;
DROP POLICY IF EXISTS tenant_isolation_policy_insert ON audit_logs;
`);
await knex.raw(`
ALTER TABLE audit_logs ALTER COLUMN tenant TYPE uuid USING tenant::uuid;
`);
await knex.raw(`
CREATE POLICY tenant_isolation_policy ON audit_logs
FOR ALL
TO public
USING (tenant = current_setting('app.current_tenant')::uuid);
CREATE POLICY tenant_isolation_policy_insert ON audit_logs
FOR INSERT
TO public
WITH CHECK (true);
`);
// invoice_time_entries (varchar to uuid)
await knex.raw(`
ALTER TABLE invoice_time_entries ALTER COLUMN tenant TYPE uuid USING tenant::uuid;
`);
// invoice_usage_records (varchar to uuid)
await knex.raw(`
ALTER TABLE invoice_usage_records ALTER COLUMN tenant TYPE uuid USING tenant::uuid;
`);
// Workflow tables - Need to drop foreign key constraints before changing types
// workflow_action_dependencies - Drop constraints
await knex.raw(`
ALTER TABLE workflow_action_dependencies DROP CONSTRAINT IF EXISTS workflow_action_dependencies_tenant_execution_id_foreign;
`);
await knex.raw(`
ALTER TABLE workflow_action_dependencies DROP CONSTRAINT IF EXISTS workflow_action_dependencies_action_id_foreign;
`);
await knex.raw(`
ALTER TABLE workflow_action_dependencies DROP CONSTRAINT IF EXISTS workflow_action_dependencies_depends_on_id_foreign;
`);
// workflow_action_results - Drop constraints
await knex.raw(`
ALTER TABLE workflow_action_results DROP CONSTRAINT IF EXISTS workflow_action_results_tenant_execution_id_foreign;
`);
// workflow_events - Drop constraints
await knex.raw(`
ALTER TABLE workflow_events DROP CONSTRAINT IF EXISTS workflow_events_tenant_execution_id_foreign;
`);
// workflow_snapshots - Drop constraints
await knex.raw(`
ALTER TABLE workflow_snapshots DROP CONSTRAINT IF EXISTS workflow_snapshots_execution_id_foreign;
`);
// workflow_sync_points - Drop constraints
await knex.raw(`
ALTER TABLE workflow_sync_points DROP CONSTRAINT IF EXISTS workflow_sync_points_tenant_execution_id_foreign;
`);
// workflow_timers - Drop constraints
await knex.raw(`
ALTER TABLE workflow_timers DROP CONSTRAINT IF EXISTS workflow_timers_tenant_execution_id_foreign;
`);
// workflow_event_processing - Drop constraints
await knex.raw(`
ALTER TABLE workflow_event_processing DROP CONSTRAINT IF EXISTS workflow_event_processing_execution_id_foreign;
`);
await knex.raw(`
ALTER TABLE workflow_event_processing DROP CONSTRAINT IF EXISTS workflow_event_processing_event_id_foreign;
`);
// workflow_form_schemas - Drop constraints
await knex.raw(`
ALTER TABLE workflow_form_schemas DROP CONSTRAINT IF EXISTS workflow_form_schemas_form_id_foreign;
`);
// Now change the column types
// workflow_executions (text to uuid) - Change this first since other tables reference it
await knex.raw(`
ALTER TABLE workflow_executions ALTER COLUMN tenant TYPE uuid USING tenant::uuid;
`);
// workflow_action_results (text to uuid)
await knex.raw(`
ALTER TABLE workflow_action_results ALTER COLUMN tenant TYPE uuid USING tenant::uuid;
`);
// workflow_action_dependencies (text to uuid)
await knex.raw(`
ALTER TABLE workflow_action_dependencies ALTER COLUMN tenant TYPE uuid USING tenant::uuid;
`);
// workflow_events (text to uuid)
await knex.raw(`
ALTER TABLE workflow_events ALTER COLUMN tenant TYPE uuid USING tenant::uuid;
`);
// workflow_event_processing (varchar to uuid)
await knex.raw(`
ALTER TABLE workflow_event_processing ALTER COLUMN tenant TYPE uuid USING tenant::uuid;
`);
// workflow_form_definitions (varchar to uuid)
await knex.raw(`
ALTER TABLE workflow_form_definitions ALTER COLUMN tenant TYPE uuid USING tenant::uuid;
`);
// workflow_form_schemas (varchar to uuid)
await knex.raw(`
ALTER TABLE workflow_form_schemas ALTER COLUMN tenant TYPE uuid USING tenant::uuid;
`);
// workflow_snapshots (varchar to uuid)
await knex.raw(`
ALTER TABLE workflow_snapshots ALTER COLUMN tenant TYPE uuid USING tenant::uuid;
`);
// workflow_sync_points (text to uuid)
await knex.raw(`
ALTER TABLE workflow_sync_points ALTER COLUMN tenant TYPE uuid USING tenant::uuid;
`);
// workflow_task_definitions (text to uuid)
await knex.raw(`
ALTER TABLE workflow_task_definitions ALTER COLUMN tenant TYPE uuid USING tenant::uuid;
`);
// workflow_task_history (text to uuid)
await knex.raw(`
ALTER TABLE workflow_task_history ALTER COLUMN tenant TYPE uuid USING tenant::uuid;
`);
// workflow_tasks (text to uuid)
await knex.raw(`
ALTER TABLE workflow_tasks ALTER COLUMN tenant TYPE uuid USING tenant::uuid;
`);
// workflow_timers (text to uuid)
await knex.raw(`
ALTER TABLE workflow_timers ALTER COLUMN tenant TYPE uuid USING tenant::uuid;
`);
// workflow_template_categories (text to uuid) - Need to drop and recreate policy
await knex.raw(`
DROP POLICY IF EXISTS tenant_isolation_policy ON workflow_template_categories;
`);
await knex.raw(`
ALTER TABLE workflow_template_categories ALTER COLUMN tenant TYPE uuid USING tenant::uuid;
`);
await knex.raw(`
CREATE POLICY tenant_isolation_policy ON workflow_template_categories
FOR ALL
TO public
USING (tenant = current_setting('app.current_tenant')::uuid);
`);
// workflow_templates (text to uuid) - Need to drop and recreate policy
await knex.raw(`
DROP POLICY IF EXISTS tenant_isolation_policy ON workflow_templates;
`);
await knex.raw(`
ALTER TABLE workflow_templates ALTER COLUMN tenant TYPE uuid USING tenant::uuid;
`);
await knex.raw(`
CREATE POLICY tenant_isolation_policy ON workflow_templates
FOR ALL
TO public
USING (tenant = current_setting('app.current_tenant')::uuid);
`);
// workflow_registration_versions (text to uuid) - Need to drop and recreate policy
await knex.raw(`
DROP POLICY IF EXISTS tenant_isolation_policy ON workflow_registration_versions;
`);
await knex.raw(`
ALTER TABLE workflow_registration_versions ALTER COLUMN tenant TYPE uuid USING tenant::uuid;
`);
await knex.raw(`
CREATE POLICY tenant_isolation_policy ON workflow_registration_versions
FOR ALL
TO public
USING (tenant = current_setting('app.current_tenant')::uuid);
`);
// workflow_registrations (text to uuid) - Need to drop and recreate policy
await knex.raw(`
DROP POLICY IF EXISTS tenant_isolation_policy ON workflow_registrations;
`);
await knex.raw(`
ALTER TABLE workflow_registrations ALTER COLUMN tenant TYPE uuid USING tenant::uuid;
`);
await knex.raw(`
CREATE POLICY tenant_isolation_policy ON workflow_registrations
FOR ALL
TO public
USING (tenant = current_setting('app.current_tenant')::uuid);
`);
// Now recreate the foreign key constraints with the updated UUID type
// workflow_action_results - Recreate constraints
await knex.raw(`
ALTER TABLE workflow_action_results ADD CONSTRAINT workflow_action_results_tenant_execution_id_foreign
FOREIGN KEY (tenant, execution_id) REFERENCES workflow_executions(tenant, execution_id);
`);
// workflow_action_dependencies - Recreate constraints
await knex.raw(`
ALTER TABLE workflow_action_dependencies ADD CONSTRAINT workflow_action_dependencies_tenant_execution_id_foreign
FOREIGN KEY (tenant, execution_id) REFERENCES workflow_executions(tenant, execution_id);
`);
await knex.raw(`
ALTER TABLE workflow_action_dependencies ADD CONSTRAINT workflow_action_dependencies_action_id_foreign
FOREIGN KEY (action_id) REFERENCES workflow_action_results(result_id);
`);
await knex.raw(`
ALTER TABLE workflow_action_dependencies ADD CONSTRAINT workflow_action_dependencies_depends_on_id_foreign
FOREIGN KEY (depends_on_id) REFERENCES workflow_action_results(result_id);
`);
// workflow_events - Recreate constraints
await knex.raw(`
ALTER TABLE workflow_events ADD CONSTRAINT workflow_events_tenant_execution_id_foreign
FOREIGN KEY (tenant, execution_id) REFERENCES workflow_executions(tenant, execution_id);
`);
// workflow_snapshots - Recreate constraints
await knex.raw(`
ALTER TABLE workflow_snapshots ADD CONSTRAINT workflow_snapshots_execution_id_foreign
FOREIGN KEY (execution_id) REFERENCES workflow_executions(execution_id);
`);
// workflow_sync_points - Recreate constraints
await knex.raw(`
ALTER TABLE workflow_sync_points ADD CONSTRAINT workflow_sync_points_tenant_execution_id_foreign
FOREIGN KEY (tenant, execution_id) REFERENCES workflow_executions(tenant, execution_id);
`);
// workflow_timers - Recreate constraints
await knex.raw(`
ALTER TABLE workflow_timers ADD CONSTRAINT workflow_timers_tenant_execution_id_foreign
FOREIGN KEY (tenant, execution_id) REFERENCES workflow_executions(tenant, execution_id);
`);
// workflow_event_processing - Recreate constraints
await knex.raw(`
ALTER TABLE workflow_event_processing ADD CONSTRAINT workflow_event_processing_execution_id_foreign
FOREIGN KEY (execution_id) REFERENCES workflow_executions(execution_id);
`);
await knex.raw(`
ALTER TABLE workflow_event_processing ADD CONSTRAINT workflow_event_processing_event_id_foreign
FOREIGN KEY (event_id) REFERENCES workflow_events(event_id);
`);
// workflow_form_schemas - Recreate constraints
await knex.raw(`
ALTER TABLE workflow_form_schemas ADD CONSTRAINT workflow_form_schemas_form_id_foreign
FOREIGN KEY (form_id) REFERENCES workflow_form_definitions(form_id);
`);
};
exports.down = async function(knex) {
// 1. Drop foreign key constraints before reverting data types
// workflow_form_schemas - Drop constraints
await knex.raw(`
ALTER TABLE workflow_form_schemas DROP CONSTRAINT IF EXISTS workflow_form_schemas_form_id_foreign;
`);
// workflow_event_processing - Drop constraints
await knex.raw(`
ALTER TABLE workflow_event_processing DROP CONSTRAINT IF EXISTS workflow_event_processing_event_id_foreign;
`);
await knex.raw(`
ALTER TABLE workflow_event_processing DROP CONSTRAINT IF EXISTS workflow_event_processing_execution_id_foreign;
`);
// workflow_snapshots - Drop constraints
await knex.raw(`
ALTER TABLE workflow_snapshots DROP CONSTRAINT IF EXISTS workflow_snapshots_execution_id_foreign;
`);
// workflow_sync_points - Drop constraints
await knex.raw(`
ALTER TABLE workflow_sync_points DROP CONSTRAINT IF EXISTS workflow_sync_points_tenant_execution_id_foreign;
`);
// workflow_timers - Drop constraints
await knex.raw(`
ALTER TABLE workflow_timers DROP CONSTRAINT IF EXISTS workflow_timers_tenant_execution_id_foreign;
`);
// workflow_events - Drop constraints
await knex.raw(`
ALTER TABLE workflow_events DROP CONSTRAINT IF EXISTS workflow_events_tenant_execution_id_foreign;
`);
// workflow_action_dependencies - Drop constraints
await knex.raw(`
ALTER TABLE workflow_action_dependencies DROP CONSTRAINT IF EXISTS workflow_action_dependencies_depends_on_id_foreign;
`);
await knex.raw(`
ALTER TABLE workflow_action_dependencies DROP CONSTRAINT IF EXISTS workflow_action_dependencies_action_id_foreign;
`);
await knex.raw(`
ALTER TABLE workflow_action_dependencies DROP CONSTRAINT IF EXISTS workflow_action_dependencies_tenant_execution_id_foreign;
`);
// workflow_action_results - Drop constraints
await knex.raw(`
ALTER TABLE workflow_action_results DROP CONSTRAINT IF EXISTS workflow_action_results_tenant_execution_id_foreign;
`);
// 2. Revert data type changes (UUID back to original types)
// api_keys (uuid to varchar) - Need to drop and recreate policy
await knex.raw(`
DROP POLICY IF EXISTS tenant_isolation_policy ON api_keys;
`);
await knex.raw(`
ALTER TABLE api_keys ALTER COLUMN tenant TYPE character varying;
`);
await knex.raw(`
CREATE POLICY tenant_isolation_policy ON api_keys
FOR ALL
TO public
USING ((tenant)::text = current_setting('app.current_tenant'::text));
`);
// audit_logs (uuid to varchar) - Need to drop and recreate policies
await knex.raw(`
DROP POLICY IF EXISTS tenant_isolation_policy ON audit_logs;
DROP POLICY IF EXISTS tenant_isolation_policy_insert ON audit_logs;
`);
await knex.raw(`
ALTER TABLE audit_logs ALTER COLUMN tenant TYPE character varying;
`);
await knex.raw(`
CREATE POLICY tenant_isolation_policy ON audit_logs
FOR ALL
TO public
USING ((tenant)::text = current_setting('app.current_tenant'::text));
CREATE POLICY tenant_isolation_policy_insert ON audit_logs
FOR INSERT
TO public
WITH CHECK (true);
`);
// workflow_timers (uuid to text)
await knex.raw(`
ALTER TABLE workflow_timers ALTER COLUMN tenant TYPE text;
`);
// workflow_tasks (uuid to text)
await knex.raw(`
ALTER TABLE workflow_tasks ALTER COLUMN tenant TYPE text;
`);
// workflow_task_history (uuid to text)
await knex.raw(`
ALTER TABLE workflow_task_history ALTER COLUMN tenant TYPE text;
`);
// workflow_task_definitions (uuid to text)
await knex.raw(`
ALTER TABLE workflow_task_definitions ALTER COLUMN tenant TYPE text;
`);
// workflow_sync_points (uuid to text)
await knex.raw(`
ALTER TABLE workflow_sync_points ALTER COLUMN tenant TYPE text;
`);
// workflow_snapshots (uuid to varchar)
await knex.raw(`
ALTER TABLE workflow_snapshots ALTER COLUMN tenant TYPE character varying;
`);
// workflow_form_schemas (uuid to varchar)
await knex.raw(`
ALTER TABLE workflow_form_schemas ALTER COLUMN tenant TYPE character varying;
`);
// workflow_form_definitions (uuid to varchar)
await knex.raw(`
ALTER TABLE workflow_form_definitions ALTER COLUMN tenant TYPE character varying;
`);
// workflow_executions (uuid to text)
await knex.raw(`
ALTER TABLE workflow_executions ALTER COLUMN tenant TYPE text;
`);
// workflow_events (uuid to text)
await knex.raw(`
ALTER TABLE workflow_events ALTER COLUMN tenant TYPE text;
`);
// workflow_event_processing (uuid to varchar)
await knex.raw(`
ALTER TABLE workflow_event_processing ALTER COLUMN tenant TYPE character varying;
`);
// workflow_action_results (uuid to text)
await knex.raw(`
ALTER TABLE workflow_action_results ALTER COLUMN tenant TYPE text;
`);
// workflow_action_dependencies (uuid to text)
await knex.raw(`
ALTER TABLE workflow_action_dependencies ALTER COLUMN tenant TYPE text;
`);
// invoice_usage_records (uuid to varchar)
await knex.raw(`
ALTER TABLE invoice_usage_records ALTER COLUMN tenant TYPE character varying;
`);
// invoice_time_entries (uuid to varchar)
await knex.raw(`
ALTER TABLE invoice_time_entries ALTER COLUMN tenant TYPE character varying;
`);
// 3. Recreate foreign key constraints with original types
// workflow_action_results - Recreate constraints
await knex.raw(`
ALTER TABLE workflow_action_results ADD CONSTRAINT workflow_action_results_tenant_execution_id_foreign
FOREIGN KEY (tenant, execution_id) REFERENCES workflow_executions(tenant, execution_id);
`);
// workflow_action_dependencies - Recreate constraints
await knex.raw(`
ALTER TABLE workflow_action_dependencies ADD CONSTRAINT workflow_action_dependencies_tenant_execution_id_foreign
FOREIGN KEY (tenant, execution_id) REFERENCES workflow_executions(tenant, execution_id);
`);
await knex.raw(`
ALTER TABLE workflow_action_dependencies ADD CONSTRAINT workflow_action_dependencies_action_id_foreign
FOREIGN KEY (action_id) REFERENCES workflow_action_results(result_id);
`);
await knex.raw(`
ALTER TABLE workflow_action_dependencies ADD CONSTRAINT workflow_action_dependencies_depends_on_id_foreign
FOREIGN KEY (depends_on_id) REFERENCES workflow_action_results(result_id);
`);
// workflow_events - Recreate constraints
await knex.raw(`
ALTER TABLE workflow_events ADD CONSTRAINT workflow_events_tenant_execution_id_foreign
FOREIGN KEY (tenant, execution_id) REFERENCES workflow_executions(tenant, execution_id);
`);
// workflow_snapshots - Recreate constraints
await knex.raw(`
ALTER TABLE workflow_snapshots ADD CONSTRAINT workflow_snapshots_execution_id_foreign
FOREIGN KEY (execution_id) REFERENCES workflow_executions(execution_id);
`);
// workflow_timers - Recreate constraints
await knex.raw(`
ALTER TABLE workflow_timers ADD CONSTRAINT workflow_timers_tenant_execution_id_foreign
FOREIGN KEY (tenant, execution_id) REFERENCES workflow_executions(tenant, execution_id);
`);
// workflow_event_processing - Recreate constraints
await knex.raw(`
ALTER TABLE workflow_event_processing ADD CONSTRAINT workflow_event_processing_execution_id_foreign
FOREIGN KEY (execution_id) REFERENCES workflow_executions(execution_id);
`);
await knex.raw(`
ALTER TABLE workflow_event_processing ADD CONSTRAINT workflow_event_processing_event_id_foreign
FOREIGN KEY (event_id) REFERENCES workflow_events(event_id);
`);
// workflow_form_schemas - Recreate constraints
await knex.raw(`
ALTER TABLE workflow_form_schemas ADD CONSTRAINT workflow_form_schemas_form_id_foreign
FOREIGN KEY (form_id) REFERENCES workflow_form_definitions(form_id);
`);
// 4. Revert column name changes ('tenant' back to 'tenant_id')
// workflow_triggers
await knex.raw(`
ALTER TABLE workflow_triggers RENAME COLUMN tenant TO tenant_id;
`);
// workflow_templates
await knex.raw(`
ALTER TABLE workflow_templates RENAME COLUMN tenant TO tenant_id;
`);
// workflow_template_categories - Need to drop and recreate policy
await knex.raw(`
DROP POLICY IF EXISTS tenant_isolation_policy ON workflow_template_categories;
`);
await knex.raw(`
ALTER TABLE workflow_template_categories RENAME COLUMN tenant TO tenant_id;
`);
await knex.raw(`
CREATE POLICY tenant_isolation_policy ON workflow_template_categories
FOR ALL
TO public
USING ((tenant_id)::text = current_setting('app.current_tenant'::text));
`);
// workflow_templates - Need to drop and recreate policy
await knex.raw(`
DROP POLICY IF EXISTS tenant_isolation_policy ON workflow_templates;
`);
await knex.raw(`
ALTER TABLE workflow_templates RENAME COLUMN tenant TO tenant_id;
`);
await knex.raw(`
CREATE POLICY tenant_isolation_policy ON workflow_templates
FOR ALL
TO public
USING ((tenant_id)::text = current_setting('app.current_tenant'::text));
`);
// workflow_registration_versions - Need to drop and recreate policy
await knex.raw(`
DROP POLICY IF EXISTS tenant_isolation_policy ON workflow_registration_versions;
`);
await knex.raw(`
ALTER TABLE workflow_registration_versions RENAME COLUMN tenant TO tenant_id;
`);
await knex.raw(`
CREATE POLICY tenant_isolation_policy ON workflow_registration_versions
FOR ALL
TO public
USING ((tenant_id)::text = current_setting('app.current_tenant'::text));
`);
// workflow_registrations - Need to drop and recreate policy
await knex.raw(`
DROP POLICY IF EXISTS tenant_isolation_policy ON workflow_registrations;
`);
await knex.raw(`
ALTER TABLE workflow_registrations RENAME COLUMN tenant TO tenant_id;
`);
await knex.raw(`
CREATE POLICY tenant_isolation_policy ON workflow_registrations
FOR ALL
TO public
USING ((tenant_id)::text = current_setting('app.current_tenant'::text));
`);
// time_period_settings
await knex.raw(`
ALTER TABLE time_period_settings RENAME COLUMN tenant TO tenant_id;
`);
// tenant_external_entity_mappings
await knex.raw(`
ALTER TABLE tenant_external_entity_mappings RENAME COLUMN tenant TO tenant_id;
`);
// tenant_companies
await knex.raw(`
ALTER TABLE tenant_companies RENAME COLUMN tenant TO tenant_id;
`);
// service_types
await knex.raw(`
ALTER TABLE service_types RENAME COLUMN tenant TO tenant_id;
`);
// event_catalog
await knex.raw(`
ALTER TABLE event_catalog RENAME COLUMN tenant TO tenant_id;
`);
};