Files
transcriber/scripts/search/cache.js
T

38 lines
900 B
JavaScript

const fs = require("fs");
const path = require("path");
const crypto = require("crypto");
const DEFAULT_TTL_MS = 30 * 60 * 1000;
function ensureDir(dir) {
fs.mkdirSync(dir, { recursive: true });
}
function keyFor(value) {
return crypto.createHash("sha256").update(String(value || "")).digest("hex");
}
function readCache(cacheDir, key, ttlMs = DEFAULT_TTL_MS) {
try {
const file = path.join(cacheDir, `${keyFor(key)}.json`);
const stat = fs.statSync(file);
if (Date.now() - stat.mtimeMs > ttlMs) return null;
return JSON.parse(fs.readFileSync(file, "utf8"));
} catch (_) {
return null;
}
}
function writeCache(cacheDir, key, value) {
try {
ensureDir(cacheDir);
const file = path.join(cacheDir, `${keyFor(key)}.json`);
fs.writeFileSync(file, JSON.stringify(value, null, 2), "utf8");
} catch (_) {}
}
module.exports = {
readCache,
writeCache,
};