lora-project/server-api/libs/storeObject.js

75 lines
1.2 KiB
JavaScript

const StoreObj = (() => {
let memStore = {}
let maxAge = 86400000
/**
* @param {string} uuid
* @param {object} obj
*/
const set = (uuid, obj) => {
memStore[uuid] = {
obj,
age: Date.now() + maxAge
}
}
/**
* @param {string} uuid
*/
const get = (uuid) => {
if (uuid in memStore) {
let s = memStore[uuid]
if (Date.now() < s.age) {
s.age = Date.now() + maxAge
return s.obj
} else {
delete memStore[uuid]
}
}
return null
}
/**
* @param {string} uuid
*/
const chkKey = (uuid) => {
if (uuid in memStore) return true
return false
}
/**
* @param {string} uuid
*/
const del = (uuid) => {
if (uuid in memStore) delete memStore[uuid]
}
const clear = () => {
let t = Date.now()
for (var i in memStore) {
let s = memStore[i]
if (s.age < t) delete memStore[i]
}
}
/**
* @param {string} uuid if not input return all
*/
const show = (uuid) => {
if (uuid && uuid in memStore) return memStore[uuid]
return memStore
}
return {
set,
get,
chkKey,
clear,
del,
show
}
})()
module.exports = StoreObj