1
0
Fork 0
gallery-dl-archive-manager/run-convertDb.js

56 lines
1.2 KiB
JavaScript

import { readFile, writeFile } from 'fs/promises';
import { getArg } from './lib/args.js';
import { error, log } from './lib/log.js';
import { userSchema, dbSchema } from './lib/schema.js';
const ctx = 'convertDb.js';
/**
* Converts from array (v0) to current schema
*/
const fromV0 = (old) => {
const userList = Object.fromEntries(old.map(e => [e.user, userSchema(e)]));
return dbSchema(userList);
}
/**
* Upgrades db versions
*/
const convertDb = async () => {
log(ctx, 'Grabbing db');
let directory, db, updated;
try {
directory = getArg('path');
} catch (err) {
error(ctx, err);
return;
}
try {
let file = await readFile(`${directory}/db.json`, { encoding: 'utf8' });
db = JSON.parse(file);
} catch (err) {
error(ctx, err);
return;
}
log(ctx, 'Converting db');
if (Array.isArray(db)) {
updated = fromV0(db);
} else {
updated = db;
}
log(ctx, 'Saving db');
try {
await writeFile(`${directory}/db.json`, JSON.stringify(updated, null, 2));
await writeFile(`${directory}/db.bak.json`, JSON.stringify(db, null, 2));
} catch (err) {
error(ctx, err);
return;
}
log(ctx, 'Done');
}
convertDb();