feat: create entry form

This commit is contained in:
Alexander Navarro 2025-02-07 13:32:59 -03:00
parent 9b5d43e9ba
commit 5dbdd5d84d
8 changed files with 174 additions and 5 deletions

107
src/app/entries/create.sql Normal file
View file

@ -0,0 +1,107 @@
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 =
SELECT
jsonb_build_object(
'id',
dtp.id,
'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 = $source_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';
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';
-- ── 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";

View file

@ -4,17 +4,34 @@ SELECT
SELECT
'form' AS component,
'entries' AS "action",
'entries/search.sql' AS "action",
'Entries' AS title,
'Search' AS validate,
'' AS validate,
'GET' AS method;
SELECT
'query' AS name,
'' AS label,
'Search query...' AS placeholder,
10 AS width,
TRUE AS autofocus;
SELECT
'search' AS name,
'' AS label,
'Search' AS value,
2 AS width,
'btn btn-info' AS class,
'submit' AS "type";
SELECT
'new' AS name,
'' AS label,
'New' AS value,
'entries/create.sql' AS "formaction",
'btn btn-success' AS class,
'submit' AS "type";
SELECT
'list' AS component,
'Lastes entries' AS title,

View file

@ -0,0 +1,35 @@
-- migrate:up
CREATE TABLE public.desambiguator_types(
id serial PRIMARY KEY,
name varchar(15) NOT NULL,
input_type varchar(15) NOT NULL,
placeholder varchar(30),
created_at timestamp WITH time zone DEFAULT CURRENT_TIMESTAMP NOT NULL,
updated_at timestamp WITH time zone,
deleted_at timestamp WITH time zone
);
INSERT INTO
public.desambiguator_types(name, input_type, placeholder)
VALUES
('Text', 'text', 'XXX-XXX-XXX'),
('Date', 'date', '2020-12-31');
ALTER TABLE
public.sources
ADD
COLUMN desambiguator_type_id int NOT NULL DEFAULT 1;
ALTER TABLE
public.sources
ADD
CONSTRAINT fk_desambiguator_type FOREIGN KEY (desambiguator_type_id) REFERENCES public.desambiguator_types(id);
-- migrate:down
ALTER TABLE
public.sources DROP CONSTRAINT fk_desambiguator_type;
ALTER TABLE
public.sources DROP COLUMN desambiguator_type_id;
DROP TABLE public.desambiguator_types;

View file

@ -5,7 +5,7 @@
"layout": "boxed",
"sidebar": true,
"theme": "dark",
"css": "style.css",
"css": "/style.css",
"menu_item": [
{ "link": "index.sql", "title": "Home" },
{