Files
usenet-indexer/database/migrations/1770000001900_releases_inner_name_trgm.ts
T
Daan MeijerandClaude Opus 5.5 92480174b9
Test and deploy / test (push) Successful in 48s
Test and deploy / deploy (push) Successful in 2m27s
Search and the web interface use the prober's findings
- Search matches a word in the name or the inner name (trigram index on
  inner_name, partial, built concurrently); "Readable names" includes
  releases with an inner name.
- unlocked=1 (chip "No password") leaves out passworded releases.
- Results carry passworded and innerName: a Password badge, the inner
  name under the release name.
- The release view: Inside and Inspected facts, a passworded notice, and
  Contents (per probed article its yEnc name, kind, type, encryption and
  the names inside) from release_inspections.
- Newznab: the password attribute from the prober; an obfuscated release
  with an inner name is included, titled by it (without its extension).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 19:33:23 +02:00

19 lines
614 B
TypeScript

import { BaseSchema } from '@adonisjs/lucid/schema'
/**
* Search matches the prober's inner names too (SearchService): a trigram
* index on them, only where there is one. Built concurrently: the catalog
* keeps taking batches meanwhile.
*/
export default class extends BaseSchema {
static disableTransactions = true
async up() {
this.schema.raw(`CREATE INDEX CONCURRENTLY IF NOT EXISTS releases_inner_name_trgm ON releases USING gin (inner_name gin_trgm_ops) WHERE inner_name IS NOT NULL`)
}
async down() {
this.schema.raw(`DROP INDEX CONCURRENTLY IF EXISTS releases_inner_name_trgm`)
}
}