Added main dashboard

This commit is contained in:
2025-06-26 13:13:23 +02:00
parent 9f1077e05e
commit b04cefa06f
3 changed files with 101 additions and 1 deletions

View File

@@ -0,0 +1,40 @@
import { count, desc, eq } from "drizzle-orm"
import { db } from "../drizzle/db"
import { urls, visits } from "../drizzle/schema"
export async function getDashboardStats() {
try {
// Get count of shortened URLs
const [urlsCount] = await db.select({ count: count() }).from(urls)
// Get count of total visits
const [visitsCount] = await db.select({ count: count() }).from(visits)
// Get most visited URL
const mostVisitedUrl = await db
.select({
id: urls.id,
title: urls.title,
slug: urls.slug,
visitCount: count(visits.id)
})
.from(urls)
.leftJoin(visits, eq(urls.id, visits.urlId))
.groupBy(urls.id, urls.title, urls.slug)
.orderBy(desc(count(visits.id)))
.limit(1)
return {
totalUrls: urlsCount.count,
totalVisits: visitsCount.count,
mostVisitedUrl: mostVisitedUrl[0] || null
}
} catch (error) {
console.error("Failed to fetch dashboard stats:", error)
return {
totalUrls: 0,
totalVisits: 0,
mostVisitedUrl: null
}
}
}