From 181a7573233a571e54dca7ac2a4a19a81622adfe Mon Sep 17 00:00:00 2001 From: Bert Hausmans Date: Thu, 21 May 2026 00:24:01 +0200 Subject: [PATCH] refactor(marketplace): substring-only q filter, fix test to use real substring --- packages/backend/src/services/marketplace.test.ts | 2 +- packages/backend/src/services/marketplace.ts | 13 ++----------- 2 files changed, 3 insertions(+), 12 deletions(-) diff --git a/packages/backend/src/services/marketplace.test.ts b/packages/backend/src/services/marketplace.test.ts index bb300b3..0f5ef3b 100644 --- a/packages/backend/src/services/marketplace.test.ts +++ b/packages/backend/src/services/marketplace.test.ts @@ -62,7 +62,7 @@ describe('marketplace', () => { const u = await createUserDirect(env.db, { email: 'u@example.com' }); await createLessonOwnedBy(env.db, o.id, { name: 'Spaans', visibility: 'shared' }); await createLessonOwnedBy(env.db, o.id, { name: 'Frans', visibility: 'shared' }); - const r = await listMarketplaceLessons(env.db, u.id, { q: 'span' }); + const r = await listMarketplaceLessons(env.db, u.id, { q: 'SPA' }); expect(r.rows).toHaveLength(1); expect(r.rows[0]!.name).toBe('Spaans'); }); diff --git a/packages/backend/src/services/marketplace.ts b/packages/backend/src/services/marketplace.ts index a2f77cf..d147a1f 100644 --- a/packages/backend/src/services/marketplace.ts +++ b/packages/backend/src/services/marketplace.ts @@ -22,18 +22,9 @@ export async function listMarketplaceLessons( } if (params.q && params.q.trim() !== '') { const q = params.q.trim().toLowerCase(); - const matches = (haystack: string): boolean => { - const h = haystack.toLowerCase(); - if (h.includes(q)) return true; - // Subsequence match: chars of q appear in order in haystack - let i = 0; - for (let j = 0; j < h.length && i < q.length; j++) { - if (h[j] === q[i]) i++; - } - return i === q.length; - }; candidates = candidates.filter((l) => - matches(l.name) || matches(l.description ?? '') + l.name.toLowerCase().includes(q) + || (l.description ?? '').toLowerCase().includes(q) ); }