refactor: resolve hotel name directly from HOTEL_NAME env

resolveHotelName() now returns env.HOTEL_NAME directly — the single source
of truth. The CMS hotel_name site setting and its DEFAULTS entry are removed
as dead code since they no longer influence the displayed name.

Call sites are unchanged (still await resolveHotelName()); only the lookup
behind it is gone, so the public site always shows the configured env name
with no DB round-trip and no preset.
This commit is contained in:
openhands committed 2026-08-27 16:42:12 +02:00
1 parent 164a4f4ef6
commit 750fcb2e5c
4 files changed
+6 -17

No files matched your search

@@ -44,13 +44,6 @@ export const SETTINGS_GROUPS: SettingsGroup[] = [
icon: "building",
description: "Name, branding and defaults shown across the site.",
fields: [
{
key: "hotel_name",
label: "Hotel name",
type: "text",
placeholder: "Epicnabbo",
defaultValue: "",
},
{
key: "cms_logo",
label: "Logo URL",
+4 -8
View File
@@ -1,16 +1,12 @@
import "server-only";
import { env } from "@/env";
import { siteSettings } from "@/lib/services/site-settings";
/**
* Resolve the public hotel name: CMS `hotel_name` setting, falling back to the
* required HOTEL_NAME env var. There is no hardcoded preset — the site must be
* configured, otherwise HOTEL_NAME fails validation at startup.
* The public hotel name is read directly from the required HOTEL_NAME env var.
* There is no CMS override or hardcoded preset — the site must be configured,
* otherwise HOTEL_NAME fails validation at startup.
*/
export async function resolveHotelName(): Promise<string> {
const fromSettings = (
await siteSettings.get("hotel_name", env.HOTEL_NAME)
)?.trim();
return fromSettings || env.HOTEL_NAME;
return env.HOTEL_NAME;
}
+1 -2
View File
@@ -5,7 +5,6 @@ import { logger } from "@/lib/logger";
import { redis } from "@/lib/redis";
const DEFAULTS: Record<string, string> = {
hotel_name: "",
habbo_imaging_url: "/imaging",
logo_url: "",
nitro_client_url: "",
@@ -15,7 +14,7 @@ const DEFAULTS: Record<string, string> = {
const CACHE_TTL_MS = 300_000;
const REDIS_CACHE_KEY = "site_settings";
// Short in-process window so repeated getters in one request (header, nav,
// footer all read hotel_name / logo) don't each pay a Redis round-trip.
// footer all read logo and other settings) don't each pay a Redis round-trip.
// Redis stays the source of truth across instances.
const MEMORY_TTL_MS = 60_000;
+1
View File
@@ -19,6 +19,7 @@ export default defineConfig({
// unit tests run without a populated .env.
env: {
SKIP_ENV_VALIDATION: "1",
HOTEL_NAME: "TestHotel",
DATABASE_URL: "mysql://root:root@localhost:3306/test",
},
testTimeout: 10000,