drop function if exists "public"."create_event"(p_name text, p_date date, p_email_subject text, p_email_body text, p_sheet_id text, p_name_column integer, p_surname_column integer, p_email_column integer, p_confirmation_column integer); drop function if exists "public"."participant_emailed"(p_participant_id uuid, p_sent boolean); drop function if exists "public"."participants_add_bulk"(p_event uuid, p_names text[], p_surnames text[], p_emails text[]); drop index if exists "public"."participants_event_name_surname_email_uidx"; alter table "public"."events" drop column "confirmation_column"; alter table "public"."events" drop column "email_column"; alter table "public"."events" drop column "name_column"; alter table "public"."events" drop column "surname_column"; alter table "public"."participants" drop column "email_sent"; set check_function_bodies = off; CREATE OR REPLACE FUNCTION public.create_event(p_name text, p_date date) RETURNS events LANGUAGE plpgsql SECURITY DEFINER SET search_path TO 'public' AS $function$ declare v_user uuid := auth.uid(); -- current user v_section uuid; -- their section_id v_evt public.events%rowtype; -- the inserted event begin -- 1) lookup the user's section select section_id into v_section from public.profiles where id = v_user; if v_section is null then raise exception 'no profile/section found for user %', v_user; end if; -- 2) insert into events, filling created_by and section_id insert into public.events ( name, date, created_by, section_id ) values ( p_name, p_date, v_user, v_section ) returning * into v_evt; -- 3) return the full row return v_evt; end; $function$ ; CREATE OR REPLACE FUNCTION public.create_qrcodes_bulk(p_section_id uuid, p_event_id uuid, p_names text[], p_surnames text[], p_emails text[]) RETURNS SETOF participants LANGUAGE plpgsql SECURITY DEFINER SET search_path TO 'public', 'pg_temp' AS $function$BEGIN ----------------------------------------------------------------- -- 1) keep the array-length check exactly as before ----------------------------------------------------------------- IF array_length(p_names, 1) IS DISTINCT FROM array_length(p_surnames,1) OR array_length(p_names, 1) IS DISTINCT FROM array_length(p_emails, 1) THEN RAISE EXCEPTION 'Names, surnames and emails arrays must all be the same length'; END IF; RETURN QUERY INSERT INTO public.participants (section_id, event, name, surname, email) SELECT p_section_id, p_event_id, n, s, e FROM unnest(p_names, p_surnames, p_emails) AS u(n, s, e) RETURNING *; END;$function$ ;