Files
MiragenFlow/server/migrations/0012_v1_scope_reservations.sql

27 lines
1.7 KiB
SQL

-- Nullable organization/team scope columns are schema reservations only. V1
-- keeps every object user-scoped and exposes no organization API.
ALTER TABLE balance_accounts ADD COLUMN IF NOT EXISTS organization_id UUID;
ALTER TABLE balance_accounts ADD COLUMN IF NOT EXISTS object_scope TEXT NOT NULL DEFAULT 'user';
ALTER TABLE generation_tasks ADD COLUMN IF NOT EXISTS organization_id UUID;
ALTER TABLE generation_tasks ADD COLUMN IF NOT EXISTS workspace_owner_id UUID;
ALTER TABLE generation_tasks ADD COLUMN IF NOT EXISTS object_scope TEXT NOT NULL DEFAULT 'user';
ALTER TABLE upload_objects ADD COLUMN IF NOT EXISTS organization_id UUID;
ALTER TABLE upload_objects ADD COLUMN IF NOT EXISTS workspace_owner_id UUID;
ALTER TABLE upload_objects ADD COLUMN IF NOT EXISTS object_scope TEXT NOT NULL DEFAULT 'user';
ALTER TABLE assets ADD COLUMN IF NOT EXISTS organization_id UUID;
ALTER TABLE assets ADD COLUMN IF NOT EXISTS workspace_owner_id UUID;
ALTER TABLE assets ADD COLUMN IF NOT EXISTS object_scope TEXT NOT NULL DEFAULT 'user';
ALTER TABLE stored_objects ADD COLUMN IF NOT EXISTS organization_id TEXT;
ALTER TABLE stored_objects ADD COLUMN IF NOT EXISTS workspace_owner_id TEXT;
ALTER TABLE stored_objects ADD COLUMN IF NOT EXISTS object_scope TEXT NOT NULL DEFAULT 'user';
DO $$
DECLARE
table_name TEXT;
BEGIN
FOR table_name IN SELECT unnest(ARRAY['balance_accounts', 'generation_tasks', 'upload_objects', 'assets', 'stored_objects']) LOOP
EXECUTE format('ALTER TABLE %I DROP CONSTRAINT IF EXISTS %I_object_scope_check', table_name, table_name);
EXECUTE format('ALTER TABLE %I ADD CONSTRAINT %I_object_scope_check CHECK (object_scope IN (''user'', ''organization''))', table_name, table_name);
END LOOP;
END $$;