Extension filter via a releases.extensions column
The first version matched extensions in search_text, which was wrong and slow: file names enter search_text as stems without extension (so plainly posted .mkv files were missed), and matching the TOASTed text took 3-4 s for common types. - Migration …130: releases.extensions text[] (two to four characters with a letter; .7z.001 and .r00 count as 7z and rar), kept current by triggers on files (name, release) and on releases (archive listing), filled with one sequential pass over files, with a GIN index. - Search: ext matches with `extensions && ?`. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
e1392608d8
commit
7ca338d4f3
4 files changed
+126
-6
No files matched your search
@@ -61,6 +61,16 @@ test.group('Web API', (group) => {
|
||||
assert.notInclude(await ids({ ext: 'iso' }), id)
|
||||
// "sho" is part of "show", not an extension.
|
||||
assert.notInclude(await ids({ ext: 'sho' }), id)
|
||||
|
||||
// A plainly posted file counts too, not only archive entries; volumes count as their archive.
|
||||
const now = new Date()
|
||||
await FileStore.insert([
|
||||
{ filename: 'Webtest.Show.S01E02.1080p.nfo', poster: 'p', date: now.getTime(), parts: 1, size: 10, release_id: id, groups: '[]', segments: [], created_at: now, updated_at: now },
|
||||
{ filename: 'Webtest.Show.S01E02.1080p.7z.002', poster: 'p', date: now.getTime(), parts: 1, size: 10, release_id: id, groups: '[]', segments: [], created_at: now, updated_at: now },
|
||||
])
|
||||
assert.include(await ids({ ext: 'nfo' }), id)
|
||||
assert.include(await ids({ ext: '7z' }), id)
|
||||
assert.deepEqual((await db.from('releases').where('id', id).first()).extensions, ['7z', 'mkv', 'nfo'])
|
||||
})
|
||||
|
||||
test('serves an NZB with the real file name', async ({ client, assert }) => {
|
||||
|
||||
Reference in new issue
Block a user