buster/apps/api/migrations/2025-01-17-182615_user_info.../up.sql

38 lines
982 B
PL/PgSQL

-- Your SQL goes here
CREATE OR REPLACE FUNCTION update_user_org_attributes()
RETURNS TRIGGER AS $$
BEGIN
UPDATE public.users
SET attributes = jsonb_set(
jsonb_set(
COALESCE(attributes, '{}'::jsonb),
'{organization_id}',
to_jsonb(NEW.organization_id)
),
'{organization_role}',
to_jsonb(NEW.role)
)
WHERE id = NEW.user_id;
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER sync_user_org_attributes
AFTER INSERT OR UPDATE ON users_to_organizations
FOR EACH ROW
EXECUTE FUNCTION update_user_org_attributes();
-- Update existing records
UPDATE public.users u
SET attributes = jsonb_set(
jsonb_set(
COALESCE(attributes, '{}'::jsonb),
'{organization_id}',
to_jsonb(uto.organization_id)
),
'{organization_role}',
to_jsonb(uto.role)
)
FROM users_to_organizations uto
WHERE u.id = uto.user_id;