-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathlocalDB.js
More file actions
112 lines (108 loc) · 3.35 KB
/
localDB.js
File metadata and controls
112 lines (108 loc) · 3.35 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
/**
* use for SPA project to manage the local variable and global variable.
*
* author: zry
*
* date: 2019.01.04
*
* @type {{localMap: {}, set: localDB.set, arrSet: localDB.arrSet, get: (function(*): *), arrGet: (function(*=): Array), getLike: (function(*=): Array), getAll: (function(): Array), delete: localDB.delete, arrDelete: localDB.arrDelete, deleteAll: localDB.deleteAll, minSet: localDB.minSet}}
*/
let localDB = {
localMap: {},
//set data
set: (key, value)=> {
localDB.localMap[key] = value;
},
//set a batch data
//arr = [[key1,value1,key2,value2....],[key11,value11,key12,value12...]...]
arrSet: (arr)=> {
if (Array.isArray(arr)) {
for (let i = 0; i < arr.length; i++) {
if (Array.isArray(arr[i])) {
localDB.localMap[arr[i][0]] = arr[i][1];
}
}
}
},
//get data according to key
get: (key)=> {
return localDB.localMap[key];
},
//get a batch data
//arr = arr[key1,key2,key3...]
//return: [key1,value1,key2,value2,key3,value3...]
arrGet: (arr)=> {
let dataArr = [];
if (Array.isArray(arr)) {
for (let i = 0; i < arr.length; i++) {
dataArr.push([arr[i], localDB.localMap[arr[i]]]);
}
}
return dataArr;
},
//get data where the key contains the args
//param:likeKey---is one or more than one parts of the keys in the localDB
getLike: (likeKey)=> {
let likeArr = [];
for (let key in localDB.localMap) {
if (key.indexOf(likeKey) > 0) {
likeArr.push([key, localDB.localMap[key]]);
}
}
return likeArr;
},
//get all data
//return arr: [key1,value1,key2,value2,key3,value3...]
getAll: ()=> {
let arr = [];
for (let key in localDB.localMap) {
arr.push([key, localDB.localMap[key]]);
}
return arr;
},
//delete data according to key
delete: (key)=> {
delete localDB.localMap[key];
},
//delete a batch data
//param:arr---[key1,key2,key3,key4...]
arrDelete: (arr)=> {
if (Array.isArray(arr)) {
for (let i = 0; i < arr.length; i++) {
delete localDB.localMap[arr[i]];
}
}
},
//delete all data
deleteAll: ()=> {
localDB.localMap = {};
},
//set data where have the lifecycle
/**
*
* @param key
* @param value
* @param millisecond
*/
minSet: (key, value, millisecond)=> {
if (!util.checkNumber(millisecond)) {
console.error("The third args is not a number!");
return false;
} else {
localDB.localMap[key] = value;
setTimeout(function () {
delete localDB.localMap[key];
}, millisecond);
}
}
};
let util = {
checkNumber: (val)=> {
let regPos = /^\d+(\.\d+)?$/; //Nonnegative floating point number
let regNeg = /^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$/; //Negative floating point number
return regPos.test(val) || regNeg.test(val);
},
compare: (val1, val2)=> {
return val1 - val2;
}
}