-- Migración: agregar flag p_all a _dash_responses -- UUID especial '00000000-0000-0000-0000-000000000000' = todos los surveys CREATE OR REPLACE FUNCTION public._dash_responses( p_survey_id uuid, p_depto text DEFAULT NULL, p_genero text[] DEFAULT NULL, p_etario text[] DEFAULT NULL, p_modalidad text[] DEFAULT NULL ) RETURNS TABLE(response_id uuid) LANGUAGE sql STABLE SECURITY DEFINER SET search_path = public AS $$ SELECT r.id FROM public.responses r WHERE (p_survey_id = '00000000-0000-0000-0000-000000000000' OR r.survey_id = p_survey_id) AND (p_depto IS NULL OR r.qi_zone = p_depto) AND (p_genero IS NULL OR cardinality(p_genero) = 0 OR EXISTS ( SELECT 1 FROM public.answers a JOIN public.questions q ON q.id = a.question_id WHERE a.response_id = r.id AND q.code = 'A6' AND a.value #>> '{}' = ANY(p_genero) )) AND (p_etario IS NULL OR cardinality(p_etario) = 0 OR r.qi_age_bucket = ANY(p_etario)) AND (p_modalidad IS NULL OR cardinality(p_modalidad) = 0 OR EXISTS ( SELECT 1 FROM public.answers a JOIN public.questions q ON q.id = a.question_id WHERE a.response_id = r.id AND q.code = 'A7' AND a.value #>> '{}' = ANY(p_modalidad) )); $$;