| 343 | } |
| 344 | }; |
| 345 | var saveInstanceExtra = function (cb) { |
| 346 | if (opts.extrachanges.length === 0) { |
| 347 | if (cb) return cb(null, instance); |
| 348 | else return; |
| 349 | } |
| 350 | |
| 351 | var data = {}; |
| 352 | var conditions = {}; |
| 353 | |
| 354 | for (var i = 0; i < opts.extrachanges.length; i++) { |
| 355 | if (!opts.data.hasOwnProperty(opts.extrachanges[i])) continue; |
| 356 | |
| 357 | if (opts.extra[opts.extrachanges[i]]) { |
| 358 | data[opts.extrachanges[i]] = opts.data[opts.extrachanges[i]]; |
| 359 | if (opts.driver.propertyToValue) { |
| 360 | data[opts.extrachanges[i]] = opts.driver.propertyToValue(data[opts.extrachanges[i]], opts.extra[opts.extrachanges[i]]); |
| 361 | } |
| 362 | } else { |
| 363 | data[opts.extrachanges[i]] = opts.data[opts.extrachanges[i]]; |
| 364 | } |
| 365 | } |
| 366 | |
| 367 | for (i = 0; i < opts.extra_info.id.length; i++) { |
| 368 | conditions[opts.extra_info.id_prop[i]] = opts.extra_info.id[i]; |
| 369 | conditions[opts.extra_info.assoc_prop[i]] = opts.data[opts.keys[i]]; |
| 370 | } |
| 371 | |
| 372 | opts.driver.update(opts.extra_info.table, data, conditions, function (err) { |
| 373 | return cb(err); |
| 374 | }); |
| 375 | }; |
| 376 | var removeInstance = function (cb) { |
| 377 | if (opts.is_new) { |
| 378 | return cb(null); |