|
@@ -1,59 +1,64 @@
|
|
|
-SELECT
|
|
|
- 'dynamic' as component,
|
|
|
- sqlpage.run_sql('cookie.sql') AS properties
|
|
|
-;
|
|
|
-
|
|
|
-SELECT 'shell' AS component,
|
|
|
- 'dark' AS theme,
|
|
|
- 'Products' AS title
|
|
|
-;
|
|
|
-
|
|
|
-SELECT
|
|
|
- 'dynamic' as component,
|
|
|
- sqlpage.run_sql('nav.sql') AS properties
|
|
|
-;
|
|
|
-
|
|
|
-SELECT
|
|
|
- 'table' AS component,
|
|
|
- TRUE AS search,
|
|
|
- TRUE AS striped_rows,
|
|
|
- TRUE AS small,
|
|
|
- 'Notice' AS markdown
|
|
|
-;
|
|
|
+SET title = 'Products';
|
|
|
+SET products = COALESCE($products, sqlpage.cookie('products'));
|
|
|
|
|
|
DROP TABLE IF EXISTS sqlpage_products;
|
|
|
CREATE TEMPORARY TABLE IF NOT EXISTS sqlpage_products AS (
|
|
|
SELECT
|
|
|
- COALESCE("product", "Products"||'') "Product",
|
|
|
- COALESCE("category", "Categories"||'') "Category",
|
|
|
- COALESCE("group", "Groups"||'') "Group"
|
|
|
-FROM (SELECT
|
|
|
count(DISTINCT p.id) AS "Products",
|
|
|
count(DISTINCT c.id) AS "Categories",
|
|
|
count(DISTINCT g.id) AS "Groups",
|
|
|
- p.name AS "product",
|
|
|
- c.name AS "category",
|
|
|
+ p.name AS product,
|
|
|
+ c.name AS category,
|
|
|
g.name AS "group"
|
|
|
FROM products p
|
|
|
JOIN categories c ON p.category_id = c.id
|
|
|
JOIN groups g ON c.group_id = g.id
|
|
|
-JOIN sqlpage_options op ON op.type = 'product' AND p.name = op.name
|
|
|
-JOIN sqlpage_options oc ON oc.type = 'category' AND c.name = oc.name
|
|
|
-JOIN sqlpage_options og ON og.type = 'group' AND g.name = og.name
|
|
|
WHERE
|
|
|
- COALESCE(op.selected, oc.selected, og.selected, TRUE)
|
|
|
+ (p.name IN (SELECT v
|
|
|
AND
|
|
|
- op.session = sqlpage.cookie('session')
|
|
|
+ (c.name IN (SELECT v
|
|
|
AND
|
|
|
- oc.session = sqlpage.cookie('session')
|
|
|
-AND
|
|
|
- og.session = sqlpage.cookie('session')
|
|
|
-GROUP BY ROLLUP (g.name, c.name, p.name)
|
|
|
-ORDER BY product, category, "group") q
|
|
|
-WHERE q.product IS NOT NULL OR q.group IS NULL
|
|
|
+ (g.name IN (SELECT v
|
|
|
+GROUP BY ROLLUP ("group", category, product)
|
|
|
);
|
|
|
-SELECT * FROM sqlpage_products;
|
|
|
|
|
|
-SELECT
|
|
|
- '
|
|
|
+SET product_options = (
|
|
|
+SELECT
|
|
|
+ json_agg(json_build_object(
|
|
|
+ 'label', value,
|
|
|
+ 'value', value,
|
|
|
+ 'selected', value IN (SELECT v
|
|
|
+ ) ORDER BY value)
|
|
|
+FROM (
|
|
|
+ SELECT v
|
|
|
+ FROM json_array_elements($products::json) j(v)
|
|
|
+ UNION
|
|
|
+ SELECT product
|
|
|
+ FROM sqlpage_products
|
|
|
+) o(value)
|
|
|
+WHERE value IS NOT NULL
|
|
|
+);
|
|
|
+
|
|
|
+SELECT 'dynamic' AS component, sqlpage.run_sql('cookie.sql') AS properties;
|
|
|
+SELECT 'dynamic' AS component, sqlpage.run_sql('theme.sql') AS properties;
|
|
|
+SELECT 'dynamic' AS component, sqlpage.run_sql('nav.sql') AS properties;
|
|
|
+
|
|
|
+SELECT
|
|
|
+ 'table' AS component,
|
|
|
+ TRUE AS search,
|
|
|
+ TRUE AS striped_rows,
|
|
|
+ TRUE AS small,
|
|
|
+ 'Notice' AS markdown
|
|
|
+;
|
|
|
+
|
|
|
+SELECT
|
|
|
+ COALESCE("product", "Products"||'') "Product",
|
|
|
+ COALESCE("category", "Categories"||'') "Category",
|
|
|
+ COALESCE("group", "Groups"||'') "Group"
|
|
|
+FROM sqlpage_products q
|
|
|
+WHERE q.product IS NOT NULL OR q.group IS NULL
|
|
|
+ORDER BY product, category, "group"
|
|
|
+;
|
|
|
+
|
|
|
+SELECT '# No Data' AS "Notice"
|
|
|
WHERE NOT EXISTS(SELECT * FROM sqlpage_products LIMIT 1);
|