- Remove .prettierrc (dead config, Biome replaces Prettier) - Rename lighthouserc.json to lighthouserc.cjs with module.exports for ESM compat - Add logger.warn to empty catch blocks in auth, register, site-settings, prisma-cache, redis, security, rate-limit - Unify ActionResult type: action-helper.ts uses 'ok' consistent with safe-action-shared.ts - Add noUnusedLocals + noUnusedParameters to tsconfig + fix 25 pre-existing unused vars - Replace barrel export src/types/index.ts with direct @/types/common imports - Make trustHost conditional (development only) in auth.ts - Add pre-flight URL validation to update-Nitrov3.sh to catch image.library.url misconfigurations - Improve NITRO_IMAGE_LIBRARY_URL content validation in pre-flight & post-compute checks
43 lines
1.2 KiB
TypeScript
43 lines
1.2 KiB
TypeScript
import { apiJson } from "@/lib/api";
|
|
import { FALLBACK_HOTEL_NAME } from "@/lib/brand";
|
|
import { resolveHotelName } from "@/lib/hotel-name";
|
|
import { prisma } from "@/lib/prisma";
|
|
import { apiCacheKey, redisCache } from "@/lib/redis-cache";
|
|
|
|
export const dynamic = "force-dynamic";
|
|
|
|
/**
|
|
* GET /api/home — combined landing payload: the latest 4 website_articles and
|
|
* the current online player count (users.online === "1"). Mirrors the queries
|
|
* used by the public pages and the admin dashboard.
|
|
*/
|
|
export async function GET(_req: Request) {
|
|
try {
|
|
const data = await redisCache(apiCacheKey("home"), 15, async () => {
|
|
const [articles, online, hotelName] = await Promise.all([
|
|
prisma.websiteArticles.findMany({
|
|
select: {
|
|
id: true,
|
|
title: true,
|
|
slug: true,
|
|
shortStory: true,
|
|
image: true,
|
|
createdAt: true,
|
|
},
|
|
orderBy: { createdAt: "desc" },
|
|
take: 4,
|
|
}),
|
|
prisma.user.count({ where: { online: "1" } }),
|
|
resolveHotelName(),
|
|
]);
|
|
return { articles, online, hotelName };
|
|
});
|
|
return apiJson(data);
|
|
} catch {
|
|
return apiJson(
|
|
{ articles: [], online: 0, hotelName: FALLBACK_HOTEL_NAME },
|
|
{ status: 200 },
|
|
);
|
|
}
|
|
}
|