🌳
pt0/serverF/libF/genericKvF.mts
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}
9 }
10 await db('generic_kvs').where({key}).update({value, updated_at})
11 return
12 }
13 await db('generic_kvs').insert({key, value, created_at: db.fn.now(), updated_at})
14 }
16 const get = async () => {
17 const existingBlock = await db('generic_kvs').where({key}).first()
19 if (!existingBlock) {
20 return defaultValue
21 }
23 const ret = existingBlock.value
24 if (ret?.singleKeyArr) return ret.singleKeyArr
25 return ret
26 }
28 return [get, set] as [() => Promise<unknown>, (value: unknown) => Promise<void>]