82 lines
2.6 KiB
JavaScript
82 lines
2.6 KiB
JavaScript
'use strict';
|
|
|
|
exports = module.exports = {
|
|
get,
|
|
set,
|
|
unset,
|
|
|
|
getByAppId,
|
|
getByName,
|
|
unsetByAppId,
|
|
getAppIdByValue,
|
|
};
|
|
|
|
const assert = require('assert'),
|
|
database = require('./database.js');
|
|
|
|
async function set(appId, addonId, env) {
|
|
assert.strictEqual(typeof appId, 'string');
|
|
assert.strictEqual(typeof addonId, 'string');
|
|
assert(Array.isArray(env));
|
|
|
|
await unset(appId, addonId);
|
|
if (env.length === 0) return;
|
|
|
|
const query = 'INSERT INTO appAddonConfigs(appId, addonId, name, value) VALUES ';
|
|
const args = [ ], queryArgs = [ ];
|
|
for (let i = 0; i < env.length; i++) {
|
|
args.push(appId, addonId, env[i].name, env[i].value);
|
|
queryArgs.push('(?, ?, ?, ?)');
|
|
}
|
|
|
|
await database.query(query + queryArgs.join(','), args);
|
|
}
|
|
|
|
async function unset(appId, addonId) {
|
|
assert.strictEqual(typeof appId, 'string');
|
|
assert.strictEqual(typeof addonId, 'string');
|
|
|
|
await database.query('DELETE FROM appAddonConfigs WHERE appId = ? AND addonId = ?', [ appId, addonId ]);
|
|
}
|
|
|
|
async function unsetByAppId(appId) {
|
|
assert.strictEqual(typeof appId, 'string');
|
|
|
|
await database.query('DELETE FROM appAddonConfigs WHERE appId = ?', [ appId ]);
|
|
}
|
|
|
|
async function get(appId, addonId) {
|
|
assert.strictEqual(typeof appId, 'string');
|
|
assert.strictEqual(typeof addonId, 'string');
|
|
|
|
const results = await database.query('SELECT name, value FROM appAddonConfigs WHERE appId = ? AND addonId = ?', [ appId, addonId ]);
|
|
return results;
|
|
}
|
|
|
|
async function getByAppId(appId) {
|
|
assert.strictEqual(typeof appId, 'string');
|
|
|
|
const results = await database.query('SELECT name, value FROM appAddonConfigs WHERE appId = ?', [ appId ]);
|
|
return results;
|
|
}
|
|
|
|
async function getAppIdByValue(addonId, namePattern, value) {
|
|
assert.strictEqual(typeof addonId, 'string');
|
|
assert.strictEqual(typeof namePattern, 'string');
|
|
assert.strictEqual(typeof value, 'string');
|
|
|
|
const results = await database.query('SELECT appId FROM appAddonConfigs WHERE addonId = ? AND name LIKE ? AND value = ?', [ addonId, namePattern, value ]);
|
|
if (results.length === 0) return null;
|
|
return results[0].appId;
|
|
}
|
|
|
|
async function getByName(appId, addonId, namePattern) {
|
|
assert.strictEqual(typeof appId, 'string');
|
|
assert.strictEqual(typeof addonId, 'string');
|
|
assert.strictEqual(typeof namePattern, 'string');
|
|
|
|
const results = await database.query('SELECT value FROM appAddonConfigs WHERE appId = ? AND addonId = ? AND name LIKE ?', [ appId, addonId, namePattern ]);
|
|
if (results.length === 0) return null;
|
|
return results[0].value;
|
|
}
|