mirror of
https://github.com/Mintplex-Labs/express-admin.git
synced 2026-07-19 13:34:42 -04:00
Refactor db/update method
This commit is contained in:
+20
-35
@@ -1,47 +1,32 @@
|
||||
|
||||
var async = require('async');
|
||||
var qb = require('../qb');
|
||||
|
||||
|
||||
exports.update = function (args, cb) {
|
||||
switch (args.action) {
|
||||
case 'insert':
|
||||
case 'update':
|
||||
var types = ['view', 'oneToOne', 'manyToOne'];
|
||||
break;
|
||||
case 'remove':
|
||||
var types = ['oneToOne', 'manyToOne', 'view'];
|
||||
break;
|
||||
}
|
||||
exports.update = function (args, done) {
|
||||
var types = /insert|update/.test(args.action)
|
||||
? ['view', 'oneToOne', 'manyToOne']
|
||||
// remove
|
||||
: ['oneToOne', 'manyToOne', 'view'];
|
||||
|
||||
(function loopTypes (k) {
|
||||
if (k == types.length) return cb();
|
||||
|
||||
args.type = types[k];
|
||||
args.tables = args.data[types[k]];
|
||||
if (!args.tables) return loopTypes(++k);
|
||||
var keys = Object.keys(args.tables);
|
||||
async.eachSeries(types, function (type, done) {
|
||||
args.type = type;
|
||||
args.tables = args.data[type];
|
||||
if (!args.tables) return done();
|
||||
|
||||
(function loopTables (i) {
|
||||
if (i == keys.length) return loopTypes(++k);
|
||||
|
||||
var records = args.tables[keys[i]].records;
|
||||
if (!records) return loopTables(++i);
|
||||
async.eachSeries(Object.keys(args.tables), function (table, done) {
|
||||
var records = args.tables[table].records;
|
||||
if (!records) return done();
|
||||
|
||||
(function loopRecords (j) {
|
||||
if (j == records.length) return loopTables(++i);
|
||||
|
||||
var record = records[j],
|
||||
settings = args.settings[keys[i]];
|
||||
async.eachSeries(records, function (record, done) {
|
||||
var settings = args.settings[table];
|
||||
tbl.inline(args, settings, record);
|
||||
var data = tbl.query(args, settings, record);
|
||||
|
||||
tbl.execute(data.action, args, data.query, record, settings, function (err) {
|
||||
if (err) return cb(err);
|
||||
loopRecords(++j);
|
||||
});
|
||||
}(0));
|
||||
}(0));
|
||||
}(0));
|
||||
var data = tbl.query(args, settings, record);
|
||||
tbl.execute(data.action, args, data.query, record, settings, done);
|
||||
}, done);
|
||||
}, done);
|
||||
}, done);
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user