1import * as _ from 'lodash-es' 3export const genericKvGetSet = ({db, key, defaultValue}: {db: any, key: string, defaultValue?: unknown}) => { 4 const set = async (value: unknown) => { 5 const updated_at = db.fn.now() 6 if (await db('generic_kvs').where({key}).first()) { 7 if (_.isArray(value)) { 8 value = {singleKeyArr: value} 10 await db('generic_kvs').where({key}).update({value, updated_at}) 13 await db('generic_kvs').insert({key, value, created_at: db.fn.now(), updated_at}) 16 const get = async () => { 17 const existingBlock = await db('generic_kvs').where({key}).first() 23 const ret = existingBlock.value 24 if (ret?.singleKeyArr) return ret.singleKeyArr 28 return [get, set] as [() => Promise<unknown>, (value: unknown) => Promise<void>]