groceries: fix search 500 (pg_trgm word_similarity lives in public, app search_path is $user); guard test for unqualified trgm calls
All checks were successful
Deploy production / deploy (push) Successful in 2m32s

This commit is contained in:
2026-10-24 15:07:08 +00:00
parent 807f8af167
commit c4689adda4
3 changed files with 29 additions and 2 deletions

View File

@@ -94,7 +94,7 @@ export const load: PageServerLoad = async (event) => {
if (multi) conds.push(s`g.store_count >= 2`);
const where = conds.reduce((a, c) => s`${a} and ${c}`);
const order = q
? s`g.favorite desc, (lower(g.name) = ${q}) desc, word_similarity(${q}, lower(g.name)) desc, g.store_count desc, g.item_count desc, g.name`
? s`g.favorite desc, (lower(g.name) = ${q}) desc, public.word_similarity(${q}::text, lower(g.name)) desc, g.store_count desc, g.item_count desc, g.name`
: s`g.favorite desc, g.store_count desc, g.item_count desc, g.name`;
const [groups, [{ total }]] = await Promise.all([

View File

@@ -17,7 +17,7 @@ export const GET: RequestHandler = async (event) => {
select id, name, brand, unit, store_count as "storeCount", item_count as "itemCount"
from groceries.groups
where merged_into_id is null and ${conds.reduce((a, c) => s`${a} and ${c}`)}
order by word_similarity(${q}, lower(name)) desc, store_count desc, item_count desc, id
order by public.word_similarity(${q}::text, lower(name)) desc, store_count desc, item_count desc, id
limit 15`;
return json(rows, { headers: { 'cache-control': 'private, no-store' } });
};