Files
Compass/backend/supabase/profile_interests.sql

49 lines
1.3 KiB
PL/PgSQL

CREATE TABLE profile_interests
(
id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
profile_id BIGINT NOT NULL REFERENCES profiles (id) ON DELETE CASCADE,
option_id BIGINT NOT NULL REFERENCES interests (id) ON DELETE CASCADE
);
-- Row Level Security
ALTER TABLE profile_interests
ENABLE ROW LEVEL SECURITY;
DROP POLICY IF EXISTS "public read" ON profile_interests;
CREATE POLICY "public read" ON profile_interests
FOR SELECT USING (true);
ALTER TABLE profile_interests
ADD CONSTRAINT profile_interests_option_unique UNIQUE (profile_id, option_id);
CREATE INDEX idx_profile_interests_profile
ON profile_interests (profile_id);
CREATE INDEX idx_profile_interests_interest
ON profile_interests (option_id);
-- Trigger to update /get-profiles search
CREATE OR REPLACE FUNCTION trg_profile_interests_rebuild_search()
RETURNS trigger AS
$$
BEGIN
PERFORM rebuild_profile_search(
COALESCE(NEW.profile_id, OLD.profile_id)
);
RETURN NULL;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER trg_profile_interests_search_ins
AFTER INSERT
ON profile_interests
FOR EACH ROW
EXECUTE FUNCTION trg_profile_interests_rebuild_search();
CREATE TRIGGER trg_profile_interests_search_del
AFTER DELETE
ON profile_interests
FOR EACH ROW
EXECUTE FUNCTION trg_profile_interests_rebuild_search();