mirror of
https://github.com/TriliumNext/Notes.git
synced 2025-07-30 03:32:26 +08:00
76 lines
1.6 KiB
JavaScript
76 lines
1.6 KiB
JavaScript
![]() |
"use strict";
|
||
|
|
||
|
async function getSingleResult(db, query, params = []) {
|
||
|
return await wrap(db, async db => db.get(query, ...params));
|
||
|
}
|
||
|
|
||
|
async function getSingleResultOrNull(db, query, params = []) {
|
||
|
const all = await wrap(db, async db => db.all(query, ...params));
|
||
|
|
||
|
return all.length > 0 ? all[0] : null;
|
||
|
}
|
||
|
|
||
|
async function getSingleValue(db, query, params = []) {
|
||
|
const row = await getSingleResultOrNull(db, query, params);
|
||
|
|
||
|
if (!row) {
|
||
|
return null;
|
||
|
}
|
||
|
|
||
|
return row[Object.keys(row)[0]];
|
||
|
}
|
||
|
|
||
|
async function getResults(db, query, params = []) {
|
||
|
return await wrap(db, async db => db.all(query, ...params));
|
||
|
}
|
||
|
|
||
|
async function getMap(db, query, params = []) {
|
||
|
const map = {};
|
||
|
const results = await getResults(db, query, params);
|
||
|
|
||
|
for (const row of results) {
|
||
|
const keys = Object.keys(row);
|
||
|
|
||
|
map[row[keys[0]]] = row[keys[1]];
|
||
|
}
|
||
|
|
||
|
return map;
|
||
|
}
|
||
|
|
||
|
async function getFlattenedResults(db, key, query, params = []) {
|
||
|
const list = [];
|
||
|
const result = await getResults(db, query, params);
|
||
|
|
||
|
for (const row of result) {
|
||
|
list.push(row[key]);
|
||
|
}
|
||
|
|
||
|
return list;
|
||
|
}
|
||
|
|
||
|
async function execute(db, query, params = []) {
|
||
|
return await wrap(db, async db => db.run(query, ...params));
|
||
|
}
|
||
|
|
||
|
async function wrap(db, func) {
|
||
|
const thisError = new Error();
|
||
|
|
||
|
try {
|
||
|
return await func(db);
|
||
|
}
|
||
|
catch (e) {
|
||
|
console.error("Error executing query. Inner exception: " + e.stack + thisError.stack);
|
||
|
|
||
|
throw thisError;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
module.exports = {
|
||
|
getSingleValue,
|
||
|
getSingleResult,
|
||
|
getSingleResultOrNull,
|
||
|
getResults,
|
||
|
getMap,
|
||
|
getFlattenedResults,
|
||
|
execute
|
||
|
};
|