import Link from "next/link"; import { ArrowRight } from "lucide-react"; import { DATABASE_ID, Q, TABLES, tablesDB } from "@/lib/appwrite-rest"; import { requireSessionSecret } from "@/lib/auth"; async function safeCount(tableId: string, queries: string[] = []) { try { const secret = await requireSessionSecret(); const res = await tablesDB.listRows( DATABASE_ID, tableId, [...queries, Q.limit(1)], secret, ); return res.total ?? 0; } catch { return 0; } } export default async function AdminDashboard() { const [posts, drafts, services, projects, testimonials, newMessages, totalMessages] = await Promise.all([ safeCount(TABLES.blogPosts, [Q.equal("status", "published")]), safeCount(TABLES.blogPosts, [Q.equal("status", "draft")]), safeCount(TABLES.services), safeCount(TABLES.projects), safeCount(TABLES.testimonials), safeCount(TABLES.contactMessages, [Q.equal("status", "new")]), safeCount(TABLES.contactMessages), ]); const cards = [ { label: "Yayında blog", value: posts, href: "/admin/blog", accent: "navy" }, { label: "Taslak blog", value: drafts, href: "/admin/blog", accent: "amber" }, { label: "Hizmet", value: services, href: "/admin/hizmetler", accent: "navy" }, { label: "Proje", value: projects, href: "/admin/projeler", accent: "navy" }, { label: "Referans", value: testimonials, href: "/admin/referanslar", accent: "navy" }, { label: "Yeni mesaj", value: newMessages, href: "/admin/iletisim?filter=new", accent: "red" }, { label: "Toplam mesaj", value: totalMessages, href: "/admin/iletisim", accent: "navy" }, ]; return (
Site içeriklerini buradan yönetin.
{c.label}
{c.value}