From fff2bc3b3a35a911b59c6cd5919901d463a3c149 Mon Sep 17 00:00:00 2001 From: aleidk Date: Fri, 7 Feb 2025 18:27:11 -0300 Subject: [PATCH 1/2] fix: allow to select deseambiguator type in source form --- src/app/entries/create.sql | 6 ++++-- src/app/logic_groups/index.sql | 1 - src/app/sources/create.sql | 10 +++++----- src/app/sources/index.sql | 23 +++++++++++++++++++++-- src/shared/shell.json | 24 +++++++++--------------- 5 files changed, 39 insertions(+), 25 deletions(-) diff --git a/src/app/entries/create.sql b/src/app/entries/create.sql index 18c1d9b..4701f2d 100644 --- a/src/app/entries/create.sql +++ b/src/app/entries/create.sql @@ -53,7 +53,7 @@ SET :date, :time, :og_desambiguator, - $extra_data :: jsonb ->> 'lg_uid' + :lg_id ); INSERT INTO @@ -71,5 +71,7 @@ VALUES :text, :lg_id :: int, :date :: date + :time :: time - ) RETURNING 'redirect' AS component, + ) +RETURNING + 'redirect' AS component, $return_link AS link; diff --git a/src/app/logic_groups/index.sql b/src/app/logic_groups/index.sql index feb95dd..46531b4 100644 --- a/src/app/logic_groups/index.sql +++ b/src/app/logic_groups/index.sql @@ -16,7 +16,6 @@ SELECT 'Source' AS label, 'select' AS TYPE, TRUE AS required, - TRUE AS searchable, 'Select...' AS empty_option, ( SELECT diff --git a/src/app/sources/create.sql b/src/app/sources/create.sql index cf0f0f8..401374f 100644 --- a/src/app/sources/create.sql +++ b/src/app/sources/create.sql @@ -1,7 +1,7 @@ INSERT INTO - public.sources(name, uid, uri) + public.sources(name, uid, uri, desambiguator_type_id) VALUES - (:name, :uid, :uri) -RETURNING 'redirect' AS component, 'index.sql' AS link -; - + (:name, :uid, :uri, :desambiguator_type_id :: int) +RETURNING + 'redirect' AS component, + 'index.sql' AS link; diff --git a/src/app/sources/index.sql b/src/app/sources/index.sql index 2c763c5..d75a025 100644 --- a/src/app/sources/index.sql +++ b/src/app/sources/index.sql @@ -25,6 +25,19 @@ SELECT 1 AS minlength, TRUE AS required; +SELECT + 'desambiguator_type_id' AS name, + 'Deseambiguator Type' AS label, + 'select' AS TYPE, + TRUE AS required, + 'Select...' AS empty_option, + ( + SELECT + jsonb_agg(jsonb_build_object('label', name, 'value', id)) + FROM + public.desambiguator_types + ) AS options; + SELECT 'uri' AS name, 'URI' AS label; @@ -38,6 +51,12 @@ SELECT TRUE AS search; SELECT - * + src.id, + src.name, + src.uid, + dts.name AS "Deseambiguator Type", + src.uri, + to_char(src.created_at, 'YYYY-MM-DD HH12:MI:SS TZ') AS "Created At" FROM - public.sources; + public.sources AS src + INNER JOIN public.desambiguator_types AS dts ON src.desambiguator_type_id = dts.id; diff --git a/src/shared/shell.json b/src/shared/shell.json index b58e301..de849df 100644 --- a/src/shared/shell.json +++ b/src/shared/shell.json @@ -7,22 +7,16 @@ "theme": "dark", "css": "/style.css", "menu_item": [ - { "link": "index.sql", "title": "Home" }, + { "icon": "home", "link": "/", "title": "Home" }, { - "title": "Dependencies", - "icon": "brand-stackshare", - "submenu": [ - { - "link": "/logic_groups/index.sql", - "title": "Logic Groups", - "icon": "folder" - }, - { - "link": "/sources/index.sql", - "title": "Sources", - "icon": "external-link" - } - ] + "link": "/logic_groups/index.sql", + "title": "Logic Groups", + "icon": "folder" + }, + { + "link": "/sources/index.sql", + "title": "Sources", + "icon": "external-link" } ] } From 6288969c4d29377fea6e095bf0f4d59146ff1559 Mon Sep 17 00:00:00 2001 From: aleidk Date: Fri, 7 Feb 2025 19:13:44 -0300 Subject: [PATCH 2/2] feat: add full text search to entries --- src/app/index.sql | 9 ++++--- ...50207213321_add_text_search_to_entries.sql | 27 +++++++++++++++++++ 2 files changed, 33 insertions(+), 3 deletions(-) create mode 100644 src/db/migrations/20250207213321_add_text_search_to_entries.sql diff --git a/src/app/index.sql b/src/app/index.sql index 0d2c9e8..0a592e5 100644 --- a/src/app/index.sql +++ b/src/app/index.sql @@ -4,7 +4,6 @@ SELECT SELECT 'form' AS component, - 'entries/search.sql' AS "action", 'Entries' AS title, '' AS validate, 'GET' AS method; @@ -13,6 +12,7 @@ SELECT 'query' AS name, '' AS label, 'Search query...' AS placeholder, + $query as value, 10 AS width, TRUE AS autofocus; @@ -20,10 +20,11 @@ SELECT 'search' AS name, '' AS label, 'Search' AS value, - 2 AS width, 'btn btn-info' AS class, + 2 AS width, 'submit' AS "type"; + SELECT 'new' AS name, '' AS label, @@ -47,7 +48,9 @@ SELECT text AS description FROM public.entries +WHERE + ($query IS NULL OR search_vector @@ to_tsquery('es_en', $query)) ORDER BY created_at LIMIT - 10; + 30; diff --git a/src/db/migrations/20250207213321_add_text_search_to_entries.sql b/src/db/migrations/20250207213321_add_text_search_to_entries.sql new file mode 100644 index 0000000..3697826 --- /dev/null +++ b/src/db/migrations/20250207213321_add_text_search_to_entries.sql @@ -0,0 +1,27 @@ +-- migrate:up +CREATE TEXT SEARCH CONFIGURATION es_en (COPY = pg_catalog.english); + +ALTER TEXT SEARCH CONFIGURATION es_en ALTER MAPPING FOR asciiword, +asciihword, +hword_asciipart, +word, +hword, +hword_part WITH spanish_stem, +english_stem; + +ALTER TABLE + public.entries +ADD + COLUMN search_vector tsvector GENERATED ALWAYS AS ( + to_tsvector( + 'es_en', + coalesce(uid, '') || ' ' || coalesce(text, '') + ) + ) STORED; + +CREATE INDEX entry_full_text_search ON public.entries USING gin (search_vector); + +-- migrate:down +DROP INDEX IF EXISTS entry_full_text_search; + +DROP TEXT SEARCH CONFIGURATION IF EXISTS es_en;