feat - get price by end_user

This commit is contained in:
Ishaan Jaff 2024-05-08 18:19:27 -07:00
parent 0260addeac
commit a38d9e35fd

View file

@ -5795,25 +5795,35 @@ async def global_spend_end_users(data: Optional[GlobalEndUsersSpend] = None):
""" """
Gets the top 100 end-users for a given api key Gets the top 100 end-users for a given api key
""" """
startTime = datetime.now() - timedelta(days=30) startTime = None
endTime = datetime.now() endTime = None
selected_api_key = None
if data is not None:
startTime = data.startTime
endTime = data.endTime
selected_api_key = data.api_key
startTime = startTime or datetime.now() - timedelta(days=30)
endTime = endTime or datetime.now()
sql_query = """ sql_query = """
SELECT SELECT end_user, COUNT(*) AS total_count, SUM(spend) AS total_spend
end_user, FROM "LiteLLM_SpendLogs"
COUNT(*) AS total_count, WHERE "startTime" >= $1::timestamp
SUM(spend) AS total_spend AND "startTime" < $2::timestamp
FROM AND (
"LiteLLM_SpendLogs" CASE
GROUP BY WHEN $3::TEXT IS NULL THEN TRUE
end_user ELSE api_key = $3
WHERE END
"startTime" >= $1 AND "startTime" < $2 )
ORDER BY GROUP BY end_user
total_spend DESC ORDER BY total_spend DESC
LIMIT 100 LIMIT 100
""" """
response = await prisma_client.db.query_raw(sql_query, startTime, endTime) response = await prisma_client.db.query_raw(
sql_query, startTime, endTime, selected_api_key
)
return response return response