You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

54 lines
1.4 KiB
PL/PgSQL

create or replace function public.register_user(_email text, _password_hash text)
returns setof public.user
language plpgsql
as $function$
declare
_user_uuid uuid;
begin
insert into "user" (
user_email,
user_password_hash
) values (
_email,
_password_hash
) returning user_uuid into _user_uuid;
return query select * from "user" where user_uuid = _user_uuid;
end; $function$;
create or replace function public.validate_session(_session_uuid uuid)
returns setof public.v_session
language plpgsql
as $function$
begin
return query select * from v_session
where session_uuid = _session_uuid
and session_time_last_active + session_timeout_length < now();
end; $function$;
create or replace function public.login_user_session(_user_uuid uuid, _timeout_length interval, _ip_addr varchar(50), _user_agent varchar(500), _referer varchar(500), _link uuid)
returns setof public.v_session
language plpgsql
as $function$
declare
_session_uuid uuid;
begin
insert into "session" (
session_user_uuid,
session_timeout_length,
session_ip_address,
session_user_agent,
session_referer,
session_originating_link
) values (
_user_uuid,
_timeout_length,
_ip_addr,
_user_agent,
_referer,
_link
) returning session_uuid into _session_uuid;
return query select * from public.validate_session(_session_uuid);
end; $function$;