From 299f4fa7ec5e90823d0e3e40d968e208513036dd Mon Sep 17 00:00:00 2001 From: Bhunter <180028024+bhunter234@users.noreply.github.com> Date: Sun, 12 Jan 2025 17:37:23 +0100 Subject: [PATCH] refactor: improve SQL query for uploads statistics with correct date handling --- pkg/services/upload.go | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/pkg/services/upload.go b/pkg/services/upload.go index de0922f5..bbf78e8f 100644 --- a/pkg/services/upload.go +++ b/pkg/services/upload.go @@ -52,16 +52,20 @@ func (a *apiService) UploadsStats(ctx context.Context, params api.UploadsStatsPa var stats []api.UploadStats err := a.db.Raw(` SELECT - dates.upload_date::date AS upload_date, - COALESCE(SUM(files.size), 0)::bigint AS total_uploaded + dates.upload_date::date AS upload_date, + COALESCE(SUM(files.size), 0)::bigint AS total_uploaded FROM - generate_series(CURRENT_DATE - INTERVAL '1 day' * @days, CURRENT_DATE, '1 day') AS dates(upload_date) + generate_series( + (CURRENT_TIMESTAMP AT TIME ZONE 'UTC')::date - INTERVAL '1 day' * @days, + (CURRENT_TIMESTAMP AT TIME ZONE 'UTC')::date, + '1 day' + ) AS dates(upload_date) LEFT JOIN - teldrive.files AS files + teldrive.files AS files ON - dates.upload_date = DATE_TRUNC('day', files.created_at) - WHERE - dates.upload_date >= CURRENT_DATE - INTERVAL '1 day' * @days and (files.type='file' or files.type is null) and (files.user_id=@userId or files.user_id is null) + dates.upload_date = DATE_TRUNC('day', files.created_at)::date + AND files.type = 'file' + AND files.user_id = @userId GROUP BY dates.upload_date ORDER BY