index/src/app/entries/create.sql

63 lines
1.3 KiB
SQL

SET
created_at = CURRENT_TIMESTAMP;
SET
extra_data =
SELECT
jsonb_build_object(
'src_uid',
src.uid,
'lg_uid',
lg.uid,
'input_type',
dtp.input_type,
'placeholder',
dtp.placeholder
) AS obj
FROM
public.desambiguator_types dtp
INNER JOIN public.sources AS src ON src.desambiguator_type_id = dtp.id
INNER JOIN public.logic_groups AS lg ON lg.source_id = src.id
WHERE
lg.id = :logic_group_id :: int;
SET
desambiguator = CASE
$extra_data :: jsonb ->> 'input_type'
WHEN 'date' THEN to_hex(
-- Days since 1970-01-01 in hex
EXTRACT(
EPOCH
FROM
NOW()
) :: bigint
)
ELSE :desambiguator
END;
SET
uid = format(
'%s:%s:%s:%s',
$extra_data :: jsonb ->> 'src_uid',
$extra_data :: jsonb ->> 'lg_uid',
:desambiguator,
:atom
);
INSERT INTO
public.entries(
uid,
desambiguator,
text,
logic_group_id,
created_at
)
VALUES
(
$uid,
:desambiguator,
:text,
:logic_group_id :: int,
:date :: date + :time :: time
) RETURNING 'redirect' AS component,
'form.sql' AS link;