34 lines
896 B
JavaScript
34 lines
896 B
JavaScript
|
import sql from "../src/inc/sql.mjs";
|
||
|
import { promises as fs } from "fs";
|
||
|
|
||
|
const opts = {
|
||
|
b: "public/b",
|
||
|
t: "public/t",
|
||
|
tmp: "tmp"
|
||
|
};
|
||
|
const count = {
|
||
|
b: 0, t: 0, tmp: 0
|
||
|
};
|
||
|
|
||
|
const rows = await sql('items').select('id', 'dest');
|
||
|
const ids = rows.map(r => r.id.toString() + ".png");
|
||
|
const dests = rows.map(r => r.dest);
|
||
|
const files = {
|
||
|
b: (await fs.readdir(opts.b)).filter(f => f !== '.empty'),
|
||
|
t: await fs.readdir(opts.t)
|
||
|
};
|
||
|
|
||
|
const unused = {
|
||
|
b: files.b.filter(f => !dests.includes(f)),
|
||
|
t: files.t.filter(f => !ids.includes(f))
|
||
|
}
|
||
|
|
||
|
count.b = (await Promise.all(unused.b.map(f => fs.rm(`${opts.b}/${f}`)))).length;
|
||
|
count.t = (await Promise.all(unused.t.map(f => fs.rm(`${opts.t}/${f}`)))).length;
|
||
|
|
||
|
// clear tmp
|
||
|
const tmp = (await fs.readdir(opts.tmp)).filter(f => f !== '.empty');
|
||
|
count.tmp = (await Promise.all(tmp.map(f => fs.rm(`${opts.tmp}/${f}`)))).length;
|
||
|
|
||
|
console.log(count);
|