Moved to next js ssr
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
// Server-side API helpers for metadata generation.
|
||||
// Runs only on the server (Node.js) — uses NEXT_PUBLIC_HOST_URL which is inlined at build time.
|
||||
|
||||
import { IMod } from '@/src/types/Imod';
|
||||
|
||||
const API = process.env.NEXT_PUBLIC_HOST_URL || '';
|
||||
export const SITE_URL = process.env.NEXT_PUBLIC_SITE_URL || 'https://dow-wiki.example.com';
|
||||
|
||||
async function fetchJson<T>(url: string): Promise<T | null> {
|
||||
try {
|
||||
const res = await fetch(url, { cache: 'no-store' });
|
||||
if (!res.ok) return null;
|
||||
return (await res.json()) as T;
|
||||
} catch {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
export async function getMod(modId: string) {
|
||||
return fetchJson<{ name: string; version: string }>(`${API}/api/v1/mods/${modId}`);
|
||||
}
|
||||
|
||||
export async function getRace(raceId: string) {
|
||||
return fetchJson<{ name: string }>(`${API}/api/v1/races/${raceId}`);
|
||||
}
|
||||
|
||||
export async function getUnit(unitId: string) {
|
||||
return fetchJson<{ name: string; description: string }>(`${API}/api/v1/units/${unitId}`);
|
||||
}
|
||||
|
||||
export async function getBuilding(buildingId: string) {
|
||||
return fetchJson<{ name: string; filename: string }>(`${API}/api/v1/buildings/${buildingId}`);
|
||||
}
|
||||
|
||||
export async function getMods() {
|
||||
return fetchJson<IMod[]>(`${API}/api/v1/mods`);
|
||||
}
|
||||
|
||||
export async function getRacesForMod(modId: string | number) {
|
||||
return fetchJson<Array<{ race: { id: string; name: string } }>>(`${API}/api/v1/units/mod/${modId}`);
|
||||
}
|
||||
|
||||
export async function getUnitsForMod(modId: string | number) {
|
||||
return fetchJson<Array<{ race: { id: string }; infantry: Array<{ id: number }>; support: Array<{ id: number }>; tech: Array<{ id: number }> }>>(`${API}/api/v1/units/mod/${modId}`);
|
||||
}
|
||||
|
||||
export async function getBuildingsForMod(modId: string | number) {
|
||||
return fetchJson<Array<{ race: { id: string }; buildings: Array<{ id: number }>; buildingsAdvanced: Array<{ id: number }> }>>(`${API}/api/v1/buildings/mod/${modId}`);
|
||||
}
|
||||
Reference in New Issue
Block a user