68 lines
1.3 KiB
JavaScript
68 lines
1.3 KiB
JavaScript
|
const StoreObj = (() => {
|
||
|
|
||
|
let memStore = {};
|
||
|
let maxAge = 3600000;
|
||
|
|
||
|
/**
|
||
|
* @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;
|