We are launching a docker version (server version) today so we want to just organize the repo so its easier to navigate.
62 lines
1.7 KiB
JavaScript
62 lines
1.7 KiB
JavaScript
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
|
|
}; |