mqtt-devices-parser 1.0.10 → 1.0.12
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/Changelog.md +13 -0
- package/index.js +47 -17
- package/models/devices.models.js +12 -4
- package/models/firmwares.models.js +3 -3
- package/models/fota.models.js +32 -0
- package/models/logs_fota.models.js +41 -0
- package/models/{sensor_logs.models.js → logs_sensor.models.js} +2 -2
- package/models/modelPermissions.models.js +23 -0
- package/models/models.js +238 -211
- package/models/projects.models.js +8 -0
- package/package.json +1 -1
- package/src/db/data.js +89 -85
- package/src/db/db.js +24 -0
- package/src/db/device.js +166 -102
- package/src/db/firmware.js +30 -5
- package/src/db/fota.js +219 -0
- package/src/device/Readme.md +39 -4
- package/src/device/device.js +265 -124
package/src/db/data.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
const moment = require('moment');
|
|
2
2
|
var mysql = require('mysql2')
|
|
3
3
|
|
|
4
|
+
// Use this call only for dbs outside this module, they need to be registered on sequelize
|
|
5
|
+
|
|
4
6
|
var self = module.exports = {
|
|
5
7
|
|
|
6
8
|
checkEntry : async (table,deviceId)=>{
|
|
@@ -19,8 +21,7 @@ var self = module.exports = {
|
|
|
19
21
|
return resolve(null);
|
|
20
22
|
})
|
|
21
23
|
.catch( err => {
|
|
22
|
-
|
|
23
|
-
return resolve(null);
|
|
24
|
+
return reject(err);
|
|
24
25
|
});
|
|
25
26
|
});
|
|
26
27
|
},
|
|
@@ -73,8 +74,7 @@ var self = module.exports = {
|
|
|
73
74
|
return resolve(rows);
|
|
74
75
|
})
|
|
75
76
|
.catch((err)=>{
|
|
76
|
-
|
|
77
|
-
return resolve();
|
|
77
|
+
return reject(err);
|
|
78
78
|
})
|
|
79
79
|
}else{
|
|
80
80
|
let filter = {
|
|
@@ -85,12 +85,14 @@ var self = module.exports = {
|
|
|
85
85
|
return resolve(rows);
|
|
86
86
|
})
|
|
87
87
|
.catch((err)=>{
|
|
88
|
-
|
|
89
|
-
return resolve();
|
|
88
|
+
return reject(err);
|
|
90
89
|
})
|
|
91
90
|
}
|
|
92
91
|
|
|
93
|
-
}else
|
|
92
|
+
}else{
|
|
93
|
+
return resolve();
|
|
94
|
+
//return reject(`columns not found for table ${table}`);
|
|
95
|
+
}
|
|
94
96
|
}else{
|
|
95
97
|
|
|
96
98
|
let key = topic;
|
|
@@ -110,8 +112,7 @@ var self = module.exports = {
|
|
|
110
112
|
return resolve(rows);
|
|
111
113
|
})
|
|
112
114
|
.catch((err)=>{
|
|
113
|
-
|
|
114
|
-
return resolve(null);
|
|
115
|
+
return reject(err);
|
|
115
116
|
})
|
|
116
117
|
}else{
|
|
117
118
|
let filter = {
|
|
@@ -123,11 +124,13 @@ var self = module.exports = {
|
|
|
123
124
|
return resolve(rows);
|
|
124
125
|
})
|
|
125
126
|
.catch((err)=>{
|
|
126
|
-
|
|
127
|
-
return resolve(null);
|
|
127
|
+
return reject(err);
|
|
128
128
|
})
|
|
129
129
|
}
|
|
130
|
-
}else
|
|
130
|
+
}else{
|
|
131
|
+
return resolve();
|
|
132
|
+
//return reject(`columns not found for table ${table}`);
|
|
133
|
+
}
|
|
131
134
|
}
|
|
132
135
|
})
|
|
133
136
|
},
|
|
@@ -137,7 +140,7 @@ var self = module.exports = {
|
|
|
137
140
|
return new Promise( async (resolve, reject) => {
|
|
138
141
|
|
|
139
142
|
if (!payload || typeof payload !== 'object')
|
|
140
|
-
return
|
|
143
|
+
return reject("Not object");
|
|
141
144
|
|
|
142
145
|
let obj = {
|
|
143
146
|
updatedAt: moment().utc().format('YYYY-MM-DD HH:mm:ss'),
|
|
@@ -146,8 +149,10 @@ var self = module.exports = {
|
|
|
146
149
|
|
|
147
150
|
// Get columns info
|
|
148
151
|
const db_columns = $.models.get(table);
|
|
149
|
-
if (db_columns == null)
|
|
150
|
-
|
|
152
|
+
if (db_columns == null){
|
|
153
|
+
resolve();
|
|
154
|
+
//return reject(`columns not found for table ${table}`);
|
|
155
|
+
}
|
|
151
156
|
|
|
152
157
|
// Prepare data for insertion
|
|
153
158
|
for (let key in payload) {
|
|
@@ -171,8 +176,7 @@ var self = module.exports = {
|
|
|
171
176
|
return resolve(rows);
|
|
172
177
|
})
|
|
173
178
|
.catch((err)=>{
|
|
174
|
-
|
|
175
|
-
return resolve();
|
|
179
|
+
return reject(err);
|
|
176
180
|
})
|
|
177
181
|
}else{
|
|
178
182
|
let filter = {
|
|
@@ -183,12 +187,9 @@ var self = module.exports = {
|
|
|
183
187
|
return resolve(rows);
|
|
184
188
|
})
|
|
185
189
|
.catch((err)=>{
|
|
186
|
-
|
|
187
|
-
return resolve();
|
|
190
|
+
return reject(err);
|
|
188
191
|
})
|
|
189
192
|
}
|
|
190
|
-
|
|
191
|
-
return resolve();
|
|
192
193
|
});
|
|
193
194
|
},
|
|
194
195
|
|
|
@@ -198,74 +199,78 @@ var self = module.exports = {
|
|
|
198
199
|
|
|
199
200
|
if(!payload) return resolve();
|
|
200
201
|
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
202
|
+
let data = null;
|
|
203
|
+
// check if data is in JSON format
|
|
204
|
+
try{
|
|
205
|
+
data = JSON.parse(payload);
|
|
206
|
+
}catch(e){
|
|
207
|
+
data = payload;
|
|
208
|
+
}
|
|
208
209
|
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
210
|
+
let obj = {
|
|
211
|
+
updatedAt : moment().utc().format('YYYY-MM-DD HH:mm:ss')
|
|
212
|
+
}
|
|
212
213
|
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
214
|
+
let db_columns = $.models.get(table);
|
|
215
|
+
if(db_columns == null){
|
|
216
|
+
resolve();
|
|
217
|
+
//return reject(`columns not found for table ${table}`);
|
|
218
|
+
}
|
|
216
219
|
|
|
217
|
-
|
|
220
|
+
let index = topic.indexOf("/");
|
|
218
221
|
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
+
if(index > -1){ // check if topic has subtopics
|
|
223
|
+
let key = topic.substring(0,index);
|
|
224
|
+
topic = topic.substring(index+1);
|
|
222
225
|
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
+
if(db_columns.hasOwnProperty(key)){ // check if db has a column for this key
|
|
227
|
+
// create JSON struct with the remaining topic
|
|
228
|
+
// key is the column
|
|
226
229
|
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
230
|
+
// build object with the remaining topic and respective data
|
|
231
|
+
if(typeof data === "object")
|
|
232
|
+
obj[key] = JSON.stringify(parser.pathIntoObject(topic,JSON.stringify(data)))
|
|
233
|
+
else
|
|
234
|
+
obj[key] = JSON.stringify(parser.pathIntoObject(topic,data));
|
|
235
|
+
|
|
236
|
+
obj['device_id'] = deviceId;
|
|
237
|
+
obj['createdAt'] = moment().utc().format('YYYY-MM-DD HH:mm:ss');
|
|
238
|
+
$.db.insert(table,obj)
|
|
239
|
+
.then((rows)=>{
|
|
240
|
+
return resolve(rows);
|
|
241
|
+
})
|
|
242
|
+
.catch((err)=>{
|
|
243
|
+
return reject(err);
|
|
244
|
+
})
|
|
232
245
|
|
|
233
|
-
obj['device_id'] = deviceId;
|
|
234
|
-
obj['createdAt'] = moment().utc().format('YYYY-MM-DD HH:mm:ss');
|
|
235
|
-
$.db.insert(table,obj)
|
|
236
|
-
.then((rows)=>{
|
|
237
|
-
return resolve(rows);
|
|
238
|
-
})
|
|
239
|
-
.catch((err)=>{
|
|
240
|
-
console.log(err);
|
|
241
|
-
return resolve();
|
|
242
|
-
})
|
|
243
|
-
|
|
244
|
-
}else
|
|
245
|
-
return resolve();
|
|
246
246
|
}else{
|
|
247
|
+
resolve();
|
|
248
|
+
//return reject(`column ${key} not found for table ${table}`);
|
|
249
|
+
}
|
|
250
|
+
}else{
|
|
247
251
|
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
252
|
+
let key = topic;
|
|
253
|
+
if(db_columns.hasOwnProperty(key)){ // check if db has a column for this key
|
|
254
|
+
// build object with respective data
|
|
255
|
+
if(typeof data === "object")
|
|
256
|
+
obj[key] = JSON.stringify(data);
|
|
257
|
+
else
|
|
258
|
+
obj[key] = data;
|
|
255
259
|
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
260
|
+
obj['device_id'] = deviceId;
|
|
261
|
+
obj['createdAt'] = moment().utc().format('YYYY-MM-DD HH:mm:ss');
|
|
262
|
+
$.db.insert(table,obj)
|
|
263
|
+
.then((rows)=>{
|
|
264
|
+
return resolve(rows);
|
|
265
|
+
})
|
|
266
|
+
.catch((err)=>{
|
|
267
|
+
return reject(err);
|
|
268
|
+
})
|
|
269
|
+
}else{
|
|
270
|
+
resolve();
|
|
271
|
+
//return reject(`column ${key} not found for table ${table}`);
|
|
268
272
|
}
|
|
273
|
+
}
|
|
269
274
|
|
|
270
275
|
});
|
|
271
276
|
},
|
|
@@ -300,14 +305,12 @@ var self = module.exports = {
|
|
|
300
305
|
}
|
|
301
306
|
}
|
|
302
307
|
|
|
303
|
-
//console.log("updateJSONlog")
|
|
304
308
|
$.db.insert(table, obj)
|
|
305
309
|
.then((rows)=>{
|
|
306
310
|
return resolve(rows);
|
|
307
311
|
})
|
|
308
312
|
.catch((err)=>{
|
|
309
|
-
|
|
310
|
-
return resolve();
|
|
313
|
+
return reject(err);
|
|
311
314
|
})
|
|
312
315
|
});
|
|
313
316
|
},
|
|
@@ -317,8 +320,10 @@ var self = module.exports = {
|
|
|
317
320
|
return new Promise((resolve,reject) => {
|
|
318
321
|
|
|
319
322
|
let db_columns = $.models.get(table);
|
|
320
|
-
if(db_columns == null)
|
|
321
|
-
|
|
323
|
+
if(db_columns == null){
|
|
324
|
+
resolve();
|
|
325
|
+
//return reject(`columns not found for table ${table}`);
|
|
326
|
+
}
|
|
322
327
|
|
|
323
328
|
$.db.delete(table,{id:0})
|
|
324
329
|
let index = topic.indexOf("/");
|
|
@@ -344,8 +349,7 @@ var self = module.exports = {
|
|
|
344
349
|
return resolve(rows);
|
|
345
350
|
})
|
|
346
351
|
.catch((err)=>{
|
|
347
|
-
|
|
348
|
-
return resolve();
|
|
352
|
+
return reject(err);
|
|
349
353
|
})
|
|
350
354
|
}
|
|
351
355
|
}else{
|
package/src/db/db.js
CHANGED
|
@@ -144,6 +144,7 @@ var self = module.exports = {
|
|
|
144
144
|
});
|
|
145
145
|
},
|
|
146
146
|
|
|
147
|
+
// update column with json data
|
|
147
148
|
updateJSON : async (table, column, data, filter) => {
|
|
148
149
|
|
|
149
150
|
return new Promise((resolve, reject) => {
|
|
@@ -317,6 +318,29 @@ var self = module.exports = {
|
|
|
317
318
|
});
|
|
318
319
|
},
|
|
319
320
|
|
|
321
|
+
getDataFromDeviceId : async (table,deviceId)=>{
|
|
322
|
+
|
|
323
|
+
return new Promise((resolve,reject) => {
|
|
324
|
+
|
|
325
|
+
self.getConnection((err,conn)=>{
|
|
326
|
+
if(err) return reject(err);
|
|
327
|
+
|
|
328
|
+
let query = "SELECT ?? FROM ?? where device_id = ?";
|
|
329
|
+
let args = [field,table,deviceId];
|
|
330
|
+
query = mysql.format(query,args);
|
|
331
|
+
conn.query(query,function(err,rows){
|
|
332
|
+
$.db.close_db_connection(conn);
|
|
333
|
+
if(err) return reject(err)
|
|
334
|
+
else{
|
|
335
|
+
if(rows.length == 1 ){
|
|
336
|
+
return resolve(rows[0]);
|
|
337
|
+
}else return resolve(null);
|
|
338
|
+
}
|
|
339
|
+
});
|
|
340
|
+
});
|
|
341
|
+
});
|
|
342
|
+
},
|
|
343
|
+
|
|
320
344
|
getFieldFromDeviceId : async (table,deviceId,field)=>{
|
|
321
345
|
|
|
322
346
|
return new Promise((resolve,reject) => {
|
package/src/db/device.js
CHANGED
|
@@ -3,131 +3,195 @@ var mysql = require('mysql2')
|
|
|
3
3
|
|
|
4
4
|
var self = module.exports = {
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
getById : async (deviceId)=>{
|
|
7
7
|
return new Promise((resolve,reject) => {
|
|
8
8
|
|
|
9
|
-
let query = "SELECT
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
9
|
+
let query = "SELECT * FROM ?? where id = ?";
|
|
10
|
+
let table = ["devices",deviceId];
|
|
11
|
+
query = mysql.format(query,table);
|
|
12
|
+
|
|
13
|
+
$.db.queryRow(query)
|
|
14
|
+
.then( rows => {
|
|
15
|
+
if(rows.length > 0)
|
|
16
|
+
return resolve(rows[0]);
|
|
17
|
+
else
|
|
18
|
+
return resolve(null);
|
|
19
|
+
})
|
|
20
|
+
.catch( err => {
|
|
21
|
+
console.log(err);
|
|
22
|
+
return resolve(null);
|
|
23
|
+
});
|
|
24
24
|
});
|
|
25
25
|
},
|
|
26
26
|
|
|
27
|
-
|
|
27
|
+
get : async (uid)=>{
|
|
28
|
+
return new Promise((resolve,reject) => {
|
|
28
29
|
|
|
30
|
+
let query = "SELECT * FROM ?? where uid = ?";
|
|
31
|
+
let table = ["devices",uid];
|
|
32
|
+
query = mysql.format(query,table);
|
|
33
|
+
|
|
34
|
+
$.db.queryRow(query)
|
|
35
|
+
.then( rows => {
|
|
36
|
+
if(rows.length > 0)
|
|
37
|
+
return resolve(rows[0]);
|
|
38
|
+
else
|
|
39
|
+
return resolve(null);
|
|
40
|
+
})
|
|
41
|
+
.catch( err => {
|
|
42
|
+
console.log(err);
|
|
43
|
+
return resolve(null);
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
},
|
|
47
|
+
|
|
48
|
+
listOnline : async ()=>{
|
|
29
49
|
return new Promise((resolve,reject) => {
|
|
30
|
-
let obj = {
|
|
31
|
-
uid : uid,
|
|
32
|
-
createdAt : moment().utc().format('YYYY-MM-DD HH:mm:ss'),
|
|
33
|
-
updatedAt : moment().utc().format('YYYY-MM-DD HH:mm:ss')
|
|
34
|
-
}
|
|
35
50
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
51
|
+
let query = "SELECT * FROM ?? where status = ?";
|
|
52
|
+
let table = ["devices","online"];
|
|
53
|
+
query = mysql.format(query,table);
|
|
54
|
+
|
|
55
|
+
$.db.queryRow(query)
|
|
56
|
+
.then( rows => {
|
|
57
|
+
if(rows.length > 0)
|
|
58
|
+
return resolve(rows);
|
|
59
|
+
else
|
|
60
|
+
return resolve(null);
|
|
61
|
+
})
|
|
62
|
+
.catch( err => {
|
|
63
|
+
console.log(err);
|
|
64
|
+
return resolve(null);
|
|
65
|
+
});
|
|
43
66
|
});
|
|
44
|
-
|
|
67
|
+
},
|
|
45
68
|
|
|
46
|
-
|
|
69
|
+
listByModel : async (model_id)=>{
|
|
47
70
|
return new Promise((resolve,reject) => {
|
|
48
71
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
return reject(error);
|
|
72
|
+
let query = "SELECT * FROM ?? where model_id = ?";
|
|
73
|
+
let table = ["devices",model_id];
|
|
74
|
+
query = mysql.format(query,table);
|
|
75
|
+
|
|
76
|
+
$.db.queryRow(query)
|
|
77
|
+
.then( rows => {
|
|
78
|
+
if(rows.length > 0)
|
|
79
|
+
return resolve(rows);
|
|
80
|
+
else
|
|
81
|
+
return resolve(null);
|
|
82
|
+
})
|
|
83
|
+
.catch( err => {
|
|
84
|
+
console.log(err);
|
|
85
|
+
return resolve(null);
|
|
64
86
|
});
|
|
65
|
-
|
|
66
|
-
|
|
87
|
+
});
|
|
88
|
+
},
|
|
67
89
|
|
|
68
|
-
|
|
90
|
+
listOnlineByModel : async (model_id)=>{
|
|
69
91
|
return new Promise((resolve,reject) => {
|
|
70
92
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
return reject(error);
|
|
93
|
+
let query = "SELECT * FROM ?? where model_id = ? and status = ?";
|
|
94
|
+
let table = ["devices",model_id,"online"];
|
|
95
|
+
query = mysql.format(query,table);
|
|
96
|
+
|
|
97
|
+
$.db.queryRow(query)
|
|
98
|
+
.then( rows => {
|
|
99
|
+
if(rows.length > 0)
|
|
100
|
+
return resolve(rows);
|
|
101
|
+
else
|
|
102
|
+
return resolve(null);
|
|
103
|
+
})
|
|
104
|
+
.catch( err => {
|
|
105
|
+
console.log(err);
|
|
106
|
+
return resolve(null);
|
|
86
107
|
});
|
|
87
|
-
|
|
88
|
-
|
|
108
|
+
});
|
|
109
|
+
},
|
|
89
110
|
|
|
90
|
-
|
|
111
|
+
getField : async (id,column)=>{
|
|
91
112
|
return new Promise((resolve,reject) => {
|
|
92
113
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
114
|
+
let query = "SELECT ?? FROM devices where id = ?";
|
|
115
|
+
let table = [column,id];
|
|
116
|
+
query = mysql.format(query,table);
|
|
117
|
+
|
|
118
|
+
$.db.queryRow(query)
|
|
119
|
+
.then( rows => {
|
|
120
|
+
if(rows.length > 0)
|
|
121
|
+
return resolve(rows[0]);
|
|
122
|
+
else
|
|
123
|
+
return resolve(null);
|
|
124
|
+
})
|
|
125
|
+
.catch( err => {
|
|
126
|
+
console.log(err);
|
|
127
|
+
return resolve(null);
|
|
128
|
+
});
|
|
129
|
+
});
|
|
130
|
+
},
|
|
131
|
+
|
|
132
|
+
insert : async(obj)=>{
|
|
133
|
+
|
|
134
|
+
return new Promise((resolve,reject) => {
|
|
135
|
+
let timestamp = moment().utc().format('YYYY-MM-DD HH:mm:ss');
|
|
136
|
+
obj['createdAt'] = timestamp;
|
|
137
|
+
obj['updatedAt'] = timestamp;
|
|
138
|
+
|
|
139
|
+
$.db.insert("devices",obj)
|
|
140
|
+
.then (rows => {
|
|
141
|
+
return resolve(rows[0]);
|
|
142
|
+
})
|
|
143
|
+
.catch(error => {
|
|
144
|
+
return reject(error);
|
|
108
145
|
});
|
|
109
|
-
|
|
110
|
-
|
|
146
|
+
});
|
|
147
|
+
},
|
|
111
148
|
|
|
112
|
-
|
|
149
|
+
update : async(id,column,value)=>{
|
|
113
150
|
return new Promise((resolve,reject) => {
|
|
114
151
|
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
152
|
+
let obj = {
|
|
153
|
+
updatedAt : moment().utc().format('YYYY-MM-DD HH:mm:ss')
|
|
154
|
+
};
|
|
155
|
+
|
|
156
|
+
obj[column] = value;
|
|
157
|
+
|
|
158
|
+
let filter = {
|
|
159
|
+
id : id,
|
|
160
|
+
};
|
|
161
|
+
|
|
162
|
+
$.db.update("devices",obj,filter)
|
|
163
|
+
.then (rows => {
|
|
164
|
+
return resolve(rows);
|
|
165
|
+
})
|
|
166
|
+
.catch(error => {
|
|
167
|
+
return reject(error);
|
|
130
168
|
});
|
|
131
|
-
|
|
132
|
-
|
|
169
|
+
});
|
|
170
|
+
},
|
|
171
|
+
|
|
172
|
+
updateObject : async (deviceId, obj)=>{
|
|
173
|
+
|
|
174
|
+
return new Promise( async (resolve, reject) => {
|
|
175
|
+
|
|
176
|
+
const table = "devices";
|
|
177
|
+
|
|
178
|
+
if (!obj || typeof obj !== 'object')
|
|
179
|
+
return reject("Not object");
|
|
180
|
+
|
|
181
|
+
obj['updatedAt'] = moment().utc().format('YYYY-MM-DD HH:mm:ss');
|
|
182
|
+
|
|
183
|
+
let filter = {
|
|
184
|
+
id : deviceId
|
|
185
|
+
}
|
|
186
|
+
$.db.update(table,obj,filter)
|
|
187
|
+
.then((rows)=>{
|
|
188
|
+
return resolve(rows);
|
|
189
|
+
})
|
|
190
|
+
.catch((err)=>{
|
|
191
|
+
return reject(err);
|
|
192
|
+
})
|
|
193
|
+
|
|
194
|
+
});
|
|
195
|
+
},
|
|
196
|
+
|
|
133
197
|
}
|
package/src/db/firmware.js
CHANGED
|
@@ -3,16 +3,41 @@ var mysql = require('mysql2')
|
|
|
3
3
|
|
|
4
4
|
var self = module.exports = {
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
getById : async (firmwareId)=>{
|
|
7
|
+
return new Promise((resolve,reject) => {
|
|
8
|
+
|
|
9
|
+
let query = "";
|
|
10
|
+
let table = [];
|
|
11
|
+
|
|
12
|
+
query = `SELECT * FROM firmwares where id = ?`;
|
|
13
|
+
table = [firmwareId];
|
|
14
|
+
|
|
15
|
+
query = mysql.format(query,table);
|
|
16
|
+
|
|
17
|
+
$.db.queryRow(query)
|
|
18
|
+
.then( rows => {
|
|
19
|
+
if(rows.length > 0){
|
|
20
|
+
return resolve(rows[0]);
|
|
21
|
+
}else
|
|
22
|
+
return resolve(null);
|
|
23
|
+
})
|
|
24
|
+
.catch( err => {
|
|
25
|
+
console.log(err);
|
|
26
|
+
return resolve(null);
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
},
|
|
30
|
+
|
|
31
|
+
getLatestVersion : async (modelId,release)=>{
|
|
7
32
|
|
|
8
33
|
return new Promise((resolve,reject) => {
|
|
9
34
|
|
|
10
35
|
let query = "";
|
|
11
36
|
let table = [];
|
|
12
37
|
|
|
13
|
-
query = `SELECT
|
|
14
|
-
CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(
|
|
15
|
-
CAST(SUBSTRING_INDEX(
|
|
38
|
+
query = `SELECT version,filename,token,id FROM firmwares where model_id = ? and build_release = ? ORDER BY CAST(SUBSTRING_INDEX(version, '.', 1) AS UNSIGNED) DESC,
|
|
39
|
+
CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(version, '.', 2), '.', -1) AS UNSIGNED) DESC,
|
|
40
|
+
CAST(SUBSTRING_INDEX(version, '.', -1) AS UNSIGNED) DESC
|
|
16
41
|
LIMIT 1`;
|
|
17
42
|
table = [modelId,release];
|
|
18
43
|
|
|
@@ -39,7 +64,7 @@ var self = module.exports = {
|
|
|
39
64
|
let query = "";
|
|
40
65
|
let table = [];
|
|
41
66
|
|
|
42
|
-
query = `SELECT app_version,filename,token FROM firmwares where model_id = ? and
|
|
67
|
+
query = `SELECT app_version,filename,token,id FROM firmwares where model_id = ? and build_release = ? ORDER BY CAST(SUBSTRING_INDEX(app_version, '.', 1) AS UNSIGNED) DESC,
|
|
43
68
|
CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(app_version, '.', 2), '.', -1) AS UNSIGNED) DESC,
|
|
44
69
|
CAST(SUBSTRING_INDEX(app_version, '.', -1) AS UNSIGNED) DESC
|
|
45
70
|
LIMIT 1`;
|