import Image from "next/image"; import Link from "next/link"; import type { Metadata } from "next"; import { avatarImageUrl } from "@/lib/format"; import { prisma } from "@/lib/prisma"; import { siteSettings } from "@/lib/services/site-settings"; export const metadata: Metadata = { title: "Search" }; type SearchParams = Promise<{ q?: string }>; export default async function SearchPage({ searchParams, }: { searchParams: SearchParams; }) { const { q } = await searchParams; const query = q?.trim(); const imager = (await siteSettings.get( "habbo_imaging_url", "https://www.habbo.com/habbo-imaging/avatarimage", )) ?? ""; if (!query) { return (

Enter a search term to find users.

); } const users = await prisma.user .findMany({ where: { username: { contains: query }, }, select: { id: true, username: true, look: true, motto: true, online: true, rank: true, }, take: 30, }) .catch(() => []); const rooms = await prisma.rooms .findMany({ where: { name: { contains: query }, state: "open", }, select: { id: true, name: true, ownerName: true, users: true, usersMax: true, }, take: 12, }) .catch(() => []); return (

Results for "{query}" — {users.length} user{users.length !== 1 ? "s" : ""} {rooms.length > 0 && `, ${rooms.length} room${rooms.length !== 1 ? "s" : ""}`}

{users.length > 0 && (

Users

{users.map((u) => ( {u.username} {u.username} {u.online === "1" ? "🟢 Online" : "Offline"} ))}
)} {rooms.length > 0 && (

Rooms

{rooms.map((room) => (

{room.name}

{room.ownerName} · {room.users}/{room.usersMax}

))}
)} {users.length === 0 && rooms.length === 0 && (

No users or rooms found for "{query}".

)}
); }