feat: assembly additional statistics
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
import datetime
|
||||
from enum import StrEnum
|
||||
from flask import Blueprint, request, jsonify
|
||||
from sqlalchemy import func
|
||||
from sqlalchemy import func, cast, String, Numeric, Float
|
||||
|
||||
import auxiliary
|
||||
import database
|
||||
@@ -136,14 +136,17 @@ def get_users_statistics():
|
||||
user_id = int(data['userId'])
|
||||
date_from = datetime.datetime.fromisoformat(data['dateFrom'])
|
||||
date_to = datetime.datetime.fromisoformat(data['dateTo']) + datetime.timedelta(hours=24, minutes=59, seconds=59)
|
||||
|
||||
query = (database.BalanceTransaction.query
|
||||
.filter(database.BalanceTransaction.user_id == user_id,
|
||||
database.BalanceTransaction.created_at.between(date_from, date_to))
|
||||
.order_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'),
|
||||
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())
|
||||
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)
|
||||
|
||||
Reference in New Issue
Block a user