feat: assembly additional statistics
This commit is contained in:
		@@ -1,7 +1,7 @@
 | 
				
			|||||||
import datetime
 | 
					import datetime
 | 
				
			||||||
from enum import StrEnum
 | 
					from enum import StrEnum
 | 
				
			||||||
from flask import Blueprint, request, jsonify
 | 
					from flask import Blueprint, request, jsonify
 | 
				
			||||||
from sqlalchemy import func
 | 
					from sqlalchemy import func, cast, String, Numeric, Float
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import auxiliary
 | 
					import auxiliary
 | 
				
			||||||
import database
 | 
					import database
 | 
				
			||||||
@@ -136,14 +136,17 @@ def get_users_statistics():
 | 
				
			|||||||
    user_id = int(data['userId'])
 | 
					    user_id = int(data['userId'])
 | 
				
			||||||
    date_from = datetime.datetime.fromisoformat(data['dateFrom'])
 | 
					    date_from = datetime.datetime.fromisoformat(data['dateFrom'])
 | 
				
			||||||
    date_to = datetime.datetime.fromisoformat(data['dateTo']) + datetime.timedelta(hours=24, minutes=59, seconds=59)
 | 
					    date_to = datetime.datetime.fromisoformat(data['dateTo']) + datetime.timedelta(hours=24, minutes=59, seconds=59)
 | 
				
			||||||
 | 
					 | 
				
			||||||
    query = (database.BalanceTransaction.query
 | 
					    query = (database.BalanceTransaction.query
 | 
				
			||||||
             .filter(database.BalanceTransaction.user_id == user_id,
 | 
					             .filter(database.BalanceTransaction.user_id == user_id,
 | 
				
			||||||
                     database.BalanceTransaction.created_at.between(date_from, date_to))
 | 
					                     database.BalanceTransaction.created_at.between(date_from, date_to))
 | 
				
			||||||
             .order_by(func.date_trunc('day', database.BalanceTransaction.created_at))
 | 
					             .order_by(func.date_trunc('day', database.BalanceTransaction.created_at))
 | 
				
			||||||
             .group_by(func.date_trunc('day', database.BalanceTransaction.created_at))
 | 
					             .group_by(func.date_trunc('day', database.BalanceTransaction.created_at))
 | 
				
			||||||
             .with_entities(func.date_trunc('day', database.BalanceTransaction.created_at).label('date'),
 | 
					             .with_entities(func.date_trunc('day', database.BalanceTransaction.created_at).label('date'),
 | 
				
			||||||
                            func.sum(database.BalanceTransaction.amount).label('value'))
 | 
					                            func.cast(func.round(func.cast(func.sum(database.BalanceTransaction.amount), Numeric), 2),
 | 
				
			||||||
 | 
					                                      Float).label(
 | 
				
			||||||
 | 
					                                'value'),
 | 
				
			||||||
 | 
					                            func.string_agg(cast(database.BalanceTransaction.json_data['order_id'], String), ',').label(
 | 
				
			||||||
 | 
					                                'order_ids'))
 | 
				
			||||||
             .all())
 | 
					             .all())
 | 
				
			||||||
    result = [{'date': row.date.isoformat(), 'value': row.value} for row in query]
 | 
					    result = [{'date': row.date.isoformat(), 'value': row.value, 'order_ids': row.order_ids} for row in query]
 | 
				
			||||||
    return jsonify(result)
 | 
					    return jsonify(result)
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user