From 983cc520aeaebb32149037198d476b66e1973a8b Mon Sep 17 00:00:00 2001 From: Feng Yue <2525275@gmail.com> Date: Wed, 13 Aug 2025 23:07:43 +0800 Subject: [PATCH] fix: user stats again again --- src/services/apiKeyService.js | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/src/services/apiKeyService.js b/src/services/apiKeyService.js index e46b674c..d1e4a426 100644 --- a/src/services/apiKeyService.js +++ b/src/services/apiKeyService.js @@ -491,9 +491,15 @@ class ApiKeyService { async getUserApiKeys(userId) { try { const allKeys = await redis.getAllApiKeys() - return allKeys - .filter((key) => key.userId === userId) - .map((key) => ({ + const userKeys = allKeys.filter((key) => key.userId === userId) + + // Populate usage stats for each user's API key (same as getAllApiKeys does) + const userKeysWithUsage = [] + for (const key of userKeys) { + const usage = await redis.getUsageStats(key.id) + const dailyCost = (await redis.getDailyCost(key.id)) || 0 + + userKeysWithUsage.push({ id: key.id, name: key.name, description: key.description, @@ -503,13 +509,16 @@ class ApiKeyService { createdAt: key.createdAt, lastUsedAt: key.lastUsedAt, expiresAt: key.expiresAt, - usage: key.usage || { requests: 0, inputTokens: 0, outputTokens: 0, totalCost: 0 }, - dailyCost: key.dailyCost || 0, + usage: usage || { requests: 0, inputTokens: 0, outputTokens: 0, totalCost: 0 }, + dailyCost, dailyCostLimit: parseFloat(key.dailyCostLimit || 0), userId: key.userId, userUsername: key.userUsername, createdBy: key.createdBy - })) + }) + } + + return userKeysWithUsage } catch (error) { logger.error('❌ Failed to get user API keys:', error) return []