Poster search per poster found (LATERAL on releases_poster_newest_idx), at most 200 posters
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
c0e00f1707
commit
c55918350e
2 files changed
+42
-14
No files matched your search
@@ -24,14 +24,21 @@ test.group('Poster search', (group) => {
|
||||
{ 'subject': `[1/1] - "${name}" yEnc (1/1)`, 'from': from, 'date': 'Mon, 05 Oct 2026 10:00:00 +0000', 'message-id': `<ps${n}@x>`, ':bytes': '1000', 'xref': `x ${GROUP}:${n}` },
|
||||
]
|
||||
const ix = new RangeIndexer({ group: GROUP, start: 1, end: 1000, rules: { ...DEFAULT_RULES, samplePercent: 0, droppedSignatures: [], priorities: { [GROUP]: 1 } } })
|
||||
ix.add([post(1, 'Kitchen Cook <cook@example.com>', 'Soup.Recipes.2026.rar'), post(2, 'Kitchen Cook <cook@example.com>', 'Bread.Recipes.2026.rar'), post(3, 'Gardener <garden@example.com>', 'Roses.2026.rar')], 4)
|
||||
ix.add([post(1, 'Kitchen Cook <cook@example.com>', 'Soup.Recipes.2026.rar'), post(2, 'Kitchen Cook <cook@example.com>', 'Bread.Recipes.2026.rar'), post(3, 'Gardener <garden@example.com>', 'Roses.2026.rar'), post(4, 'Kitchen Helper <help@example.com>', 'Cake.2026.rar')], 5)
|
||||
ix.finish()
|
||||
await BatchStore.store(Number(range.id), Number(node.id), ix.take())
|
||||
|
||||
assert.sameMembers((await db.from('posters').select('poster')).map((p) => p.poster), ['Kitchen Cook <cook@example.com>', 'Gardener <garden@example.com>'])
|
||||
assert.sameMembers((await db.from('posters').select('poster')).map((p) => p.poster), ['Kitchen Cook <cook@example.com>', 'Gardener <garden@example.com>', 'Kitchen Helper <help@example.com>'])
|
||||
const found = await SearchService.search({ poster: 'kitchen' })
|
||||
assert.equal(found.total, 2)
|
||||
assert.isTrue(found.releases.every((r) => r.poster === 'Kitchen Cook <cook@example.com>'))
|
||||
assert.equal(found.total, 3)
|
||||
assert.isTrue(found.releases.every((r) => r.poster?.startsWith('Kitchen')))
|
||||
// Pages over the posters found, merged in the order asked.
|
||||
const second = await SearchService.search({ poster: 'kitchen', perPage: 2, page: 2 })
|
||||
assert.equal(second.total, 3)
|
||||
assert.equal(second.releases.length, 1)
|
||||
const all = [...(await SearchService.search({ poster: 'kitchen', perPage: 2, page: 1 })).releases, ...second.releases].map((r) => r.id)
|
||||
assert.sameMembers(all, found.releases.map((r) => r.id))
|
||||
assert.equal((await SearchService.search({ poster: 'cook', q: 'Bread' })).total, 1)
|
||||
assert.equal((await SearchService.search({ poster: 'nobody' })).total, 0)
|
||||
})
|
||||
})
|
||||
Reference in new issue
Block a user