Files
WaifuBoard/electron/shared/queries.js

44 lines
1.6 KiB
JavaScript

"use strict";
const { queryOne, run } = require('./database');
async function getCachedExtension(extName, id) {
return queryOne("SELECT metadata FROM extension WHERE ext_name = ? AND id = ?", [extName, id]);
}
async function cacheExtension(extName, id, title, metadata) {
return run(`
INSERT INTO extension (ext_name, id, title, metadata, updated_at)
VALUES (?, ?, ?, ?, ?)
ON CONFLICT(ext_name, id)
DO UPDATE SET
title = excluded.title,
metadata = excluded.metadata,
updated_at = ?
`, [extName, id, title, JSON.stringify(metadata), Date.now(), Date.now()]);
}
async function getExtensionTitle(extName, id) {
const sql = "SELECT title FROM extension WHERE ext_name = ? AND id = ?";
const row = await queryOne(sql, [extName, id], 'anilist');
return row ? row.title : null;
}
async function deleteExtension(extName) {
return run("DELETE FROM extension WHERE ext_name = ?", [extName]);
}
async function getCache(key) {
return queryOne("SELECT result, created_at, ttl_ms FROM cache WHERE key = ?", [key], "cache");
}
async function setCache(key, result, ttl_ms) {
return run(`
INSERT INTO cache (key, result, created_at, ttl_ms)
VALUES (?, ?, ?, ?)
ON CONFLICT(key)
DO UPDATE SET result = excluded.result, created_at = excluded.created_at, ttl_ms = excluded.ttl_ms
`, [key, JSON.stringify(result), Date.now(), ttl_ms], "cache");
}
module.exports = {
getCachedExtension,
cacheExtension,
getExtensionTitle,
deleteExtension,
getCache,
setCache
};