mirror of
https://github.com/zadam/trilium.git
synced 2025-03-01 14:22:32 +01:00
all DB operations now wait for DB connection
This commit is contained in:
parent
c4a9aaa52d
commit
2f2969b2a1
@ -1,10 +1,15 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
const db = require('sqlite');
|
|
||||||
const utils = require('./utils');
|
const utils = require('./utils');
|
||||||
const log = require('./log');
|
const log = require('./log');
|
||||||
const dataDir = require('./data_dir');
|
const dataDir = require('./data_dir');
|
||||||
|
|
||||||
|
const dbReady = (() => {
|
||||||
|
const db = require('sqlite');
|
||||||
|
|
||||||
|
return db.open(dataDir.DOCUMENT_PATH, {Promise}).then(() => db);
|
||||||
|
})();
|
||||||
|
|
||||||
async function insert(table_name, rec, replace = false) {
|
async function insert(table_name, rec, replace = false) {
|
||||||
const keys = Object.keys(rec);
|
const keys = Object.keys(rec);
|
||||||
if (keys.length === 0) {
|
if (keys.length === 0) {
|
||||||
@ -27,23 +32,23 @@ async function replace(table_name, rec) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async function beginTransaction() {
|
async function beginTransaction() {
|
||||||
return await db.run("BEGIN");
|
return await wrap(async db => db.run("BEGIN"));
|
||||||
}
|
}
|
||||||
|
|
||||||
async function commit() {
|
async function commit() {
|
||||||
return await db.run("COMMIT");
|
return await wrap(async db => db.run("COMMIT"));
|
||||||
}
|
}
|
||||||
|
|
||||||
async function rollback() {
|
async function rollback() {
|
||||||
return await db.run("ROLLBACK");
|
return await wrap(async db => db.run("ROLLBACK"));
|
||||||
}
|
}
|
||||||
|
|
||||||
async function getSingleResult(query, params = []) {
|
async function getSingleResult(query, params = []) {
|
||||||
return await wrap(async () => db.get(query, ...params));
|
return await wrap(async db => db.get(query, ...params));
|
||||||
}
|
}
|
||||||
|
|
||||||
async function getSingleResultOrNull(query, params = []) {
|
async function getSingleResultOrNull(query, params = []) {
|
||||||
const all = await wrap(async () => db.all(query, ...params));
|
const all = await wrap(async db => db.all(query, ...params));
|
||||||
|
|
||||||
return all.length > 0 ? all[0] : null;
|
return all.length > 0 ? all[0] : null;
|
||||||
}
|
}
|
||||||
@ -59,7 +64,7 @@ async function getSingleValue(query, params = []) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async function getResults(query, params = []) {
|
async function getResults(query, params = []) {
|
||||||
return await wrap(async () => db.all(query, ...params));
|
return await wrap(async db => db.all(query, ...params));
|
||||||
}
|
}
|
||||||
|
|
||||||
async function getMap(query, params = []) {
|
async function getMap(query, params = []) {
|
||||||
@ -87,11 +92,11 @@ async function getFlattenedResults(key, query, params = []) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async function execute(query, params = []) {
|
async function execute(query, params = []) {
|
||||||
return await wrap(async () => db.run(query, ...params));
|
return await wrap(async db => db.run(query, ...params));
|
||||||
}
|
}
|
||||||
|
|
||||||
async function executeScript(query) {
|
async function executeScript(query) {
|
||||||
return await wrap(async () => db.exec(query));
|
return await wrap(async db => db.exec(query));
|
||||||
}
|
}
|
||||||
|
|
||||||
async function remove(tableName, noteId) {
|
async function remove(tableName, noteId) {
|
||||||
@ -117,15 +122,15 @@ async function deleteRecentAudits(category, browserId, noteId) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async function wrap(func) {
|
async function wrap(func) {
|
||||||
const error = new Error();
|
const db = await dbReady;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
return await func();
|
return await func(db);
|
||||||
}
|
}
|
||||||
catch (e) {
|
catch (e) {
|
||||||
log.error("Error executing transaction, executing rollback. Inner exception: " + e.stack + error.stack);
|
log.error("Error executing query. Inner exception: " + e.stack + error.stack);
|
||||||
|
|
||||||
throw e;
|
throw new Error();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -149,8 +154,6 @@ async function doInTransaction(func) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const dbReady = db.open(dataDir.DOCUMENT_PATH, { Promise });
|
|
||||||
|
|
||||||
dbReady
|
dbReady
|
||||||
.then(async () => {
|
.then(async () => {
|
||||||
const tableResults = await getResults("SELECT name FROM sqlite_master WHERE type='table' AND name='notes'");
|
const tableResults = await getResults("SELECT name FROM sqlite_master WHERE type='table' AND name='notes'");
|
||||||
|
Loading…
x
Reference in New Issue
Block a user