Skip to content

Commit fd46131

Browse files
committed
fix: Adds basic iri validation
1 parent 42b82da commit fd46131

File tree

1 file changed

+29
-20
lines changed

1 file changed

+29
-20
lines changed

app/statistics/prisma.ts

Lines changed: 29 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -186,27 +186,36 @@ export const fetchChartsMetadata = async () => {
186186
layout_subtype?: LayoutDashboard["layout"];
187187
}[]
188188
>`
189-
SELECT
190-
DATE_TRUNC('day', created_at) AS day,
191-
jsonb_agg(
189+
WITH filtered_data AS (
190+
SELECT
191+
DATE_TRUNC('day', created_at) AS day,
192+
jsonb_agg(
193+
COALESCE(
194+
data ->> 'dataSet',
195+
chart_config_obj ->> 'dataSet',
196+
cubes_obj ->> 'iri'
197+
)
198+
) AS iris,
192199
COALESCE(
193-
data ->> 'dataSet',
194-
chart_config_obj ->> 'dataSet',
195-
cubes_obj ->> 'iri'
196-
)
197-
) AS iris,
198-
COALESCE(
199-
jsonb_agg(chart_config_array ->> 'chartType') FILTER (WHERE chart_config_array ->> 'chartType' IS NOT NULL),
200-
jsonb_build_array(chart_config_obj ->> 'chartType')
201-
) AS chart_types,
202-
layout -> 'type' AS layout_type,
203-
layout -> 'layout' AS layout_subtype
204-
FROM config
205-
LEFT JOIN LATERAL jsonb_array_elements(data -> 'chartConfigs') AS chart_config_array ON true
206-
LEFT JOIN LATERAL jsonb_array_elements(chart_config_array -> 'cubes') AS cubes_obj ON true
207-
LEFT JOIN LATERAL (SELECT data -> 'chartConfig' AS chart_config_obj) AS single_config ON true
208-
LEFT JOIN LATERAL (SELECT data -> 'layout' AS layout) AS layout ON true
209-
GROUP BY day, data, chart_config_obj, layout, layout_subtype
200+
jsonb_agg(chart_config_array ->> 'chartType') FILTER (WHERE chart_config_array ->> 'chartType' IS NOT NULL),
201+
jsonb_build_array(chart_config_obj ->> 'chartType')
202+
) AS chart_types,
203+
layout -> 'type' AS layout_type,
204+
layout -> 'layout' AS layout_subtype
205+
FROM config
206+
LEFT JOIN LATERAL jsonb_array_elements(data -> 'chartConfigs') AS chart_config_array ON true
207+
LEFT JOIN LATERAL jsonb_array_elements(chart_config_array -> 'cubes') AS cubes_obj ON true
208+
LEFT JOIN LATERAL (SELECT data -> 'chartConfig' AS chart_config_obj) AS single_config ON true
209+
LEFT JOIN LATERAL (SELECT data -> 'layout' AS layout) AS layout ON true
210+
GROUP BY day, data, chart_config_obj, layout, layout_subtype
211+
)
212+
SELECT day, iris, chart_types, layout_type, layout_subtype
213+
FROM filtered_data
214+
WHERE NOT EXISTS (
215+
SELECT 1
216+
FROM jsonb_array_elements_text(iris) AS iri
217+
WHERE NOT (iri LIKE 'http%://%')
218+
);
210219
`.then((rows) => {
211220
return rows.map((row) => ({
212221
day: row.day,

0 commit comments

Comments
 (0)