feat: assembly additional statistics

This commit is contained in:
2024-03-05 07:16:24 +03:00
parent 7e853c48e7
commit 7512b3347e

View File

@@ -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)