import { createQuery } from '@tanstack/svelte-query'; import { api } from './client'; import { qk } from './queries'; import type { CatalogueSearchResult, RequestKind } from './types'; // searchCatalogue asks MusicBrainz through Minstrel's release catalogue. // URLSearchParams handles encoding (spaces, quotes, // ampersands) so callers can pass q raw. export async function searchCatalogue( q: string, kind: RequestKind ): Promise { const params = new URLSearchParams({ q, kind }); return api.get(`/api/catalogue/search?${params.toString()}`); } // MusicBrainz allows a request a second, so a repeated search within a minute // is served from the client's cache rather than asked again. export function createCatalogueSearchQuery(q: string, kind: RequestKind) { return createQuery({ queryKey: qk.catalogueSearch(q, kind), queryFn: () => searchCatalogue(q, kind), enabled: q.length > 0, staleTime: 60_000 }); }