More supabase migrations
This commit is contained in:
90
supabase/migrations/20250708150826_remote_schema.sql
Normal file
90
supabase/migrations/20250708150826_remote_schema.sql
Normal file
@@ -0,0 +1,90 @@
|
||||
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$
|
||||
;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user