From 1b64fed427efb922b9088fdf95f81156effc8828 Mon Sep 17 00:00:00 2001 From: Daan Meijer Date: Tue, 13 Oct 2026 16:42:26 +0200 Subject: [PATCH] Spots: a matched spot's NZB isn't kept Only a spot that becomes a release of its own needs its NZB (the header pass's releases have their chunks); spots took 2.7 GB on the NVMe at 9k. Co-Authored-By: Claude Opus 5.5 --- app/services/spot_inspector.ts | 3 ++- .../1770000003000_spots_nzb_only_unmatched.ts | 10 ++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 database/migrations/1770000003000_spots_nzb_only_unmatched.ts diff --git a/app/services/spot_inspector.ts b/app/services/spot_inspector.ts index f9f7f9b..5c607c8 100644 --- a/app/services/spot_inspector.ts +++ b/app/services/spot_inspector.ts @@ -283,7 +283,8 @@ export class SpotInspector { await trx.from('releases').whereIn('id', [...perRelease.keys()]).update({ passworded: true }) } const top = [...perRelease.entries()].sort((a, b) => b[1] - a[1])[0] - await trx.from('spots').where('message_id', spotId).update({ matched: fileRelease.size, release_id: top ? top[0] : null }) + // The NZB is only kept for a release of the spot's own: the header pass's releases have their chunks. + await trx.from('spots').where('message_id', spotId).update({ matched: fileRelease.size, release_id: top ? top[0] : null, nzb: null }) }) return perRelease.size } diff --git a/database/migrations/1770000003000_spots_nzb_only_unmatched.ts b/database/migrations/1770000003000_spots_nzb_only_unmatched.ts new file mode 100644 index 0000000..a512770 --- /dev/null +++ b/database/migrations/1770000003000_spots_nzb_only_unmatched.ts @@ -0,0 +1,10 @@ +import { BaseSchema } from '@adonisjs/lucid/schema' + +/** A matched spot's NZB isn't kept (its releases have their chunks): only a spot of its own needs one (2.7 GB at 9k spots). */ +export default class extends BaseSchema { + async up() { + this.schema.raw(`UPDATE spots SET nzb = NULL WHERE matched > 0 AND nzb IS NOT NULL`) + } + + async down() {} +}