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