generated from alecodes/base-template
feat: allow to create entries
This commit is contained in:
parent
5dbdd5d84d
commit
81a570cb2e
4 changed files with 238 additions and 92 deletions
|
|
@ -1,67 +1,14 @@
|
|||
SELECT
|
||||
'dynamic' AS component,
|
||||
sqlpage.read_file_as_text('../shared/shell.json') AS properties;
|
||||
|
||||
SELECT
|
||||
'form' AS component,
|
||||
TRUE AS auto_submit;
|
||||
|
||||
SELECT
|
||||
'source_id' AS name,
|
||||
'Source - group' AS label,
|
||||
'select' AS "type",
|
||||
FALSE AS autocomplete,
|
||||
(
|
||||
SELECT
|
||||
jsonb_agg(
|
||||
jsonb_build_object(
|
||||
'label',
|
||||
format('%s - %s', src.name, lg.name),
|
||||
'value',
|
||||
lg.id,
|
||||
'selected',
|
||||
lg.id = $source_id :: int
|
||||
)
|
||||
ORDER BY
|
||||
src.name,
|
||||
lg.name
|
||||
)
|
||||
FROM
|
||||
public.logic_groups AS lg
|
||||
INNER JOIN public.sources AS src ON lg.source_id = src.id
|
||||
) AS options;
|
||||
|
||||
SELECT
|
||||
'form' AS component,
|
||||
'Create' AS validate;
|
||||
|
||||
SELECT
|
||||
'Date' AS label,
|
||||
'date' AS name,
|
||||
'date' AS "type",
|
||||
CURRENT_DATE AS value,
|
||||
6 AS width;
|
||||
|
||||
SELECT
|
||||
'Time' AS label,
|
||||
'time' AS name,
|
||||
'time' AS "type",
|
||||
LOCALTIME(0) AS value,
|
||||
6 AS width;
|
||||
|
||||
SELECT
|
||||
'UID' AS label,
|
||||
'uid' AS name,
|
||||
'SOURCE:LOGIC-GROUP:DESAMBIGUATOR:ATOM' AS placeholder,
|
||||
TRUE AS disabled;
|
||||
|
||||
-- ── Desambiguator Definitions Start ─────────────────────────────────
|
||||
SET
|
||||
input =
|
||||
created_at = CURRENT_TIMESTAMP;
|
||||
|
||||
SET
|
||||
extra_data =
|
||||
SELECT
|
||||
jsonb_build_object(
|
||||
'id',
|
||||
dtp.id,
|
||||
'src_uid',
|
||||
src.uid,
|
||||
'lg_uid',
|
||||
lg.uid,
|
||||
'input_type',
|
||||
dtp.input_type,
|
||||
'placeholder',
|
||||
|
|
@ -72,36 +19,45 @@ FROM
|
|||
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 = $source_id :: int;
|
||||
lg.id = :logic_group_id :: int;
|
||||
|
||||
SELECT
|
||||
'Desambiguator' AS label,
|
||||
'desambiguator' AS name,
|
||||
$input :: jsonb ->> 'input_type' AS "type",
|
||||
$input :: jsonb ->> 'placeholder' AS placeholder,
|
||||
6 AS width
|
||||
WHERE
|
||||
$input :: jsonb ->> 'id' = '1';
|
||||
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;
|
||||
|
||||
SELECT
|
||||
'Desambiguator' AS label,
|
||||
'desambiguator' AS name,
|
||||
$input :: jsonb ->> 'input_type' AS "type",
|
||||
$input :: jsonb ->> 'placeholder' AS placeholder,
|
||||
CURRENT_DATE AS value,
|
||||
6 AS width
|
||||
WHERE
|
||||
$input :: jsonb ->> 'id' = '2';
|
||||
SET
|
||||
uid = format(
|
||||
'%s:%s:%s:%s',
|
||||
$extra_data :: jsonb ->> 'src_uid',
|
||||
$extra_data :: jsonb ->> 'lg_uid',
|
||||
:desambiguator,
|
||||
:atom
|
||||
);
|
||||
|
||||
-- ── Desambiguator Definitions End ───────────────────────────────────
|
||||
SELECT
|
||||
'Atom' AS label,
|
||||
'atom' AS name,
|
||||
'FFF' AS placeholder,
|
||||
6 AS width;
|
||||
|
||||
SELECT
|
||||
'Description' AS label,
|
||||
'text' AS name,
|
||||
'What is this entry about?' AS placeholder,
|
||||
'textarea' AS "type";
|
||||
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;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue