initial state: muzick music player + recommendation engine
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
/**
|
||||
* One-off cleanup: repair track rows corrupted by an earlier buggy
|
||||
* `metadata_refresh` worker job.
|
||||
*
|
||||
* The bug ran on EVERY refresh and concatenated (no separator) corruption
|
||||
* markers directly onto the real values:
|
||||
* - tracks.title += ' (Enriched)'
|
||||
* - tracks.artist += 'Unknown Artist'
|
||||
* Because it ran repeatedly, corruption can be stacked, e.g.
|
||||
* title = "Song (Enriched) (Enriched)"
|
||||
* artist = "RealName Unknown ArtistUnknown Artist"
|
||||
*
|
||||
* The repair logic (PASS 1 authoritative rescan + PASS 2 defensive SQL strip,
|
||||
* plus issue tracking) now lives in IntegrityService.runSweep(). This script is
|
||||
* just a run-once-and-exit entry point that delegates to it, so the regex/rescan
|
||||
* logic is never duplicated. Safe to run multiple times (idempotent).
|
||||
*/
|
||||
import { Client as PgClient } from 'pg';
|
||||
import { IntegrityService } from '../integrity.service.js';
|
||||
import { queue } from '../queue.js';
|
||||
|
||||
async function main() {
|
||||
const pgClient = new PgClient({
|
||||
connectionString: process.env.DATABASE_URL,
|
||||
});
|
||||
|
||||
await pgClient.connect();
|
||||
console.log('[Repair] Connected to PostgreSQL');
|
||||
|
||||
const integrity = new IntegrityService(pgClient, queue);
|
||||
const summary = await integrity.runSweep();
|
||||
console.log(
|
||||
`[Repair] Done: detected=${summary.detected} fixed=${summary.fixed} needsReview=${summary.needsReview}`
|
||||
);
|
||||
|
||||
await pgClient.end();
|
||||
console.log('[Repair] Connection closed.');
|
||||
}
|
||||
|
||||
main()
|
||||
.then(() => process.exit(0))
|
||||
.catch((err) => {
|
||||
console.error('[Repair] Failed:', err);
|
||||
process.exit(1);
|
||||
});
|
||||
Reference in New Issue
Block a user