ming_node 2.9.2 → 2.9.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|
}
|