@@ -58,11 +58,13 @@ pub async fn get_quest_participants_handler(
5858 doc! { "$match" : { "task_id" : { "$in" : & task_ids } } } ,
5959 doc! { "$group" : {
6060 "_id" : "$address" ,
61- "task_ids" : { "$addToSet" : "$task_id" }
61+ "task_ids" : { "$addToSet" : "$task_id" } ,
62+ "max_timestamp" : { "$max" : "$timestamp" }
6263 } } ,
6364 doc! { "$project" : {
6465 "address" : "$_id" ,
65- "tasks_completed_count" : { "$size" : "$task_ids" }
66+ "tasks_completed_count" : { "$size" : "$task_ids" } ,
67+ "quest_completion_timestamp" : "$max_timestamp"
6668 } } ,
6769 ] ;
6870
@@ -83,13 +85,21 @@ pub async fn get_quest_participants_handler(
8385 Err ( _) => continue , // Skip invalid documents
8486 } ;
8587
88+ let timestamp = match doc. get_i64 ( "quest_completion_timestamp" ) {
89+ Ok ( ts) => ts,
90+ Err ( _) => continue , // Skip invalid documents
91+ } ;
92+
8693 let tasks_completed_count: usize = match doc. get_i32 ( "tasks_completed_count" ) {
8794 Ok ( count) => count as usize ,
8895 Err ( _) => continue , // Skip invalid documents
8996 } ;
9097
9198 if tasks_completed_count == total_tasks {
92- participants. push ( address) ;
99+ participants. push ( json ! ( {
100+ "address" : address,
101+ "quest_completion_timestamp" : timestamp,
102+ } ) ) ;
93103 }
94104 }
95105 Err ( e) => return get_error ( format ! ( "Error processing aggregation results: {}" , e) ) ,
0 commit comments