fix: manual bigint casting in admin analytics
This commit is contained in:
@@ -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),
|
||||
});
|
||||
}),
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user