import "server-only"; import { PERMS } from "@/lib/permission-slugs"; import { anyCapability, type HousekeepingCapabilityContext, } from "../../foundation/contracts"; import { economyQuery } from "./queries/catalog"; import type { EconomySearchCandidate } from "./search"; type EconomySearchKind = "catalog-pages" | "items" | "transactions"; const ROUTES = { "catalog-pages": [ "economy.catalog.overview", anyCapability(PERMS.CATALOG_VIEW), ], items: ["economy.items.overview", anyCapability(PERMS.CATALOG_VIEW)], transactions: [ "economy.history.transactions", anyCapability(PERMS.SHOP_VIEW), ], } as const; export async function loadEconomySearchCandidates( kind: EconomySearchKind, context: HousekeepingCapabilityContext, term: string, limit: number, query: Pick = economyQuery, ): Promise { const [routeId, capability] = ROUTES[kind]; const result = await query.run(context, { routeId, list: { search: term, pageSize: limit, offset: 0 }, }); if (!result.ok) throw new Error("Economy search query unavailable"); return result.data.items.flatMap((item) => item.href ? [ { id: `${routeId}:${item.id}`, title: item.title, description: item.description ?? item.status ?? item.amount, href: item.href, capability, }, ] : [], ); }