From 36c56eaf06dd343118b1bfab283a369387ada015 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 1 May 2026 12:56:27 +0000 Subject: [PATCH] feat: add RegisteredUserStats to ActivityStats, counting via pseudo_user JOIN base_user Agent-Logs-Url: https://github.com/Amund-Fremming/tero.platform/sessions/b2a8084d-3956-446a-a5fe-964cf2e797e6 Co-authored-by: Amund-Fremming <114174150+Amund-Fremming@users.noreply.github.com> --- ...7f636a366f6cad0e5fce08e8fc46358df4410.json | 32 +++++++++++++++++++ src/db/user.rs | 21 ++++++++++-- src/models/user.rs | 8 +++++ 3 files changed, 59 insertions(+), 2 deletions(-) create mode 100644 .sqlx/query-ee6d312bca42c66a9c815aca81d7f636a366f6cad0e5fce08e8fc46358df4410.json diff --git a/.sqlx/query-ee6d312bca42c66a9c815aca81d7f636a366f6cad0e5fce08e8fc46358df4410.json b/.sqlx/query-ee6d312bca42c66a9c815aca81d7f636a366f6cad0e5fce08e8fc46358df4410.json new file mode 100644 index 0000000..02f6091 --- /dev/null +++ b/.sqlx/query-ee6d312bca42c66a9c815aca81d7f636a366f6cad0e5fce08e8fc46358df4410.json @@ -0,0 +1,32 @@ +{ + "db_name": "PostgreSQL", + "query": "\n SELECT\n COUNT(*) FILTER (WHERE b.created_at >= date_trunc('month', CURRENT_DATE)) AS \"this_month_registered!\",\n COUNT(*) FILTER (WHERE b.created_at >= date_trunc('week', CURRENT_DATE)) AS \"this_week_registered!\",\n COUNT(*) FILTER (WHERE b.created_at >= CURRENT_DATE) AS \"todays_registered!\"\n FROM pseudo_user p\n JOIN base_user b ON b.id = p.base_user_id\n ", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "this_month_registered!", + "type_info": "Int8" + }, + { + "ordinal": 1, + "name": "this_week_registered!", + "type_info": "Int8" + }, + { + "ordinal": 2, + "name": "todays_registered!", + "type_info": "Int8" + } + ], + "parameters": { + "Left": [] + }, + "nullable": [ + null, + null, + null + ] + }, + "hash": "ee6d312bca42c66a9c815aca81d7f636a366f6cad0e5fce08e8fc46358df4410" +} diff --git a/src/db/user.rs b/src/db/user.rs index 94c04fc..5afa02f 100644 --- a/src/db/user.rs +++ b/src/db/user.rs @@ -12,7 +12,7 @@ use crate::{ system_log::{LogAction, LogCeverity}, user::{ ActivityStats, Auth0User, AverageUserStats, BaseUser, ListUsersQuery, PatchUserRequest, - RecentUserStats, + RecentUserStats, RegisteredUserStats, }, }, service::system_log_builder::SystemLogBuilder, @@ -376,6 +376,19 @@ pub async fn get_user_activity_stats(pool: &Pool) -> Result= date_trunc('month', CURRENT_DATE)) AS "this_month_registered!", + COUNT(*) FILTER (WHERE b.created_at >= date_trunc('week', CURRENT_DATE)) AS "this_week_registered!", + COUNT(*) FILTER (WHERE b.created_at >= CURRENT_DATE) AS "todays_registered!" + FROM pseudo_user p + JOIN base_user b ON b.id = p.base_user_id + "# + ) + .fetch_one(pool); + let total_game_count_fut = sqlx::query_scalar!("SELECT COUNT(*)::bigint as count FROM game_base").fetch_one(pool); @@ -383,16 +396,19 @@ pub async fn get_user_activity_stats(pool: &Pool) -> Result; + type RegisteredStatsResult = Result; type AverageStatsResult = Result; type StatsResult = Result, sqlx::Error>; - let (recent, average, total_game_count, total_user_count): ( + let (recent, registered, average, total_game_count, total_user_count): ( RecentStatsResult, + RegisteredStatsResult, AverageStatsResult, StatsResult, StatsResult, ) = tokio::join!( recent_fut, + registered_fut, average_fut, total_game_count_fut, total_user_count_fut @@ -402,6 +418,7 @@ pub async fn get_user_activity_stats(pool: &Pool) -> Result