fix: manual bigint casting in admin analytics

This commit is contained in:
2026-04-23 10:55:31 -04:00
parent 0d0c67e205
commit 137bf19a02
+16 -5
View File
@@ -208,12 +208,23 @@ router.get(
prisma.$queryRaw`SELECT COUNT(*) as total, COUNT(CASE WHEN status = 'PENDING' THEN 1 END) as pending, COUNT(CASE WHEN status = 'APPROVED' THEN 1 END) as approved, COUNT(CASE WHEN status = 'DECLINED' THEN 1 END) as declined FROM content_requests`,
prisma.$queryRaw`SELECT DATE(created_at) as date, COUNT(DISTINCT user_id) as active_users, SUM(CASE WHEN type = 'EARN' THEN amount ELSE 0 END) as earned, SUM(CASE WHEN type = 'SPEND' THEN amount ELSE 0 END) as spent FROM transactions WHERE created_at >= ${thirtyDaysAgo} GROUP BY DATE(created_at) ORDER BY date DESC LIMIT 30`,
]);
// Cast BigInt to Number for JSON serialization
const cast = (obj: any) => {
if (!obj) return obj;
const res: any = {};
for (const key of Object.keys(obj)) {
res[key] = typeof obj[key] === "bigint" ? Number(obj[key]) : obj[key];
}
return res;
};
res.json({
users: userStats[0],
transactions: transactionStats[0],
watchStats: watchStats[0],
requests: requestStats[0],
dailyActivity,
users: cast(userStats[0]),
transactions: cast(transactionStats[0]),
watchStats: cast(watchStats[0]),
requests: cast(requestStats[0]),
dailyActivity: (dailyActivity as any[]).map(cast),
});
}),
);