mirror of
https://github.com/MrUnknownDE/VRCX.git
synced 2026-04-24 17:23:50 +02:00
add removing config by key
This commit is contained in:
@@ -5,18 +5,22 @@ var dirtyKeySet = new Set();
|
|||||||
|
|
||||||
class ConfigRepository extends SharedRepository {
|
class ConfigRepository extends SharedRepository {
|
||||||
async init() {
|
async init() {
|
||||||
try {
|
await sqliteService.executeNonQuery(
|
||||||
await sqliteService.executeNonQuery('CREATE TABLE IF NOT EXISTS configs (`key` TEXT PRIMARY KEY, `value` TEXT)');
|
'CREATE TABLE IF NOT EXISTS configs (`key` TEXT PRIMARY KEY, `value` TEXT)'
|
||||||
|
);
|
||||||
await sqliteService.execute(
|
await sqliteService.execute(
|
||||||
(key, value) => sharedRepository.setString(key, value),
|
(key, value) => sharedRepository.setString(key, value),
|
||||||
'SELECT `key`, `value` FROM configs'
|
'SELECT `key`, `value` FROM configs'
|
||||||
);
|
);
|
||||||
} catch (err) {
|
|
||||||
console.error(err);
|
|
||||||
}
|
|
||||||
syncLoop();
|
syncLoop();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
remove(key) {
|
||||||
|
key = transformKey(key);
|
||||||
|
sharedRepository.remove(key);
|
||||||
|
dirtyKeySet.add(key);
|
||||||
|
}
|
||||||
|
|
||||||
getString(key, defaultValue = null) {
|
getString(key, defaultValue = null) {
|
||||||
key = transformKey(key);
|
key = transformKey(key);
|
||||||
return sharedRepository.getString(key, defaultValue);
|
return sharedRepository.getString(key, defaultValue);
|
||||||
@@ -40,14 +44,24 @@ async function syncLoop() {
|
|||||||
await sqliteService.executeNonQuery('BEGIN');
|
await sqliteService.executeNonQuery('BEGIN');
|
||||||
try {
|
try {
|
||||||
for (var key of dirtyKeySet) {
|
for (var key of dirtyKeySet) {
|
||||||
|
var value = sharedRepository.getString(key);
|
||||||
|
if (value === null) {
|
||||||
|
await sqliteService.executeNonQuery(
|
||||||
|
'DELETE FROM configs WHERE `key` = @key',
|
||||||
|
{
|
||||||
|
'@key': key,
|
||||||
|
}
|
||||||
|
);
|
||||||
|
} else {
|
||||||
await sqliteService.executeNonQuery(
|
await sqliteService.executeNonQuery(
|
||||||
'INSERT OR REPLACE INTO configs (`key`, `value`) VALUES (@key, @value)',
|
'INSERT OR REPLACE INTO configs (`key`, `value`) VALUES (@key, @value)',
|
||||||
{
|
{
|
||||||
'@key': key,
|
'@key': key,
|
||||||
'@value': sharedRepository.getString(key)
|
'@value': value
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
dirtyKeySet.clear();
|
dirtyKeySet.clear();
|
||||||
} finally {
|
} finally {
|
||||||
await sqliteService.executeNonQuery('COMMIT');
|
await sqliteService.executeNonQuery('COMMIT');
|
||||||
|
|||||||
@@ -1,6 +1,10 @@
|
|||||||
// requires binding of SharedVariable
|
// requires binding of SharedVariable
|
||||||
|
|
||||||
class SharedRepository {
|
class SharedRepository {
|
||||||
|
remove(key) {
|
||||||
|
key = transformKey(key);
|
||||||
|
return SharedVariable.Remove(key);
|
||||||
|
}
|
||||||
getString(key, defaultValue = null) {
|
getString(key, defaultValue = null) {
|
||||||
key = transformKey(key);
|
key = transformKey(key);
|
||||||
var value = SharedVariable.Get(key);
|
var value = SharedVariable.Get(key);
|
||||||
|
|||||||
Reference in New Issue
Block a user