Files
Jyotisha/frontend/supabase/migrations/20260718093000_legacy_candidate_protocol_guards.sql
T
2026-07-19 07:20:40 +08:00

72 lines
3.9 KiB
PL/PgSQL

begin;
alter function public.confirm_birth_time_candidate(
uuid, uuid, uuid, time without time zone, jsonb
) rename to confirm_birth_time_candidate_without_protocol_guard;
alter function public.save_guided_birth_time_candidate(
uuid, uuid, uuid, uuid, integer, jsonb
) rename to save_guided_birth_time_candidate_without_protocol_guard;
alter function public.confirm_guided_birth_time_candidate(
uuid, uuid, uuid, time without time zone, uuid, integer, jsonb, jsonb
) rename to confirm_guided_birth_time_candidate_without_protocol_guard;
create function public.confirm_birth_time_candidate(
p_user_id uuid, p_case_id uuid, p_result_id uuid,
p_time time without time zone, p_snapshot jsonb
) returns void language plpgsql security definer set search_path = '' as $$
begin
perform 1 from public.birth_time_rectification_cases
where id = p_case_id and user_id = p_user_id
and journey_protocol = 'legacy-guided-v1' for update;
if not found then raise exception 'birth_time_legacy_protocol_required'; end if;
perform public.confirm_birth_time_candidate_without_protocol_guard(
p_user_id, p_case_id, p_result_id, p_time, p_snapshot
);
end;
$$;
create function public.save_guided_birth_time_candidate(
p_user_id uuid, p_case_id uuid, p_result_id uuid,
p_action_id uuid, p_expected_version integer, p_turn_state jsonb
) returns void language plpgsql security definer set search_path = '' as $$
begin
perform 1 from public.birth_time_rectification_cases
where id = p_case_id and user_id = p_user_id
and journey_protocol = 'legacy-guided-v1' for update;
if not found then raise exception 'birth_time_legacy_protocol_required'; end if;
perform public.save_guided_birth_time_candidate_without_protocol_guard(
p_user_id, p_case_id, p_result_id, p_action_id,
p_expected_version, p_turn_state
);
end;
$$;
create function public.confirm_guided_birth_time_candidate(
p_user_id uuid, p_case_id uuid, p_result_id uuid,
p_time time without time zone, p_action_id uuid,
p_expected_version integer, p_snapshot jsonb, p_turn_state jsonb
) returns void language plpgsql security definer set search_path = '' as $$
begin
perform 1 from public.birth_time_rectification_cases
where id = p_case_id and user_id = p_user_id
and journey_protocol = 'legacy-guided-v1' for update;
if not found then raise exception 'birth_time_legacy_protocol_required'; end if;
perform public.confirm_guided_birth_time_candidate_without_protocol_guard(
p_user_id, p_case_id, p_result_id, p_time, p_action_id,
p_expected_version, p_snapshot, p_turn_state
);
end;
$$;
revoke all on function public.confirm_birth_time_candidate_without_protocol_guard(uuid, uuid, uuid, time without time zone, jsonb) from public, anon, authenticated, service_role;
revoke all on function public.save_guided_birth_time_candidate_without_protocol_guard(uuid, uuid, uuid, uuid, integer, jsonb) from public, anon, authenticated, service_role;
revoke all on function public.confirm_guided_birth_time_candidate_without_protocol_guard(uuid, uuid, uuid, time without time zone, uuid, integer, jsonb, jsonb) from public, anon, authenticated, service_role;
revoke all on function public.confirm_birth_time_candidate(uuid, uuid, uuid, time without time zone, jsonb) from public, anon, authenticated;
revoke all on function public.save_guided_birth_time_candidate(uuid, uuid, uuid, uuid, integer, jsonb) from public, anon, authenticated;
revoke all on function public.confirm_guided_birth_time_candidate(uuid, uuid, uuid, time without time zone, uuid, integer, jsonb, jsonb) from public, anon, authenticated;
grant execute on function public.confirm_birth_time_candidate(uuid, uuid, uuid, time without time zone, jsonb) to service_role;
grant execute on function public.save_guided_birth_time_candidate(uuid, uuid, uuid, uuid, integer, jsonb) to service_role;
grant execute on function public.confirm_guided_birth_time_candidate(uuid, uuid, uuid, time without time zone, uuid, integer, jsonb, jsonb) to service_role;
commit;