feat(don): admin widget now displays this month's donate instead of all-time sum
Build and Push Image / build-backend (push) Successful in 1m10s
Build and Push Image / build-frontend (push) Successful in 2m34s
Build and Push Image / push (push) Successful in 1m11s

This commit is contained in:
2026-08-27 20:08:07 +07:00 Unverified
parent d3dccdf89c
commit 44d156814b
2 changed files with 6 additions and 3 deletions
+2 -2
View File
@@ -263,7 +263,7 @@ function TopRow({
href="/donate/admin/calendar"
>
<WalletIcon className="absolute top-1/3 left-1/3 size-6/8 opacity-20" />
<span>รวมทั้งหมด</span>
<span>รวมเดือนนี้</span>
<span className="text-3xl font-bold">{stats.total}฿</span>
</Link>
</div>
@@ -291,7 +291,7 @@ export function DonateAdminPage({
<div className="mx-auto flex w-full max-w-[max(1280px,90%)] flex-col">
<span className="flex items-center gap-1 pt-1 pb-2 text-3xl font-semibold">
<BitcoinIcon size={32} />
โดเนททั้งหมด
โดเนทเดือนนี้
</span>
<TopRow row={data[0]} ref={topRowRef} stats={stats} />
<DataTable
+4 -1
View File
@@ -1,4 +1,5 @@
import { desc, getTableColumns, sql, sum } from "drizzle-orm";
import { endOfMonth, startOfMonth } from "date-fns";
import { between, desc, getTableColumns, sql, sum } from "drizzle-orm";
import type { Metadata } from "next";
import { redirect } from "next/navigation";
import { adminCheck } from "@/lib/auth";
@@ -10,6 +11,7 @@ export default async function () {
if (!(await adminCheck()))
redirect(`/login?next=${encodeURIComponent("/donate/admin")}`);
const now = new Date();
const [data, [stats]] = await Promise.all([
db
.select({
@@ -32,6 +34,7 @@ export default async function () {
`,
})
.from(donations)
.where(between(donations.created, startOfMonth(now), endOfMonth(now)))
.limit(1),
]);
return <DonateAdminPage data={data} stats={stats} />;