db/7a4d728_to_c19a46b.sql
2023-07-17 14:14:15 -04:00

60 lines
1.3 KiB
PL/PgSQL

drop function if exists "public"."hashed_text_string"(hashed hashed_text);
drop type "public"."email";
drop type "public"."hashed_text";
set check_function_bodies = off;
CREATE OR REPLACE FUNCTION public.email_of_string(val text)
RETURNS email
LANGUAGE sql
AS $function$select row(val);$function$
;
CREATE OR REPLACE FUNCTION public.email_to_string(val email)
RETURNS text
LANGUAGE sql
AS $function$select (val.str);$function$
;
CREATE OR REPLACE FUNCTION public.hashed_text_of_string(val text)
RETURNS hashed_text
LANGUAGE sql
AS $function$select row(val);$function$
;
CREATE OR REPLACE FUNCTION public.hashed_text_to_string(val hashed_text)
RETURNS text
LANGUAGE sql
AS $function$select (val.str);$function$
;
create type "public"."email" as ("str" text);
CREATE OR REPLACE FUNCTION public.hash_text(plain text)
RETURNS hashed_text
LANGUAGE plpgsql
IMMUTABLE
AS $function$
begin
return hashed_text_of_string(crypt(plain, gen_salt('bf')));
end;
$function$
;
create type "public"."hashed_text" as ("str" text);
CREATE OR REPLACE FUNCTION public.hashed_text_matches(plain text, hashed hashed_text)
RETURNS boolean
LANGUAGE plpgsql
IMMUTABLE
AS $function$
begin
return hashed_text_to_string(hashed) = crypt(plain, hashed_text_to_string(hashed));
end;
$function$
;