Working on user functions
parent
1ae63fbbc7
commit
70da9a6670
@ -0,0 +1,25 @@
|
|||||||
|
const pg = require('../pg')
|
||||||
|
const joinjs = require('join-js').default;
|
||||||
|
const debug = require('debug')('sos:db:user')
|
||||||
|
const mappings = require('../mappings')
|
||||||
|
|
||||||
|
const session = module.exports = {}
|
||||||
|
|
||||||
|
session.create = async (user_uuid, ip_address, user_agent, referer, origin_link_uuid) => {
|
||||||
|
const query = {
|
||||||
|
text: 'select * from login_user_session($1, $2, $3, $4, $5, $6)',
|
||||||
|
values: [
|
||||||
|
user_uuid,
|
||||||
|
'2 hours',
|
||||||
|
ip_address,
|
||||||
|
user_agent,
|
||||||
|
referer,
|
||||||
|
origin_link_uuid
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
debug(query);
|
||||||
|
|
||||||
|
const {rows} = await pg.query(query)
|
||||||
|
return joinjs.map(rows, mappings, 'sessionMap', 'session_');
|
||||||
|
}
|
@ -0,0 +1,53 @@
|
|||||||
|
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$;
|
Loading…
Reference in New Issue