dborm-mysql 2.1.2 → 2.1.4
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/.history/base/dbORM_20220823101426.js +312 -0
- package/.history/base/dbORM_20221025153859.js +340 -0
- package/.history/base/dbORM_20221025154010.js +341 -0
- package/.history/base/dbORM_20221025154203.js +325 -0
- package/.history/base/dbORM_20221025154204.js +325 -0
- package/.history/base/dbORM_20221123193132.js +325 -0
- package/.history/base/dbORM_20221123193133.js +325 -0
- package/.history/index.d_20220831201504.ts +164 -0
- package/.history/index.d_20221025154537.ts +165 -0
- package/.history/index.d_20221025154538.ts +165 -0
- package/.history/package_20220831202000.json +36 -0
- package/.history/package_20221025154242.json +36 -0
- package/.history/package_20221123193139.json +36 -0
- package/base/dbORM.js +14 -1
- package/index.d.ts +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,312 @@
|
|
|
1
|
+
const _ = require('lodash');
|
|
2
|
+
|
|
3
|
+
const dbOrigin = require('./db');
|
|
4
|
+
const dbUtilOrigin = require('./dbUtil');
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
let dbFunss = (config) => {
|
|
8
|
+
let {dbConfig, log, options = {}} = config;
|
|
9
|
+
let {noConvertDbCodes = [], dbCode = 733, ignoreDataError = false, logExecuteTime = true} = options;
|
|
10
|
+
let exportsObj = {};
|
|
11
|
+
let db = dbOrigin(dbConfig, {
|
|
12
|
+
log: options.log || log,
|
|
13
|
+
noConvertDbCodes,
|
|
14
|
+
dbCode,
|
|
15
|
+
logExecuteTime //打印 sql 执行时间,默认开启
|
|
16
|
+
});
|
|
17
|
+
let dbUtil = dbUtilOrigin(config, {dbCode, ignoreDataError});
|
|
18
|
+
exportsObj.db = db;
|
|
19
|
+
exportsObj.dbUtil = dbUtil;
|
|
20
|
+
|
|
21
|
+
exportsObj.getList = async function (tableName, query, connection) {
|
|
22
|
+
let { selectFields, sort, limit = 0, offset = 0, initSessionSql} = query;
|
|
23
|
+
let params = [];
|
|
24
|
+
|
|
25
|
+
let {sql, insertFieldNames, insertFieldNameMap} = dbUtil.createSelectSql(tableName, selectFields);
|
|
26
|
+
|
|
27
|
+
query = dbUtil.convert2DbFieldName(tableName, query);
|
|
28
|
+
let whereSql = dbUtil.createWhereQuery(query, tableName, insertFieldNameMap);
|
|
29
|
+
if(whereSql.sql.length){
|
|
30
|
+
sql += ' where ' + whereSql.sql;
|
|
31
|
+
params = params.concat(whereSql.params);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
// 排序
|
|
35
|
+
if (sort === undefined
|
|
36
|
+
|| ((typeof sort === 'string') && sort.length <= 1)
|
|
37
|
+
|| (Array.isArray(sort)) && !sort.length
|
|
38
|
+
) {
|
|
39
|
+
if(dbUtil.getFieldNames(tableName).includes('create_time')){
|
|
40
|
+
sql += ' order by create_time desc ';
|
|
41
|
+
}
|
|
42
|
+
} else {
|
|
43
|
+
sort = Array.isArray(sort) ? sort : [sort];
|
|
44
|
+
let orderBySqls = sort.map(subSort => {
|
|
45
|
+
let [field, mode] = subSort.split(':');
|
|
46
|
+
field = dbUtil.toDbFieldNames(tableName, [field], insertFieldNames)[0];
|
|
47
|
+
return dbUtil.getOrderBySql(field, mode, tableName, insertFieldNames);
|
|
48
|
+
}).filter(sql => sql.length > 0);
|
|
49
|
+
if(orderBySqls.length){
|
|
50
|
+
sql += ' order by ' + orderBySqls.join(',');
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
// 分页
|
|
55
|
+
if (limit !== undefined && limit > 0) {
|
|
56
|
+
sql += ' limit ?,?';
|
|
57
|
+
params.push(offset, limit);
|
|
58
|
+
}
|
|
59
|
+
if(initSessionSql){
|
|
60
|
+
sql = initSessionSql + ';' + sql;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
return await db.query(sql, params, connection).then(res => {
|
|
64
|
+
if(initSessionSql){
|
|
65
|
+
res = res[1];
|
|
66
|
+
}
|
|
67
|
+
return dbUtil.convert2RamFieldName(tableName, res);
|
|
68
|
+
});
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
exportsObj.findOne = async function (tableName, query, connection) {
|
|
72
|
+
Object.assign(query, {
|
|
73
|
+
offset: 0,
|
|
74
|
+
limit: 1
|
|
75
|
+
});
|
|
76
|
+
return await exportsObj.getList(tableName, query, connection).then(res => res && res[0]);
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
exportsObj.getMapByField = async function (tableName, query, connection) {
|
|
80
|
+
let byField = _.get(query, 'byField');
|
|
81
|
+
if (_.isNil(byField)) {
|
|
82
|
+
throw new Error(`getMapByField need <byField>`);
|
|
83
|
+
}
|
|
84
|
+
let list = await exportsObj.getList(tableName, query, connection);
|
|
85
|
+
let byFields = list.map(item => item[byField]);
|
|
86
|
+
return _.zipObject(byFields, list);
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
exportsObj.getGroupByField = async function (tableName, query, connection) {
|
|
90
|
+
let byField = _.get(query, 'byField');
|
|
91
|
+
if (_.isNil(byField)) {
|
|
92
|
+
throw new Error(`getGroupByField need <byField>`);
|
|
93
|
+
}
|
|
94
|
+
let list = await exportsObj.getList(tableName, query, connection);
|
|
95
|
+
return _.groupBy(list, item => item[byField]);
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
exportsObj.getListByIds = async function (tableName, ids, connection) {
|
|
99
|
+
if(!ids || !ids.length){
|
|
100
|
+
return [];
|
|
101
|
+
}
|
|
102
|
+
return await exportsObj.getList(tableName, {
|
|
103
|
+
inFields: {
|
|
104
|
+
id: ids
|
|
105
|
+
}
|
|
106
|
+
}, connection);
|
|
107
|
+
};
|
|
108
|
+
|
|
109
|
+
exportsObj.getCount = async function (tableName, query, connection) {
|
|
110
|
+
query = dbUtil.convert2DbFieldName(tableName, query);
|
|
111
|
+
let whereSql = dbUtil.createWhereQuery(query, tableName);
|
|
112
|
+
let sql = 'select count(*) as count from ' + tableName + ' ';
|
|
113
|
+
let params = [];
|
|
114
|
+
if(whereSql.sql.length){
|
|
115
|
+
sql += ' where ' + whereSql.sql;
|
|
116
|
+
params = params.concat(whereSql.params);
|
|
117
|
+
}
|
|
118
|
+
return await db.query(sql, params, connection).then(res => {
|
|
119
|
+
return res[0].count;
|
|
120
|
+
});
|
|
121
|
+
};
|
|
122
|
+
|
|
123
|
+
exportsObj.pageQuery = async function (tableName, query, connection) {
|
|
124
|
+
let {offset, limit, initSql, initParams = [], keyword, sort, returnFields = ['count', 'list'], asFields = [], initSessionSql} = query;
|
|
125
|
+
let countSql = `select count(*) as count from (${initSql}) pageTable `, listSql = `select * from (${initSql}) pageTable `;
|
|
126
|
+
let countParams = [].concat(initParams), listParams = [].concat(initParams);
|
|
127
|
+
|
|
128
|
+
if(keyword){
|
|
129
|
+
let {sql, params} = dbUtil.createKeywordSql('pageTable', keyword);
|
|
130
|
+
if(params.length){
|
|
131
|
+
countSql = `${countSql} where ${sql} `;
|
|
132
|
+
listSql = `${listSql} where ${sql}`;
|
|
133
|
+
countParams = countParams.concat(params);
|
|
134
|
+
listParams = listParams.concat(params);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
// 排序
|
|
138
|
+
if (!(sort === undefined
|
|
139
|
+
|| ((typeof sort === 'string') && sort.length <= 1)
|
|
140
|
+
|| (Array.isArray(sort)) && !sort.length
|
|
141
|
+
)){
|
|
142
|
+
sort = Array.isArray(sort) ? sort : [sort];
|
|
143
|
+
let orderBySqls = sort.map(subSort => {
|
|
144
|
+
let [field, mode] = subSort.split(':');
|
|
145
|
+
field = dbUtil.toDbFieldNames(tableName, [field], asFields)[0];
|
|
146
|
+
return dbUtil.getOrderBySql(field, mode, 'pageTable', [field]);
|
|
147
|
+
}).filter(sql => sql.length > 0);
|
|
148
|
+
if(orderBySqls.length){
|
|
149
|
+
listSql += ' order by ' + orderBySqls.join(',');
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
// 分页
|
|
153
|
+
if (!_.isNil(limit) && !_.isNil(offset)) {
|
|
154
|
+
listSql += ' limit ?,?';
|
|
155
|
+
listParams = listParams.concat([offset, limit]);
|
|
156
|
+
}
|
|
157
|
+
if(initSessionSql){
|
|
158
|
+
listSql = initSessionSql + ';' + listSql;
|
|
159
|
+
countSql = initSessionSql + ';' + countSql;
|
|
160
|
+
}
|
|
161
|
+
let querys = []
|
|
162
|
+
if(returnFields.includes('list')){
|
|
163
|
+
let list = db.query(listSql, listParams, connection).then(res => {
|
|
164
|
+
if(initSessionSql){
|
|
165
|
+
res = res[1];
|
|
166
|
+
}
|
|
167
|
+
return dbUtil.convert2RamFieldName(tableName, res);
|
|
168
|
+
});
|
|
169
|
+
querys.push(list);
|
|
170
|
+
} else {
|
|
171
|
+
querys.push(Promise.resolve(null));
|
|
172
|
+
}
|
|
173
|
+
if(returnFields.includes('count')){
|
|
174
|
+
let count = db.query(countSql, countParams, connection).then(res => {
|
|
175
|
+
if(initSessionSql){
|
|
176
|
+
res = res[1];
|
|
177
|
+
}
|
|
178
|
+
return res[0].count;
|
|
179
|
+
});
|
|
180
|
+
querys.push(count);
|
|
181
|
+
} else {
|
|
182
|
+
querys.push(Promise.resolve(null));
|
|
183
|
+
}
|
|
184
|
+
let [list,count] = await Promise.all(querys);
|
|
185
|
+
return {list, count};
|
|
186
|
+
};
|
|
187
|
+
|
|
188
|
+
exportsObj.add = async function (tableName, data, connection) {
|
|
189
|
+
// 添加数据, 不能包含 id 字段
|
|
190
|
+
if (data.id) {
|
|
191
|
+
Reflect.deleteProperty(data, 'id');
|
|
192
|
+
}
|
|
193
|
+
data = dbUtil.convert2DbFieldName(tableName, data);
|
|
194
|
+
let insertSql = dbUtil.createInsertSql(tableName, data);
|
|
195
|
+
return await db.query(insertSql.sql, insertSql.params, connection).then(res => res.insertId);
|
|
196
|
+
};
|
|
197
|
+
|
|
198
|
+
exportsObj.delete = async function (tableName, data, connection) {
|
|
199
|
+
data = dbUtil.convert2DbFieldName(tableName, data);
|
|
200
|
+
let whereSql = dbUtil.createWhereQuery(data, tableName);
|
|
201
|
+
let sql = `delete from ${tableName} `;
|
|
202
|
+
let params = [];
|
|
203
|
+
if (whereSql.params.length || whereSql.sql.length) {
|
|
204
|
+
sql += ' where ' + whereSql.sql;
|
|
205
|
+
params = params.concat(whereSql.params);
|
|
206
|
+
} else {
|
|
207
|
+
return await Promise.reject({
|
|
208
|
+
code: dbCode,
|
|
209
|
+
message: '不能随意执行全部删除操作'
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
return await db.query(sql, params, connection);
|
|
213
|
+
};
|
|
214
|
+
|
|
215
|
+
exportsObj.updateByIds = async function (tableName, data, ids, connection) {
|
|
216
|
+
if(!ids || !ids.length){
|
|
217
|
+
return await Promise.resolve('ok');
|
|
218
|
+
}
|
|
219
|
+
let sql = `update ${tableName} set `;
|
|
220
|
+
data = dbUtil.convert2DbFieldName(tableName, data);
|
|
221
|
+
let params = [];
|
|
222
|
+
let updateSql = dbUtil.createUpdateQuery(tableName, data);
|
|
223
|
+
sql += updateSql.sql;
|
|
224
|
+
params = params.concat(updateSql.params);
|
|
225
|
+
sql += ' where id in (?)';
|
|
226
|
+
params.push(ids);
|
|
227
|
+
await db.query(sql, params, connection);
|
|
228
|
+
return 'ok';
|
|
229
|
+
};
|
|
230
|
+
|
|
231
|
+
exportsObj.update = async function (tableName, data, id, connection) {
|
|
232
|
+
await exportsObj.updateByIds(tableName, data, [id], connection);
|
|
233
|
+
return 'ok';
|
|
234
|
+
};
|
|
235
|
+
|
|
236
|
+
exportsObj.updateByQuery = async function (tableName, data, query, connection) {
|
|
237
|
+
let sql = `update ${tableName} set `;
|
|
238
|
+
data = dbUtil.convert2DbFieldName(tableName, data);
|
|
239
|
+
let params = [];
|
|
240
|
+
let updateSql = dbUtil.createUpdateQuery(tableName, data);
|
|
241
|
+
sql += updateSql.sql;
|
|
242
|
+
params = params.concat(updateSql.params);
|
|
243
|
+
query = dbUtil.convert2DbFieldName(tableName, query);
|
|
244
|
+
let whereSql = dbUtil.createWhereQuery(query, tableName);
|
|
245
|
+
if(whereSql.sql.length){
|
|
246
|
+
sql += ' where ' + whereSql.sql;
|
|
247
|
+
params = params.concat(whereSql.params);
|
|
248
|
+
}else{
|
|
249
|
+
return await Promise.reject(new Error('updateByQuery不能无条件update'));
|
|
250
|
+
}
|
|
251
|
+
await db.query(sql, params, connection);
|
|
252
|
+
return 'ok';
|
|
253
|
+
};
|
|
254
|
+
|
|
255
|
+
exportsObj.get = async function (tableName, id, connection) {
|
|
256
|
+
return await db.query(`select * from ${tableName} where id = ?`, [id], connection)
|
|
257
|
+
.then(res => dbUtil.convert2RamFieldName(tableName, res)[0]);
|
|
258
|
+
};
|
|
259
|
+
|
|
260
|
+
exportsObj.createBulk = async function (tableName, objs, connection) {
|
|
261
|
+
if (!objs || !objs.length)
|
|
262
|
+
return await Promise.resolve();
|
|
263
|
+
objs = dbUtil.convert2DbFieldName(tableName, objs);
|
|
264
|
+
let insertSql = dbUtil.createBulkInsertSql(tableName, objs);
|
|
265
|
+
return await db.query(insertSql.sql, insertSql.params, connection);
|
|
266
|
+
};
|
|
267
|
+
|
|
268
|
+
exportsObj.updateBulk = async function (tableName, objs, connection) {
|
|
269
|
+
if (!objs || !objs.length)
|
|
270
|
+
return await Promise.resolve('ok');
|
|
271
|
+
objs = dbUtil.convert2DbFieldName(tableName, objs);
|
|
272
|
+
let insertSql = dbUtil.createBulkUpdateSql(tableName, objs);
|
|
273
|
+
await db.query(insertSql.sql, insertSql.params, connection);
|
|
274
|
+
return 'ok';
|
|
275
|
+
};
|
|
276
|
+
|
|
277
|
+
exportsObj.deleteByIds = async function (tableName, ids, connection) {
|
|
278
|
+
if (!ids || ids.length == 0)
|
|
279
|
+
return await Promise.resolve();
|
|
280
|
+
let sql = 'delete from ' + tableName + ' where id in (?) ';
|
|
281
|
+
let params = [ids];
|
|
282
|
+
return await db.query(sql, params, connection);
|
|
283
|
+
};
|
|
284
|
+
return exportsObj;
|
|
285
|
+
};
|
|
286
|
+
|
|
287
|
+
module.exports = (config) => {
|
|
288
|
+
let dbFuns = dbFunss(config);
|
|
289
|
+
let {options = {}} = config;
|
|
290
|
+
let {dbCode = 733, noConvertDbCodes = []} = options;
|
|
291
|
+
let result = function(tableName){
|
|
292
|
+
let obj = {
|
|
293
|
+
db: dbFuns.db,
|
|
294
|
+
dbUtil: dbFuns.dbUtil
|
|
295
|
+
};
|
|
296
|
+
Object.keys(dbFuns).forEach(key => {
|
|
297
|
+
if(key !== 'db' && key !== 'dbUtil'){
|
|
298
|
+
obj[key] = (...rest) => dbFuns[key].apply(null, [tableName, ...rest]).catch(err => {
|
|
299
|
+
if(!noConvertDbCodes.includes(dbCode)){
|
|
300
|
+
err.code = dbCode;
|
|
301
|
+
}
|
|
302
|
+
throw err;
|
|
303
|
+
});
|
|
304
|
+
}
|
|
305
|
+
});
|
|
306
|
+
return obj;
|
|
307
|
+
};
|
|
308
|
+
result.db = dbFuns.db;
|
|
309
|
+
result.dbUtil = dbFuns.dbUtil;
|
|
310
|
+
return result;
|
|
311
|
+
};
|
|
312
|
+
|
|
@@ -0,0 +1,340 @@
|
|
|
1
|
+
const _ = require('lodash');
|
|
2
|
+
|
|
3
|
+
const dbOrigin = require('./db');
|
|
4
|
+
const dbUtilOrigin = require('./dbUtil');
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
let dbFunss = (config) => {
|
|
8
|
+
let {dbConfig, log, options = {}} = config;
|
|
9
|
+
let {noConvertDbCodes = [], dbCode = 733, ignoreDataError = false, logExecuteTime = true} = options;
|
|
10
|
+
let exportsObj = {};
|
|
11
|
+
let db = dbOrigin(dbConfig, {
|
|
12
|
+
log: options.log || log,
|
|
13
|
+
noConvertDbCodes,
|
|
14
|
+
dbCode,
|
|
15
|
+
logExecuteTime //打印 sql 执行时间,默认开启
|
|
16
|
+
});
|
|
17
|
+
let dbUtil = dbUtilOrigin(config, {dbCode, ignoreDataError});
|
|
18
|
+
exportsObj.db = db;
|
|
19
|
+
exportsObj.dbUtil = dbUtil;
|
|
20
|
+
|
|
21
|
+
exportsObj.getList = async function (tableName, query, connection) {
|
|
22
|
+
let { selectFields, sort, limit = 0, offset = 0, initSessionSql} = query;
|
|
23
|
+
let params = [];
|
|
24
|
+
|
|
25
|
+
let {sql, insertFieldNames, insertFieldNameMap} = dbUtil.createSelectSql(tableName, selectFields);
|
|
26
|
+
|
|
27
|
+
query = dbUtil.convert2DbFieldName(tableName, query);
|
|
28
|
+
let whereSql = dbUtil.createWhereQuery(query, tableName, insertFieldNameMap);
|
|
29
|
+
if(whereSql.sql.length){
|
|
30
|
+
sql += ' where ' + whereSql.sql;
|
|
31
|
+
params = params.concat(whereSql.params);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
// 排序
|
|
35
|
+
if (sort === undefined
|
|
36
|
+
|| ((typeof sort === 'string') && sort.length <= 1)
|
|
37
|
+
|| (Array.isArray(sort)) && !sort.length
|
|
38
|
+
) {
|
|
39
|
+
if(dbUtil.getFieldNames(tableName).includes('create_time')){
|
|
40
|
+
sql += ' order by create_time desc ';
|
|
41
|
+
}
|
|
42
|
+
} else {
|
|
43
|
+
sort = Array.isArray(sort) ? sort : [sort];
|
|
44
|
+
let orderBySqls = sort.map(subSort => {
|
|
45
|
+
let [field, mode] = subSort.split(':');
|
|
46
|
+
field = dbUtil.toDbFieldNames(tableName, [field], insertFieldNames)[0];
|
|
47
|
+
return dbUtil.getOrderBySql(field, mode, tableName, insertFieldNames);
|
|
48
|
+
}).filter(sql => sql.length > 0);
|
|
49
|
+
if(orderBySqls.length){
|
|
50
|
+
sql += ' order by ' + orderBySqls.join(',');
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
// 分页
|
|
55
|
+
if (limit !== undefined && limit > 0) {
|
|
56
|
+
sql += ' limit ?,?';
|
|
57
|
+
params.push(offset, limit);
|
|
58
|
+
}
|
|
59
|
+
if(initSessionSql){
|
|
60
|
+
sql = initSessionSql + ';' + sql;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
return await db.query(sql, params, connection).then(res => {
|
|
64
|
+
if(initSessionSql){
|
|
65
|
+
res = res[1];
|
|
66
|
+
}
|
|
67
|
+
return dbUtil.convert2RamFieldName(tableName, res);
|
|
68
|
+
});
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
exportsObj.findOne = async function (tableName, query, connection) {
|
|
72
|
+
Object.assign(query, {
|
|
73
|
+
offset: 0,
|
|
74
|
+
limit: 1
|
|
75
|
+
});
|
|
76
|
+
return await exportsObj.getList(tableName, query, connection).then(res => res && res[0]);
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
exportsObj.getMapByField = async function (tableName, query, connection) {
|
|
80
|
+
let byField = _.get(query, 'byField');
|
|
81
|
+
if (_.isNil(byField)) {
|
|
82
|
+
throw new Error(`getMapByField need <byField>`);
|
|
83
|
+
}
|
|
84
|
+
let list = await exportsObj.getList(tableName, query, connection);
|
|
85
|
+
let byFields = list.map(item => item[byField]);
|
|
86
|
+
return _.zipObject(byFields, list);
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
exportsObj.getGroupByField = async function (tableName, query, connection) {
|
|
90
|
+
let byField = _.get(query, 'byField');
|
|
91
|
+
if (_.isNil(byField)) {
|
|
92
|
+
throw new Error(`getGroupByField need <byField>`);
|
|
93
|
+
}
|
|
94
|
+
let list = await exportsObj.getList(tableName, query, connection);
|
|
95
|
+
return _.groupBy(list, item => item[byField]);
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
exportsObj.getListByIds = async function (tableName, ids, connection) {
|
|
99
|
+
if(!ids || !ids.length){
|
|
100
|
+
return [];
|
|
101
|
+
}
|
|
102
|
+
return await exportsObj.getList(tableName, {
|
|
103
|
+
inFields: {
|
|
104
|
+
id: ids
|
|
105
|
+
}
|
|
106
|
+
}, connection);
|
|
107
|
+
};
|
|
108
|
+
|
|
109
|
+
exportsObj.getCount = async function (tableName, query, connection) {
|
|
110
|
+
query = dbUtil.convert2DbFieldName(tableName, query);
|
|
111
|
+
let whereSql = dbUtil.createWhereQuery(query, tableName);
|
|
112
|
+
let sql = 'select count(*) as count from ' + tableName + ' ';
|
|
113
|
+
let params = [];
|
|
114
|
+
if(whereSql.sql.length){
|
|
115
|
+
sql += ' where ' + whereSql.sql;
|
|
116
|
+
params = params.concat(whereSql.params);
|
|
117
|
+
}
|
|
118
|
+
return await db.query(sql, params, connection).then(res => {
|
|
119
|
+
return res[0].count;
|
|
120
|
+
});
|
|
121
|
+
};
|
|
122
|
+
|
|
123
|
+
exportsObj.pageQuery = async function (tableName, query, connection) {
|
|
124
|
+
let {offset, limit, initSql, initParams = [], keyword, sort, returnFields = ['count', 'list'], asFields = [], initSessionSql} = query;
|
|
125
|
+
let countSql = `select count(*) as count from (${initSql}) pageTable `, listSql = `select * from (${initSql}) pageTable `;
|
|
126
|
+
let countParams = [].concat(initParams), listParams = [].concat(initParams);
|
|
127
|
+
|
|
128
|
+
if(keyword){
|
|
129
|
+
let {sql, params} = dbUtil.createKeywordSql('pageTable', keyword);
|
|
130
|
+
if(params.length){
|
|
131
|
+
countSql = `${countSql} where ${sql} `;
|
|
132
|
+
listSql = `${listSql} where ${sql}`;
|
|
133
|
+
countParams = countParams.concat(params);
|
|
134
|
+
listParams = listParams.concat(params);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
// 排序
|
|
138
|
+
if (!(sort === undefined
|
|
139
|
+
|| ((typeof sort === 'string') && sort.length <= 1)
|
|
140
|
+
|| (Array.isArray(sort)) && !sort.length
|
|
141
|
+
)){
|
|
142
|
+
sort = Array.isArray(sort) ? sort : [sort];
|
|
143
|
+
let orderBySqls = sort.map(subSort => {
|
|
144
|
+
let [field, mode] = subSort.split(':');
|
|
145
|
+
field = dbUtil.toDbFieldNames(tableName, [field], asFields)[0];
|
|
146
|
+
return dbUtil.getOrderBySql(field, mode, 'pageTable', [field]);
|
|
147
|
+
}).filter(sql => sql.length > 0);
|
|
148
|
+
if(orderBySqls.length){
|
|
149
|
+
listSql += ' order by ' + orderBySqls.join(',');
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
// 分页
|
|
153
|
+
if (!_.isNil(limit) && !_.isNil(offset)) {
|
|
154
|
+
listSql += ' limit ?,?';
|
|
155
|
+
listParams = listParams.concat([offset, limit]);
|
|
156
|
+
}
|
|
157
|
+
if(initSessionSql){
|
|
158
|
+
listSql = initSessionSql + ';' + listSql;
|
|
159
|
+
countSql = initSessionSql + ';' + countSql;
|
|
160
|
+
}
|
|
161
|
+
let querys = []
|
|
162
|
+
if(returnFields.includes('list')){
|
|
163
|
+
let list = db.query(listSql, listParams, connection).then(res => {
|
|
164
|
+
if(initSessionSql){
|
|
165
|
+
res = res[1];
|
|
166
|
+
}
|
|
167
|
+
return dbUtil.convert2RamFieldName(tableName, res);
|
|
168
|
+
});
|
|
169
|
+
querys.push(list);
|
|
170
|
+
} else {
|
|
171
|
+
querys.push(Promise.resolve(null));
|
|
172
|
+
}
|
|
173
|
+
if(returnFields.includes('count')){
|
|
174
|
+
let count = db.query(countSql, countParams, connection).then(res => {
|
|
175
|
+
if(initSessionSql){
|
|
176
|
+
res = res[1];
|
|
177
|
+
}
|
|
178
|
+
return res[0].count;
|
|
179
|
+
});
|
|
180
|
+
querys.push(count);
|
|
181
|
+
} else {
|
|
182
|
+
querys.push(Promise.resolve(null));
|
|
183
|
+
}
|
|
184
|
+
let [list,count] = await Promise.all(querys);
|
|
185
|
+
return {list, count};
|
|
186
|
+
};
|
|
187
|
+
|
|
188
|
+
exportsObj.add = async function (tableName, data, connection) {
|
|
189
|
+
// 添加数据, 不能包含 id 字段
|
|
190
|
+
if (data.id) {
|
|
191
|
+
Reflect.deleteProperty(data, 'id');
|
|
192
|
+
}
|
|
193
|
+
data = dbUtil.convert2DbFieldName(tableName, data);
|
|
194
|
+
let insertSql = dbUtil.createInsertSql(tableName, data);
|
|
195
|
+
return await db.query(insertSql.sql, insertSql.params, connection).then(res => res.insertId);
|
|
196
|
+
};
|
|
197
|
+
|
|
198
|
+
exportsObj.delete = async function (tableName, data, connection) {
|
|
199
|
+
data = dbUtil.convert2DbFieldName(tableName, data);
|
|
200
|
+
let whereSql = dbUtil.createWhereQuery(data, tableName);
|
|
201
|
+
let sql = `delete from ${tableName} `;
|
|
202
|
+
let params = [];
|
|
203
|
+
if (whereSql.params.length || whereSql.sql.length) {
|
|
204
|
+
sql += ' where ' + whereSql.sql;
|
|
205
|
+
params = params.concat(whereSql.params);
|
|
206
|
+
} else {
|
|
207
|
+
return await Promise.reject({
|
|
208
|
+
code: dbCode,
|
|
209
|
+
message: '不能随意执行全部删除操作'
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
return await db.query(sql, params, connection);
|
|
213
|
+
};
|
|
214
|
+
|
|
215
|
+
exportsObj.updateByIds = async function (tableName, data, ids, connection) {
|
|
216
|
+
if(!ids || !ids.length){
|
|
217
|
+
return await Promise.resolve('ok');
|
|
218
|
+
}
|
|
219
|
+
let sql = `update ${tableName} set `;
|
|
220
|
+
data = dbUtil.convert2DbFieldName(tableName, data);
|
|
221
|
+
let params = [];
|
|
222
|
+
let updateSql = dbUtil.createUpdateQuery(tableName, data);
|
|
223
|
+
sql += updateSql.sql;
|
|
224
|
+
params = params.concat(updateSql.params);
|
|
225
|
+
sql += ' where id in (?)';
|
|
226
|
+
params.push(ids);
|
|
227
|
+
await db.query(sql, params, connection);
|
|
228
|
+
return 'ok';
|
|
229
|
+
};
|
|
230
|
+
|
|
231
|
+
exportsObj.batchUpdateByIds = async function (tableName, data, ids, options = {}, connection) {
|
|
232
|
+
if (!ids || !ids.length) {
|
|
233
|
+
return await Promise.resolve('ok');
|
|
234
|
+
}
|
|
235
|
+
let {size = 20} = options;
|
|
236
|
+
let offset = 0;
|
|
237
|
+
while (offset < ids.length) {
|
|
238
|
+
let surveyDatas = await surveyDataDao.getList({
|
|
239
|
+
inFields: {
|
|
240
|
+
id: oneSubmitIds.slice(offset, offset + limit)
|
|
241
|
+
},
|
|
242
|
+
selectFields
|
|
243
|
+
}, conn);
|
|
244
|
+
await handleSurveyDatas(surveyDatas, {flowId, surveyId, domainOwner, surveyApprovers, logContext}, conn);
|
|
245
|
+
offset += limit;
|
|
246
|
+
}
|
|
247
|
+
let sql = `update ${tableName} set `;
|
|
248
|
+
data = dbUtil.convert2DbFieldName(tableName, data);
|
|
249
|
+
let params = [];
|
|
250
|
+
let updateSql = dbUtil.createUpdateQuery(tableName, data);
|
|
251
|
+
sql += updateSql.sql;
|
|
252
|
+
params = params.concat(updateSql.params);
|
|
253
|
+
sql += ' where id in (?)';
|
|
254
|
+
params.push(ids);
|
|
255
|
+
await db.query(sql, params, connection);
|
|
256
|
+
return 'ok';
|
|
257
|
+
};
|
|
258
|
+
|
|
259
|
+
exportsObj.update = async function (tableName, data, id, connection) {
|
|
260
|
+
await exportsObj.updateByIds(tableName, data, [id], connection);
|
|
261
|
+
return 'ok';
|
|
262
|
+
};
|
|
263
|
+
|
|
264
|
+
exportsObj.updateByQuery = async function (tableName, data, query, connection) {
|
|
265
|
+
let sql = `update ${tableName} set `;
|
|
266
|
+
data = dbUtil.convert2DbFieldName(tableName, data);
|
|
267
|
+
let params = [];
|
|
268
|
+
let updateSql = dbUtil.createUpdateQuery(tableName, data);
|
|
269
|
+
sql += updateSql.sql;
|
|
270
|
+
params = params.concat(updateSql.params);
|
|
271
|
+
query = dbUtil.convert2DbFieldName(tableName, query);
|
|
272
|
+
let whereSql = dbUtil.createWhereQuery(query, tableName);
|
|
273
|
+
if(whereSql.sql.length){
|
|
274
|
+
sql += ' where ' + whereSql.sql;
|
|
275
|
+
params = params.concat(whereSql.params);
|
|
276
|
+
}else{
|
|
277
|
+
return await Promise.reject(new Error('updateByQuery不能无条件update'));
|
|
278
|
+
}
|
|
279
|
+
await db.query(sql, params, connection);
|
|
280
|
+
return 'ok';
|
|
281
|
+
};
|
|
282
|
+
|
|
283
|
+
exportsObj.get = async function (tableName, id, connection) {
|
|
284
|
+
return await db.query(`select * from ${tableName} where id = ?`, [id], connection)
|
|
285
|
+
.then(res => dbUtil.convert2RamFieldName(tableName, res)[0]);
|
|
286
|
+
};
|
|
287
|
+
|
|
288
|
+
exportsObj.createBulk = async function (tableName, objs, connection) {
|
|
289
|
+
if (!objs || !objs.length)
|
|
290
|
+
return await Promise.resolve();
|
|
291
|
+
objs = dbUtil.convert2DbFieldName(tableName, objs);
|
|
292
|
+
let insertSql = dbUtil.createBulkInsertSql(tableName, objs);
|
|
293
|
+
return await db.query(insertSql.sql, insertSql.params, connection);
|
|
294
|
+
};
|
|
295
|
+
|
|
296
|
+
exportsObj.updateBulk = async function (tableName, objs, connection) {
|
|
297
|
+
if (!objs || !objs.length)
|
|
298
|
+
return await Promise.resolve('ok');
|
|
299
|
+
objs = dbUtil.convert2DbFieldName(tableName, objs);
|
|
300
|
+
let insertSql = dbUtil.createBulkUpdateSql(tableName, objs);
|
|
301
|
+
await db.query(insertSql.sql, insertSql.params, connection);
|
|
302
|
+
return 'ok';
|
|
303
|
+
};
|
|
304
|
+
|
|
305
|
+
exportsObj.deleteByIds = async function (tableName, ids, connection) {
|
|
306
|
+
if (!ids || ids.length == 0)
|
|
307
|
+
return await Promise.resolve();
|
|
308
|
+
let sql = 'delete from ' + tableName + ' where id in (?) ';
|
|
309
|
+
let params = [ids];
|
|
310
|
+
return await db.query(sql, params, connection);
|
|
311
|
+
};
|
|
312
|
+
return exportsObj;
|
|
313
|
+
};
|
|
314
|
+
|
|
315
|
+
module.exports = (config) => {
|
|
316
|
+
let dbFuns = dbFunss(config);
|
|
317
|
+
let {options = {}} = config;
|
|
318
|
+
let {dbCode = 733, noConvertDbCodes = []} = options;
|
|
319
|
+
let result = function(tableName){
|
|
320
|
+
let obj = {
|
|
321
|
+
db: dbFuns.db,
|
|
322
|
+
dbUtil: dbFuns.dbUtil
|
|
323
|
+
};
|
|
324
|
+
Object.keys(dbFuns).forEach(key => {
|
|
325
|
+
if(key !== 'db' && key !== 'dbUtil'){
|
|
326
|
+
obj[key] = (...rest) => dbFuns[key].apply(null, [tableName, ...rest]).catch(err => {
|
|
327
|
+
if(!noConvertDbCodes.includes(dbCode)){
|
|
328
|
+
err.code = dbCode;
|
|
329
|
+
}
|
|
330
|
+
throw err;
|
|
331
|
+
});
|
|
332
|
+
}
|
|
333
|
+
});
|
|
334
|
+
return obj;
|
|
335
|
+
};
|
|
336
|
+
result.db = dbFuns.db;
|
|
337
|
+
result.dbUtil = dbFuns.dbUtil;
|
|
338
|
+
return result;
|
|
339
|
+
};
|
|
340
|
+
|