Spaces:
Sleeping
Sleeping
| -- fix_profile_embeddings_trigger.sql | |
| -- Run this in your Supabase SQL Editor to fully resolve the "j_emb" error! | |
| -- 1. Redefine the function used by the trigger that refreshes recommendations | |
| -- The error "record j_emb has no field experience" was likely deeply cached in this logic | |
| CREATE OR REPLACE FUNCTION public.trg_refresh_recommendations_for_user() | |
| RETURNS trigger | |
| LANGUAGE plpgsql | |
| AS $function$ | |
| DECLARE | |
| j_id uuid; | |
| match_res json; | |
| BEGIN | |
| -- First clear out old recommendations for this user | |
| DELETE FROM public.job_recommendations WHERE user_id = NEW.id; | |
| -- Iterate through all existing job embeddings | |
| FOR j_id IN SELECT job_id FROM public.job_embeddings LOOP | |
| -- Call the fixed match_profile_job function | |
| match_res := public.match_profile_job(NEW.id, j_id); | |
| -- Only insert if there's an actual match > 0 | |
| IF (match_res->>'match_score')::int > 0 THEN | |
| INSERT INTO public.job_recommendations ( | |
| user_id, job_id, match_score, skills_match, technical_skills_match, | |
| work_experience_match, education_match, certifications_match, project_match | |
| ) VALUES ( | |
| NEW.id, j_id, | |
| (match_res->>'match_score')::int, | |
| (match_res->>'skills_match')::int, | |
| (match_res->>'technical_skills_match')::int, | |
| (match_res->>'work_experience_match')::int, | |
| (match_res->>'education_match')::int, | |
| (match_res->>'certifications_match')::int, | |
| (match_res->>'project_match')::int | |
| ); | |
| END IF; | |
| END LOOP; | |
| RETURN NEW; | |
| END; | |
| $function$; | |
| -- 2. Drop the redundant webhook trigger since you only need the recommendation refresh | |
| -- Having both might cause race conditions or unnecessary webhooks | |
| DROP TRIGGER IF EXISTS on_profile_embedding_upsert ON public.profile_embeddings; | |
| -- 3. Ensure the embedding refresh trigger is properly attached | |
| DROP TRIGGER IF EXISTS on_profile_embedding_change ON public.profile_embeddings; | |
| CREATE TRIGGER on_profile_embedding_change | |
| AFTER INSERT OR UPDATE ON public.profile_embeddings | |
| FOR EACH ROW | |
| EXECUTE FUNCTION trg_refresh_recommendations_for_user(); | |