From 9b3df67f3ebb6603d6435ec2397eddbea0726dd7 Mon Sep 17 00:00:00 2001 From: Guillaume Hivert Date: Tue, 3 Sep 2024 02:39:36 +0200 Subject: [PATCH] feat: get occurences by day --- .../backend/src/backend/postgres/queries.gleam | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/apps/backend/src/backend/postgres/queries.gleam b/apps/backend/src/backend/postgres/queries.gleam index ce9ada4..9cd502c 100644 --- a/apps/backend/src/backend/postgres/queries.gleam +++ b/apps/backend/src/backend/postgres/queries.gleam @@ -3,6 +3,7 @@ import backend/data/hex_user.{type HexUser} import backend/error import backend/gleam/context import birl.{type Time} +import birl/duration import gleam/bool import gleam/dict.{type Dict} import gleam/dynamic @@ -102,11 +103,18 @@ pub fn upsert_search_analytics_timeseries( } pub fn get_timeseries_count(db: pgo.Connection) { - "SELECT count(*), date - FROM analytics_timeseries - WHERE date >= now() - INTERVAL '30 day' - GROUP BY date - ORDER BY date desc" + "SELECT + SUM(at.occurences - COALESCE( + (SELECT att.occurences + FROM analytics_timeseries att + WHERE att.date < at.date + AND att.query = at.query), + 0) + ), at.date + FROM analytics_timeseries at + WHERE at.date >= now() - INTERVAL '30 day' + GROUP BY at.date + ORDER BY date DESC" |> pgo.execute(db, [], dynamic.tuple2(dynamic.int, helpers.decode_time)) |> result.map_error(error.DatabaseError) |> result.map(fn(r) { r.rows })