trilium/services/options.js

40 lines
1.2 KiB
JavaScript
Raw Normal View History

2017-11-03 08:48:02 +08:00
const sql = require('./sql');
const utils = require('./utils');
const sync_table = require('./sync_table');
2017-11-03 08:48:02 +08:00
const SYNCED_OPTIONS = [ 'username', 'password_verification_hash', 'encrypted_data_key', 'protected_session_timeout',
2017-11-03 08:48:02 +08:00
'history_snapshot_time_interval' ];
async function getOption(optName) {
const row = await sql.getSingleResultOrNull("SELECT opt_value FROM options WHERE opt_name = ?", [optName]);
if (!row) {
throw new Error("Option " + optName + " doesn't exist");
}
return row['opt_value'];
}
async function setOption(optName, optValue) {
2017-11-03 08:48:02 +08:00
if (SYNCED_OPTIONS.includes(optName)) {
await sync_table.addOptionsSync(optName);
2017-11-03 08:48:02 +08:00
}
2017-11-30 10:04:30 +08:00
await sql.execute("UPDATE options SET opt_value = ?, date_modified = ? WHERE opt_name = ?",
[optValue, utils.nowTimestamp(), optName]);
2017-11-03 08:48:02 +08:00
}
sql.dbReady.then(async () => {
if (!await getOption('document_id') || !await getOption('document_secret')) {
await sql.doInTransaction(async () => {
await setOption('document_id', utils.randomSecureToken(16));
await setOption('document_secret', utils.randomSecureToken(16));
});
}
});
2017-11-03 08:48:02 +08:00
module.exports = {
getOption,
setOption,
SYNCED_OPTIONS
};