ming_node 2.9.2 → 2.9.6
Sign up to get free protection for your applications and to get access to all the features.
- package/beforeTest/FileDbTest.js +18 -0
- package/beforeTest/MemorDbTest.js +4 -2
- package/index.js +8 -6
- package/module/FileDb.js +193 -0
- package/module/MemoryDb.js +38 -8
- package/package.json +1 -1
- package/plugins/BaseRestApi/MemoryBaseRestApi.js +1 -1
- package/plugins/BaseRpcApi/FileBaseRpcApi.js +17 -26
- package/plugins/BaseRpcApi/MemoryBaseRpcApi.js +1 -1
package/index.js
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
* By : Minglie
|
4
4
|
* QQ: 934031452
|
5
5
|
* Date :2021.12.01
|
6
|
-
* version :2.9.
|
6
|
+
* version :2.9.6
|
7
7
|
*/
|
8
8
|
var http = require('http');
|
9
9
|
var https = require('https');
|
@@ -109,7 +109,7 @@ M.get = function (url, callback, data, headers) {
|
|
109
109
|
if (typeof callback == "function") {
|
110
110
|
|
111
111
|
} else {
|
112
|
-
headers = data || {};
|
112
|
+
headers = data || {'Content-Type': 'application/json'};
|
113
113
|
data = callback;
|
114
114
|
callback = () => {
|
115
115
|
};
|
@@ -175,7 +175,11 @@ M.get = function (url, callback, data, headers) {
|
|
175
175
|
res.on('end', function () {
|
176
176
|
callback(html, res);
|
177
177
|
try {
|
178
|
-
|
178
|
+
if(headers && headers['Content-Type']=='application/json'){
|
179
|
+
html = JSON.parse(html)
|
180
|
+
}else {
|
181
|
+
html = html;
|
182
|
+
}
|
179
183
|
} catch (e) {
|
180
184
|
html = html;
|
181
185
|
}
|
@@ -1985,8 +1989,6 @@ M.server = function () {
|
|
1985
1989
|
console.log("listen on port:" + port);
|
1986
1990
|
return server;
|
1987
1991
|
}
|
1988
|
-
|
1989
|
-
global.app=app;
|
1990
1992
|
return app;
|
1991
1993
|
}
|
1992
1994
|
M["_gloable_exception_handle"]=(err)=>{
|
@@ -2833,7 +2835,7 @@ M.getRemoteCacheByUrl = async function (url) {
|
|
2833
2835
|
if (url.startsWith("file:")) {
|
2834
2836
|
text = M.readFile(url.substring(5));
|
2835
2837
|
} else {
|
2836
|
-
text = await M.get(url);
|
2838
|
+
text = await M.get(url,{},{});
|
2837
2839
|
}
|
2838
2840
|
console.log("req remote url:", url);
|
2839
2841
|
M._globle_cacheMap[url] = text;
|
package/module/FileDb.js
ADDED
@@ -0,0 +1,193 @@
|
|
1
|
+
/**
|
2
|
+
* File : MemoryDb.js
|
3
|
+
* By : Minglie
|
4
|
+
* QQ: 934031452
|
5
|
+
* Date :2021.09.14
|
6
|
+
* rem : 文件数据库
|
7
|
+
*/
|
8
|
+
|
9
|
+
const M=require("../index");
|
10
|
+
|
11
|
+
class FileDb{
|
12
|
+
|
13
|
+
constructor(tableName,readFromMemory=true) {
|
14
|
+
this.tableName=tableName;
|
15
|
+
this.readFromMemory=readFromMemory;
|
16
|
+
this.dataList=M.getObjByFile(this.tableName)
|
17
|
+
}
|
18
|
+
|
19
|
+
readFromFile(){
|
20
|
+
if(this.readFromMemory){
|
21
|
+
return
|
22
|
+
}else {
|
23
|
+
this.dataList=M.getObjByFile(this.tableName);
|
24
|
+
}
|
25
|
+
}
|
26
|
+
|
27
|
+
/**
|
28
|
+
* 单个加
|
29
|
+
* @param obj
|
30
|
+
* @returns {Promise<*>}
|
31
|
+
*/
|
32
|
+
async add(obj){
|
33
|
+
this.readFromFile();
|
34
|
+
obj.id = M.randomStr();
|
35
|
+
this.dataList=[...this.dataList,obj];
|
36
|
+
M.writeObjToFile(this.tableName,this.dataList)
|
37
|
+
return obj;
|
38
|
+
}
|
39
|
+
|
40
|
+
async update(obj){
|
41
|
+
this.readFromFile();
|
42
|
+
for (let i = 0; i < this.dataList.length; i++) {
|
43
|
+
if (this.dataList[i].id == obj.id) {
|
44
|
+
this.dataList[i]=obj;
|
45
|
+
return
|
46
|
+
}
|
47
|
+
}
|
48
|
+
M.writeObjToFile(this.tableName,this.dataList)
|
49
|
+
}
|
50
|
+
|
51
|
+
listAll(caseObj){
|
52
|
+
this.readFromFile();
|
53
|
+
let o_keys=[];
|
54
|
+
if(caseObj){
|
55
|
+
o_keys = Object.keys(caseObj);
|
56
|
+
}
|
57
|
+
if (caseObj && o_keys.length>0) {
|
58
|
+
let r_list = [];
|
59
|
+
let o_vals = Object.values(caseObj);
|
60
|
+
var d = this.dataList;
|
61
|
+
for (let i = 0; i < d.length; i++) {
|
62
|
+
let s=0;
|
63
|
+
for (let j=0;j<o_keys.length;j++){
|
64
|
+
if(o_keys[j][0]=="$"){
|
65
|
+
let realKey=o_keys[j].replace("$","");
|
66
|
+
if (d[i][realKey].indexOf(o_vals[j])==-1) {
|
67
|
+
break
|
68
|
+
}
|
69
|
+
}else {
|
70
|
+
if (d[i][o_keys[j]] != o_vals[j]) {
|
71
|
+
break
|
72
|
+
}
|
73
|
+
}
|
74
|
+
s++;
|
75
|
+
}
|
76
|
+
if(s==o_keys.length){
|
77
|
+
r_list.push(d[i]);
|
78
|
+
}
|
79
|
+
}
|
80
|
+
return r_list;
|
81
|
+
} else {
|
82
|
+
return this.dataList;
|
83
|
+
}
|
84
|
+
}
|
85
|
+
|
86
|
+
|
87
|
+
listByPage({page=0, num=10, caseObj,order}) {
|
88
|
+
page=Number.parseInt(page);
|
89
|
+
num=Number.parseInt(num);
|
90
|
+
if (page <= 0) page = 1;
|
91
|
+
let rows;
|
92
|
+
if (caseObj) {
|
93
|
+
rows = this.listAll(caseObj);
|
94
|
+
} else {
|
95
|
+
rows = this.listAll();
|
96
|
+
}
|
97
|
+
if(order){
|
98
|
+
let orderArr= order.split(" ");
|
99
|
+
let orderField=orderArr[0];
|
100
|
+
let orderType=orderArr[1];
|
101
|
+
rows.sort((a,b)=>{
|
102
|
+
let ret=0;
|
103
|
+
let a_order_v=0;
|
104
|
+
let b_order_v=0;
|
105
|
+
if(a[orderField]!=null){
|
106
|
+
a_order_v=a[orderField];
|
107
|
+
}
|
108
|
+
if(b[orderField]!=null){
|
109
|
+
b_order_v=b[orderField];
|
110
|
+
}
|
111
|
+
if (a_order_v>b_order_v) {
|
112
|
+
ret= 1;
|
113
|
+
}else if(a_order_v<b_order_v){
|
114
|
+
ret= -1
|
115
|
+
}else{
|
116
|
+
ret= 0;
|
117
|
+
}
|
118
|
+
if(orderType=="asc"){
|
119
|
+
return ret;
|
120
|
+
}else {
|
121
|
+
return -1*ret;
|
122
|
+
}
|
123
|
+
})
|
124
|
+
}
|
125
|
+
let total = rows.length;
|
126
|
+
rows=JSON.parse(JSON.stringify(rows))
|
127
|
+
rows = rows.splice((page - 1) * num, num)
|
128
|
+
return {rows, total}
|
129
|
+
}
|
130
|
+
|
131
|
+
|
132
|
+
deleteAll(o) {
|
133
|
+
this.readFromFile();
|
134
|
+
if (o) {
|
135
|
+
let r_list = [];
|
136
|
+
let o_keys = Object.keys(o);
|
137
|
+
let o_vals = Object.values(o)
|
138
|
+
var d = this.dataList;
|
139
|
+
let delete_index=[]
|
140
|
+
for (let i = 0; i < d.length; i++) {
|
141
|
+
let s=0;
|
142
|
+
for (let j=0;j<o_keys.length;j++){
|
143
|
+
if (d[i][o_keys[j]] != o_vals[j]) {
|
144
|
+
break
|
145
|
+
}
|
146
|
+
s++;
|
147
|
+
}
|
148
|
+
if(s==o_keys.length){
|
149
|
+
delete_index.push(i)
|
150
|
+
}
|
151
|
+
}
|
152
|
+
for (let i = 0; i < d.length; i++) {
|
153
|
+
if(!delete_index.includes(i)){
|
154
|
+
r_list.push(d[i])
|
155
|
+
}
|
156
|
+
}
|
157
|
+
this.dataList=r_list;
|
158
|
+
return delete_index.length;
|
159
|
+
} else {
|
160
|
+
let length=this.dataList.length;
|
161
|
+
this.dataList=[];
|
162
|
+
return length;
|
163
|
+
}
|
164
|
+
M.writeObjToFile(this.tableName,this.dataList)
|
165
|
+
}
|
166
|
+
|
167
|
+
getById(id) {
|
168
|
+
this.readFromFile();
|
169
|
+
var d = this.dataList;
|
170
|
+
for (let i = 0; i < d.length; i++) {
|
171
|
+
if(d[i].id==id){
|
172
|
+
return d[i];
|
173
|
+
}
|
174
|
+
}
|
175
|
+
return null;
|
176
|
+
}
|
177
|
+
|
178
|
+
deleteById(id) {
|
179
|
+
this.readFromFile();
|
180
|
+
var d = this.dataList;
|
181
|
+
for (let i = 0; i < d.length; i++) {
|
182
|
+
if(d[i].id==id){
|
183
|
+
this.dataList.splice(i, 1);
|
184
|
+
return id;
|
185
|
+
}
|
186
|
+
}
|
187
|
+
M.writeObjToFile(this.tableName,this.dataList)
|
188
|
+
return 0;
|
189
|
+
}
|
190
|
+
}
|
191
|
+
|
192
|
+
|
193
|
+
module.exports = FileDb;
|
package/module/MemoryDb.js
CHANGED
@@ -36,7 +36,10 @@ class MemoryDb{
|
|
36
36
|
}
|
37
37
|
|
38
38
|
listAll(caseObj){
|
39
|
-
let o_keys
|
39
|
+
let o_keys=[];
|
40
|
+
if(caseObj){
|
41
|
+
o_keys = Object.keys(caseObj);
|
42
|
+
}
|
40
43
|
if (caseObj && o_keys.length>0) {
|
41
44
|
let r_list = [];
|
42
45
|
let o_vals = Object.values(caseObj);
|
@@ -44,8 +47,15 @@ class MemoryDb{
|
|
44
47
|
for (let i = 0; i < d.length; i++) {
|
45
48
|
let s=0;
|
46
49
|
for (let j=0;j<o_keys.length;j++){
|
47
|
-
if
|
48
|
-
|
50
|
+
if(o_keys[j][0]=="$"){
|
51
|
+
let realKey=o_keys[j].replace("$","");
|
52
|
+
if (d[i][realKey].indexOf(o_vals[j])==-1) {
|
53
|
+
break
|
54
|
+
}
|
55
|
+
}else {
|
56
|
+
if (d[i][o_keys[j]] != o_vals[j]) {
|
57
|
+
break
|
58
|
+
}
|
49
59
|
}
|
50
60
|
s++;
|
51
61
|
}
|
@@ -60,19 +70,39 @@ class MemoryDb{
|
|
60
70
|
}
|
61
71
|
|
62
72
|
|
63
|
-
listByPage(
|
64
|
-
|
65
|
-
|
66
|
-
if (
|
73
|
+
listByPage({page=0, num=10, caseObj,order}) {
|
74
|
+
page=Number.parseInt(page);
|
75
|
+
num=Number.parseInt(num);
|
76
|
+
if (page <= 0) page = 1;
|
67
77
|
let rows;
|
68
78
|
if (caseObj) {
|
69
79
|
rows = this.listAll(caseObj);
|
70
80
|
} else {
|
71
81
|
rows = this.listAll();
|
72
82
|
}
|
83
|
+
if(order){
|
84
|
+
let orderArr= order.split(" ");
|
85
|
+
let orderField=orderArr[0];
|
86
|
+
let orderType=orderArr[1];
|
87
|
+
rows.sort((a,b)=>{
|
88
|
+
let ret=0;
|
89
|
+
if (a[orderField]>b[orderField]) {
|
90
|
+
ret= 1;
|
91
|
+
}else if(a<b){
|
92
|
+
ret= -1
|
93
|
+
}else{
|
94
|
+
ret= 0;
|
95
|
+
}
|
96
|
+
if(orderType=="desc"){
|
97
|
+
return ret;
|
98
|
+
}else {
|
99
|
+
return -1*ret;
|
100
|
+
}
|
101
|
+
})
|
102
|
+
}
|
73
103
|
let total = rows.length;
|
74
104
|
rows=JSON.parse(JSON.stringify(rows))
|
75
|
-
rows = rows.splice((
|
105
|
+
rows = rows.splice((page - 1) * num, num)
|
76
106
|
return {rows, total}
|
77
107
|
}
|
78
108
|
|
package/package.json
CHANGED
@@ -1,59 +1,50 @@
|
|
1
1
|
/**
|
2
2
|
* 数据源为内存的rpc风格接口
|
3
3
|
*/
|
4
|
-
const
|
4
|
+
const FileDb=require("../../module/FileDb");
|
5
5
|
const AbstractBaseRpcApi=require("./AbstractBaseRpcApi");
|
6
6
|
|
7
7
|
class FileBaseRpcApi extends AbstractBaseRpcApi{
|
8
|
+
|
8
9
|
constructor(props) {
|
9
10
|
super(props);
|
11
|
+
if(props.readFromMemory==null){
|
12
|
+
props.readFromMemory=true;
|
13
|
+
}
|
14
|
+
this.fileDb=new FileDb(props.tableName,props.readFromMemory);
|
10
15
|
}
|
11
16
|
async add(obj){
|
12
|
-
|
13
|
-
|
14
|
-
return obj;
|
17
|
+
let r= this.fileDb.add(obj);
|
18
|
+
return r;
|
15
19
|
}
|
16
20
|
|
17
21
|
async delete(obj){
|
18
|
-
let r=
|
19
|
-
if (obj) {
|
20
|
-
r= M.deleteObjByPropFile(this.tableName, obj);
|
21
|
-
} else {
|
22
|
-
r=M.writeObjToFile(this.tableName,[]);
|
23
|
-
}
|
22
|
+
let r= this.fileDb.deleteAll(obj);
|
24
23
|
return r;
|
25
24
|
}
|
26
25
|
|
27
26
|
async getById(id){
|
28
|
-
let r=
|
27
|
+
let r=this.fileDb.getById(id);
|
29
28
|
return r;
|
30
29
|
}
|
31
30
|
|
32
|
-
async list({page
|
33
|
-
|
34
|
-
|
35
|
-
if (page <= 0) page = 1;
|
36
|
-
let rows =await this.listAll(queryCase);
|
37
|
-
let total = rows.length;
|
38
|
-
rows = rows.splice((page - 1) * num, num)
|
39
|
-
return {rows, total}
|
31
|
+
async list({page,num,order,queryCase}){
|
32
|
+
let r= this.fileDb.listByPage({page,num,caseObj:queryCase,order});
|
33
|
+
return r;
|
40
34
|
}
|
41
35
|
|
42
36
|
async listAll(obj){
|
43
|
-
|
44
|
-
|
45
|
-
} else {
|
46
|
-
return M.getObjByFile(this.tableName);
|
47
|
-
}
|
37
|
+
let r= this.fileDb.listAll(obj);
|
38
|
+
return r;
|
48
39
|
}
|
49
40
|
|
50
41
|
async update(obj){
|
51
|
-
let r=
|
42
|
+
let r= this.fileDb.update(obj);
|
52
43
|
return r;
|
53
44
|
}
|
54
45
|
|
55
46
|
async getChildenList(id,caseObj){
|
56
|
-
let r= this.listAll({parent_id:id,...caseObj});
|
47
|
+
let r= this.fileDb.listAll({parent_id:id,...caseObj});
|
57
48
|
return r;
|
58
49
|
}
|
59
50
|
}
|