webamp/packages/skin-database/data/KeyValue.ts
2022-02-03 13:50:48 -05:00

31 lines
1,002 B
TypeScript

import { knex } from "../db";
export default class KeyValue {
static async get(key: string): Promise<any> {
const result = await knex("key_value").where({key}).first("value");
if(result == null) {
return null;
}
return JSON.parse(result.value);
}
static async set(key: string, value: any): Promise<void> {
const {count} = (await knex("key_value").where({key}).count({count: '*'}).first() as {count: number});
if(count) {
return await KeyValue.update(key, value);
} else {
return await KeyValue.insert(key, value);
}
}
static async update(key: string, value: any): Promise<void> {
const json = JSON.stringify(value);
await knex("key_value").where({key}).update({value: json});
}
static async insert(key: string, value: any): Promise<any> {
const json = JSON.stringify(value);
await knex("key_value").insert({key, value: json});
}
}