|
@@ -1,2 +1,69 @@
|
|
|
+SELECT 'dynamic' AS component, sqlpage.run_sql('sqlpage/theme.sql') AS properties;
|
|
|
+SELECT 'dynamic' AS component, sqlpage.run_sql('sqlpage/Style.sql') AS properties;
|
|
|
+SET filter_config = '[
|
|
|
+ {"name": "type", "type": "select"},
|
|
|
+ {"name": "expired", "label": "Show Expired",
|
|
|
+ "type": "checkbox", "value": "true"
|
|
|
+ },
|
|
|
+ {"name": "used", "label": "Show Used"}
|
|
|
+]';
|
|
|
+SET filter_options = (
|
|
|
+ SELECT json_agg(json_build_object('name', k, 'options', o))
|
|
|
+ FROM (
|
|
|
+ SELECT o.k, json_agg(
|
|
|
+ json_build_object('label', v, 'value', v, 'selected', c == 1)
|
|
|
+ ORDER BY v)
|
|
|
+ FROM (
|
|
|
+ SELECT 'store' AS k, DISTINCT store AS v, count(DISTINCT store) AS c FROM code_detail
|
|
|
+ UNION
|
|
|
+ SELECT 'type' AS k, DISTINCT type AS v, count(DISTINCT type) AS c FROM code_detail
|
|
|
+ ) AS o
|
|
|
+ WHERE v IS NOT NULL
|
|
|
+ GROUP BY o.k
|
|
|
+ ) q(k, o)
|
|
|
+);
|
|
|
+SELECT 'form' AS component
|
|
|
+, '/code.sql' AS action
|
|
|
+, 'Update' AS validate
|
|
|
+, $tabler_color AS validate_color
|
|
|
+, 'get' AS method
|
|
|
+;
|
|
|
+SELECT j.name
|
|
|
+
|
|
|
+, j.label
|
|
|
+, COALESCE(c.type, j.type) AS type
|
|
|
+, j.dropdown AS dropdown
|
|
|
+, j.multiple
|
|
|
+, COALESCE(c.width, j.width) AS width
|
|
|
+, o.j
|
|
|
+, COALESCE(j.value, v.value) AS value
|
|
|
+, CASE j.type
|
|
|
+ WHEN 'checkbox' THEN v.value::bool
|
|
|
+ ELSE NULL
|
|
|
+ END AS checked
|
|
|
+, j.formaction
|
|
|
+FROM json_populate_recordset(null::sqlpage_filter_type, sqlpage.read_file_as_text('code/json/filters.json')::json) j
|
|
|
+LEFT JOIN json_populate_recordset(null::sqlpage_filter_type, $filter_config::json) c
|
|
|
+USING (name)
|
|
|
+LEFT JOIN json_array_elements($filter_options::json) o(j)
|
|
|
+ON (o.j
|
|
|
+LEFT JOIN json_each_text(sqlpage.variables()::json) v(key, value)
|
|
|
+ON v.key = j.name
|
|
|
+;
|
|
|
SELECT 'table' AS component;
|
|
|
-SELECT hash, content, created FROM code;
|
|
|
+SELECT hash, content, created
|
|
|
+FROM code c
|
|
|
+LEFT JOIN code_detail cd
|
|
|
+ON c.hash = cd.hash
|
|
|
+WHERE (
|
|
|
+ cd.expiry IS NULL OR COALESCE($expired, 'false') == 'true' OR cd.expiry::date < datetime(CURRENT_TIMESTAMP, 'localtime')::date
|
|
|
+) AND (
|
|
|
+ cd.used IS NULL OR COALESCE($used, 'false') == 'true' OR NOT cd.used
|
|
|
+) AND (
|
|
|
+ cd.type IS NULL OR CASE COALESCE($type, '')
|
|
|
+ WHEN '' THEN TRUE
|
|
|
+ ELSE COALESCE($type, '') = cd.type
|
|
|
+ END
|
|
|
+)
|
|
|
+ORDER BY expiry, type, hash NULLS FIRST
|
|
|
+;
|