patchById(id, fields) { const idColumn = this.modelClass().idColumn; const context = {[idColumn]: id}; return this.mergeContext(context).patch(fields).whereComposite(idColumn, id); }
save(fields) { const id = this.modelClass().idColumn; if (!(id in fields)) { // modelClass has a generateId function, use that if (this.modelClass().generateId) { fields.id = this.modelClass().generateId(); } return this.insert(fields); } const patchFields = _.assign({}, fields); delete patchFields[id]; const context = {[id]: fields[id]}; return this.mergeContext(context).patch(patchFields).where(id, fields[id]); }
saveAndFetch(fields) { const id = this.modelClass().idColumn; if (!(id in fields)) { // modelClass has a generateId function, use that if (this.modelClass().generateId) { fields.id = this.modelClass().generateId(); } return this.insertAndFetch(fields); } const patchFields = _.assign({}, fields); delete patchFields[id]; const context = {[id]: fields[id]}; return this.mergeContext(context).patchAndFetchById(fields[id], patchFields); }
updateById(id, fields) { const idColumn = this.modelClass().idColumn; const context = {[idColumn]: id}; return this.mergeContext(context).update(fields).whereComposite(idColumn, id); }
deleteById(id) { const idColumn = this.modelClass().idColumn; const context = {[idColumn]: id}; return this.mergeContext(context).delete().whereComposite(idColumn, id); }