-- VR-P32b/VR-P32d · KWP inbound capability — RLS companion artifact. -- -- Forward-only. Inverse per table: -- REVOKE SELECT, INSERT, UPDATE, DELETE ON "" FROM hivegrid_app, hivegrid_worker; -- DROP POLICY IF EXISTS "_tenant_isolation" ON ""; -- ALTER TABLE "" NO FORCE ROW LEVEL SECURITY; -- ALTER TABLE "" DISABLE ROW LEVEL SECURITY; DO $$ DECLARE tbl text; BEGIN FOREACH tbl IN ARRAY ARRAY[ 'KwpApiContractSnapshot', 'KwpCapabilityState', 'KwpErrorReport', 'KwpProjectRouting', 'KwpMaterialPosition' ] LOOP EXECUTE format('ALTER TABLE %I ENABLE ROW LEVEL SECURITY;', tbl); EXECUTE format('ALTER TABLE %I FORCE ROW LEVEL SECURITY;', tbl); IF NOT EXISTS ( SELECT 1 FROM pg_policies WHERE schemaname = current_schema() AND tablename = tbl AND policyname = tbl || '_tenant_isolation' ) THEN EXECUTE format( 'CREATE POLICY %I ON %I USING ("tenantId" = current_setting(''app.tenant_id'', true)) WITH CHECK ("tenantId" = current_setting(''app.tenant_id'', true));', tbl || '_tenant_isolation', tbl ); END IF; EXECUTE format('GRANT SELECT, INSERT, UPDATE, DELETE ON %I TO hivegrid_app, hivegrid_worker;', tbl); END LOOP; END $$;