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 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`,
|
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({
|
res.json({
|
||||||
users: userStats[0],
|
users: cast(userStats[0]),
|
||||||
transactions: transactionStats[0],
|
transactions: cast(transactionStats[0]),
|
||||||
watchStats: watchStats[0],
|
watchStats: cast(watchStats[0]),
|
||||||
requests: requestStats[0],
|
requests: cast(requestStats[0]),
|
||||||
dailyActivity,
|
dailyActivity: (dailyActivity as any[]).map(cast),
|
||||||
});
|
});
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user