33 * GET <%= route %> -> index<% if(filters.models) { %>
44 * POST <%= route %> -> create
55 * GET <%= route %>/:id -> show
6- * PUT <%= route %>/:id -> update
6+ * PUT <%= route %>/:id -> upsert
7+ * PATCH <%= route %>/:id -> patch
78 * DELETE <%= route %>/:id -> destroy<% } %>
89 */
910
1011'use strict' ; < % if ( filters . models ) { % >
1112
12- import _ from 'lodash ' ; < % if ( filters . mongooseModels ) { % >
13+ import jsonpatch from 'fast-json-patch ' ; < % if ( filters . mongooseModels ) { % >
1314import < %= classedName % > from './<%= basename %>.model' ; < % } if ( filters . sequelizeModels ) { % >
1415import { < %= classedName % > } from '<%= relativeRequire(config.get(' registerModelsFile ')) %>' ; < % } % >
1516
@@ -22,27 +23,15 @@ function respondWithResult(res, statusCode) {
2223 } ;
2324}
2425
25- function saveUpsert ( new ) {
26+ function patchUpdates ( patches ) {
2627 return function ( entity ) {
27- < % _ if ( filters . mongooseModels ) { - % >
28- var updated = _ . assignIn ( entity , updates ) ;
29- return updated . save ( ) ;
30- < % _ } - % >
31- < % _ if ( filters . sequelizeModels ) { - % >
32- return entity . updateAttributes ( updates ) ;
33- < % _ } - % >
34- } ;
35- }
28+ try {
29+ jsonpatch . apply ( entity , patches , /*validate*/ true ) ;
30+ } catch ( err ) {
31+ return Promise . reject ( err ) ;
32+ }
3633
37- function saveUpdates ( updates ) {
38- return function ( entity ) {
39- < % _ if ( filters . mongooseModels ) { - % >
40- var updated = _ . merge ( entity , updates ) ;
41- return updated . save ( ) ;
42- < % _ } - % >
43- < % _ if ( filters . sequelizeModels ) { - % >
44- return entity . updateAttributes ( updates ) ;
45- < % _ } - % >
34+ return entity . save ( ) ;
4635 } ;
4736}
4837
@@ -123,7 +112,7 @@ export function upsert(req, res) {
123112}
124113
125114// Updates an existing <%= classedName %> in the DB
126- export function update ( req , res ) {
115+ export function patch ( req , res ) {
127116 if ( req . body . _id ) {
128117 delete req . body . _id ;
129118 }
@@ -134,7 +123,7 @@ export function update(req, res) {
134123 }
135124 } )< % } % >
136125 .then(handleEntityNotFound(res))
137- .then(saveUpdates (req.body))
126+ .then(patchUpdates (req.body))
138127 .then(respondWithResult(res))
139128 .catch(handleError(res));
140129}
0 commit comments