chore: update src/pages/admin/_metrics-disabled.txt
swadhinbiswas committed 8 months ago
b7f9879
1 parent 2f1c4d0
commit b7f9879
1 file changed
+23 -4
Showing 1 changed file+23-4
▼src/pages/admin/_metrics-disabled.txt
+23-4
| @@ -1,7 +1,7 @@ | ||
1 | 1 | --- |
2 | 2 | import AdminLayout from "@/layouts/AdminLayout.astro"; |
3 | 3 | import { getDatabase, schema } from "@/db"; |
4 | -import { sql, desc } from "drizzle-orm"; | |
4 | +import { sql, desc, gte } from "drizzle-orm"; | |
5 | 5 | import { Card, CardContent, CardHeader, CardTitle, CardDescription } from "@/components/ui/card"; |
6 | 6 | import { Button } from "@/components/ui/button"; |
7 | 7 | import { |
| @@ -23,6 +23,8 @@ if (!user?.isAdmin) { | ||
23 | 23 | } |
24 | 24 | |
25 | 25 | const db = getDatabase(); |
26 | +const thirtyDaysAgo = new Date(); | |
27 | +thirtyDaysAgo.setDate(thirtyDaysAgo.getDate() - 30); | |
26 | 28 | |
27 | 29 | // Gather metrics |
28 | 30 | const [ |
| @@ -33,7 +35,7 @@ const [ | ||
33 | 35 | totalCommits, |
34 | 36 | recentActivities, |
35 | 37 | reposByLanguage, |
36 | - userGrowth | |
38 | + recentUsers | |
37 | 39 | ] = await Promise.all([ |
38 | 40 | db.select({ count: sql<number>`count(*)` }).from(schema.users).get(), |
39 | 41 | db.select({ count: sql<number>`count(*)` }).from(schema.repositories).get(), |
| @@ -53,10 +55,27 @@ const [ | ||
53 | 55 | .groupBy(schema.repositories.language) |
54 | 56 | .limit(10) |
55 | 57 | .all(), |
56 | - // User growth - simplified for build compatibility | |
57 | - Promise.resolve([]) | |
58 | + db.query.users.findMany({ | |
59 | + where: gte(schema.users.createdAt, thirtyDaysAgo), | |
60 | + columns: { createdAt: true }, | |
61 | + }) | |
58 | 62 | ]); |
59 | 63 | |
64 | +const userGrowthMap = new Map<string, number>(); | |
65 | +for (let i = 0; i < 30; i++) { | |
66 | + const d = new Date(); | |
67 | + d.setDate(d.getDate() - i); | |
68 | + const key = d.toISOString().split("T")[0]; | |
69 | + userGrowthMap.set(key, 0); | |
70 | +} | |
71 | +for (const u of recentUsers) { | |
72 | + const key = u.createdAt.toISOString().split("T")[0]; | |
73 | + userGrowthMap.set(key, (userGrowthMap.get(key) || 0) + 1); | |
74 | +} | |
75 | +const userGrowth = Array.from(userGrowthMap.entries()) | |
76 | + .map(([date, count]) => ({ date, count })) | |
77 | + .sort((a, b) => a.date.localeCompare(b.date)); | |
78 | + | |
60 | 79 | // Storage estimate (count repos * average size) |
61 | 80 | const storageKB = await db.select({ total: sql<number>`sum(size)` }) |
62 | 81 | .from(schema.repositories) |
63 | 82 | |