1+ import _ from 'lodash' ;
12import Axios from '../orm/axios' ;
23import Action from './Action'
34import Context from '../common/context'
@@ -19,14 +20,58 @@ export default class Update extends Action {
1920 const axios = new Axios ( model . methodConf . http ) ;
2021 const request = axios . put ( endpoint , params . data ) ;
2122
23+ this . onRequest ( model , params ) ;
2224 request
23- . then ( data => {
24- model . update ( {
25- where : data . id ,
26- data
27- } )
28- } )
25+ . then ( data => this . onSuccess ( model , params , data ) )
26+ . catch ( error => this . onError ( model , params , error ) )
2927
3028 return request ;
3129 }
30+
31+ /**
32+ * On Request Method
33+ * @param {object } model
34+ * @param {object } params
35+ */
36+ static onRequest ( model , params ) {
37+ model . update ( {
38+ where : params . params . id ,
39+ data : {
40+ $isUpdating : true ,
41+ $updateErrors : [ ]
42+ }
43+ } )
44+ }
45+
46+ /**
47+ * On Successful Request Method
48+ * @param {object } model
49+ * @param {object } params
50+ * @param {object } data
51+ */
52+ static onSuccess ( model , params , data ) {
53+ model . update ( {
54+ where : params . params . id || data . id ,
55+ data : _ . merge ( { } , data , {
56+ $isUpdating : false ,
57+ $updateErrors : [ ]
58+ } )
59+ } )
60+ }
61+
62+ /**
63+ * On Failed Request Method
64+ * @param {object } model
65+ * @param {object } params
66+ * @param {object } error
67+ */
68+ static onError ( model , params , error ) {
69+ model . update ( {
70+ where : params . params . id ,
71+ data : {
72+ $isUpdating : false ,
73+ $updateErrors : error
74+ }
75+ } )
76+ }
3277}
0 commit comments