fix: add requests to admin analytics
This commit is contained in:
+18
-10
@@ -1,12 +1,12 @@
|
|||||||
import { Router } from "express";
|
import { Router } from "express";
|
||||||
|
import { io } from "../index";
|
||||||
import {
|
import {
|
||||||
|
type AuthenticatedRequest,
|
||||||
authenticate,
|
authenticate,
|
||||||
AuthenticatedRequest,
|
|
||||||
requireAdmin,
|
requireAdmin,
|
||||||
} from "../middleware/auth";
|
} from "../middleware/auth";
|
||||||
import { prisma } from "../utils/prisma";
|
|
||||||
import { asyncHandler } from "../middleware/errorHandler";
|
import { asyncHandler } from "../middleware/errorHandler";
|
||||||
import { io } from "../index";
|
import { prisma } from "../utils/prisma";
|
||||||
|
|
||||||
const router = Router();
|
const router = Router();
|
||||||
|
|
||||||
@@ -197,19 +197,27 @@ router.get(
|
|||||||
sevenDaysAgo.setDate(sevenDaysAgo.getDate() - 7);
|
sevenDaysAgo.setDate(sevenDaysAgo.getDate() - 7);
|
||||||
const thirtyDaysAgo = new Date();
|
const thirtyDaysAgo = new Date();
|
||||||
thirtyDaysAgo.setDate(thirtyDaysAgo.getDate() - 30);
|
thirtyDaysAgo.setDate(thirtyDaysAgo.getDate() - 30);
|
||||||
const [userStats, transactionStats, watchStats, dailyActivity] =
|
const [
|
||||||
await Promise.all([
|
userStats,
|
||||||
prisma.$queryRaw`SELECT COUNT(*) as total, COUNT(CASE WHEN created_at >= ${sevenDaysAgo} THEN 1 END) as new_this_week FROM users`,
|
transactionStats,
|
||||||
prisma.$queryRaw`SELECT SUM(CASE WHEN type = 'EARN' THEN amount ELSE 0 END) as total_earned, SUM(CASE WHEN type = 'SPEND' THEN amount ELSE 0 END) as total_spent, COUNT(*) as total_transactions FROM transactions`,
|
watchStats,
|
||||||
prisma.$queryRaw`SELECT SUM(duration) as total_seconds, SUM(credits_earned) as total_credits, COUNT(*) as total_events FROM watch_events WHERE is_processed = true`,
|
requestStats,
|
||||||
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`,
|
dailyActivity,
|
||||||
]);
|
] = await Promise.all([
|
||||||
|
prisma.$queryRaw`SELECT COUNT(*) as total, COUNT(CASE WHEN created_at >= ${sevenDaysAgo} THEN 1 END) as new_this_week FROM users`,
|
||||||
|
prisma.$queryRaw`SELECT SUM(CASE WHEN type = 'EARN' THEN amount ELSE 0 END) as total_earned, SUM(CASE WHEN type = 'SPEND' THEN amount ELSE 0 END) as total_spent, COUNT(*) as total_transactions FROM transactions`,
|
||||||
|
prisma.$queryRaw`SELECT SUM(duration) as total_seconds, SUM(credits_earned) as total_credits, COUNT(*) as total_events FROM watch_events WHERE is_processed = true`,
|
||||||
|
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`,
|
||||||
|
]);
|
||||||
res.json({
|
res.json({
|
||||||
users: userStats[0],
|
users: userStats[0],
|
||||||
transactions: transactionStats[0],
|
transactions: transactionStats[0],
|
||||||
watchStats: watchStats[0],
|
watchStats: watchStats[0],
|
||||||
|
requests: requestStats[0],
|
||||||
dailyActivity,
|
dailyActivity,
|
||||||
});
|
});
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
|
|
||||||
export { router as adminRouter };
|
export { router as adminRouter };
|
||||||
|
|||||||
Reference in New Issue
Block a user