fix(db): serialize complete JSON mutations and preserve concurrent edits

Adapted from MikaelKW/nodecast-tv-plus commit 55cb8de23a37eb5683459bffed9b64c6c5dd73ae. Queue reads, validations, and writes together; return write errors to callers; preserve existing IDs and metadata; route source/user edits through the atomic operations. Cover concurrent writes, stale edits, queue recovery, and administrator races.

Co-authored-by: Mikael <mikaelkwessel@gmail.com>
This commit is contained in:
Technomancer702
2026-10-12 16:01:58 -07:00
parent 8127d26f29
commit 12080ba0a6
5 changed files with 442 additions and 404 deletions

View File

@ -2,7 +2,9 @@ const Database = require('better-sqlite3');
const path = require('path');
const fs = require('fs');
const dataDir = path.join(__dirname, '..', '..', 'data');
const dataDir = process.env.NODECAST_DATA_DIR
? path.resolve(process.env.NODECAST_DATA_DIR)
: path.join(__dirname, '..', '..', 'data');
const dbPath = path.join(dataDir, 'content.db');
// Ensure data directory exists