@@ -9,86 +9,89 @@ const JsonApi = use('JsonApi');
99const Logger = use ( 'Logger' ) ;
1010
1111class LucidSerializer extends VanillaSerializer {
12- toJSON ( ) {
13- if ( this . isOne ) {
14- const jsonApiType = JsonApi . getTypeOfModel ( this . rows . constructor . name ) ;
15- if ( jsonApiType !== undefined ) {
16- try {
17- return JsonApi . JsonApiSerializer . serialize (
18- jsonApiType ,
19- this . _getRowJSON ( this . rows )
20- ) ;
21- } catch ( error ) {
22- Logger . warning ( error ) ;
23- }
24- } else {
25- throw TypeNotDefinedException . invoke ( this . rows . constructor . name ) ;
26- }
27- } else {
28- const jsonApiType = JsonApi . getTypeOfModel ( this . rows [ 0 ] . constructor . name ) ;
29- const data = this . rows . map ( this . _getRowJSON . bind ( this ) ) ;
30- if ( jsonApiType !== undefined ) {
31- try {
32- if ( this . pages ) {
33- const jsonApiPaged = JsonApi . JsonApiSerializer . serialize ( jsonApiType , data ) ;
34- if ( _ . has ( jsonApiPaged , 'links.self' ) ) {
35- this . _setPageLinks ( jsonApiPaged . links , jsonApiPaged . links . self ) ;
12+ toJSON ( ) {
13+ let returnJson = null ;
14+ if ( this . isOne ) {
15+ const jsonApiType = JsonApi . getTypeOfModel ( this . rows . constructor . name ) ;
16+ if ( jsonApiType !== undefined ) {
17+ try {
18+ returnJson = JsonApi . JsonApiSerializer . serialize (
19+ jsonApiType ,
20+ this . _getRowJSON ( this . rows )
21+ ) ;
22+ } catch ( error ) {
23+ Logger . warning ( error ) ;
24+ }
25+ } else {
26+ throw TypeNotDefinedException . invoke ( this . rows . constructor . name ) ;
27+ }
28+ } else {
29+ const jsonApiType = JsonApi . getTypeOfModel ( this . rows [ 0 ] . constructor . name ) ;
30+ const data = this . rows . map ( this . _getRowJSON . bind ( this ) ) ;
31+ if ( jsonApiType !== undefined ) {
32+ try {
33+ if ( this . pages ) {
34+ returnJson = JsonApi . JsonApiSerializer . serialize ( jsonApiType , data ) ;
35+ if ( _ . has ( returnJson , 'links.self' ) ) {
36+ this . _setPageLinks ( returnJson . links , returnJson . links . self ) ;
37+ }
38+ returnJson . meta = _ . merge ( { } , returnJson . meta , {
39+ "page" : {
40+ 'number' : parseInt ( this . pages . page ) ,
41+ 'size' : parseInt ( this . pages . perPage ) ,
42+ 'pages' : parseInt ( this . pages . lastPage )
43+ } ,
44+ 'total' : parseInt ( this . pages . total )
45+ } ) ;
46+ } else {
47+ returnJson = JsonApi . JsonApiSerializer . serialize ( jsonApiType , data ) ;
48+ returnJson . meta = _ . merge ( { } , returnJson . meta , { 'total' : this . rows . length } ) ;
49+ }
50+ } catch ( error ) {
51+ Logger . warning ( error ) ;
52+ }
53+ } else {
54+ throw TypeNotDefinedException . invoke ( this . rows [ 0 ] . constructor . name ) ;
3655 }
37- jsonApiPaged . meta = _ . merge ( { } , {
38- "page" : {
39- 'number' : parseInt ( this . pages . page ) ,
40- 'size' : parseInt ( this . pages . perPage ) ,
41- 'pages' : parseInt ( this . pages . lastPage )
42- } ,
43- 'total' : parseInt ( this . pages . total )
44- } ) ;
45- return jsonApiPaged ;
46- } else {
47- const jsonApiList = JsonApi . JsonApiSerializer . serialize ( jsonApiType , data ) ;
48- jsonApiList . meta = _ . merge ( { } , { 'total' : this . rows . length } ) ;
49- return jsonApiList ;
50- }
51- } catch ( error ) {
52- Logger . warning ( error ) ;
5356 }
54- } else {
55- throw TypeNotDefinedException . invoke ( this . rows [ 0 ] . constructor . name ) ;
56- }
57+ if ( returnJson ) {
58+ returnJson = JsonApi . setCommon ( returnJson )
59+ }
60+ return returnJson ;
5761 }
58- }
5962
60- _setPageLinks ( links , refLink ) {
61- links . first = refLink + '?' + qs . stringify ( {
62- page : {
63- number : 1 ,
64- size : this . pages . perPage
65- }
66- } ) ;
67- links . prev = refLink + '?' + qs . stringify ( {
68- page : {
69- number : this . pages . page > 1 ? ( this . pages . page - 1 ) : 1 ,
70- size : this . pages . perPage
71- }
72- } ) ;
73- links . next = refLink + '?' + qs . stringify ( {
74- page : {
75- number : this . pages . page >= this . pages . lastPage ? this . pages . lastPage : ( parseInt ( this . pages . page ) + 1 ) ,
76- size : this . pages . perPage
77- }
78- } ) ;
79- links . last = refLink + '?' + qs . stringify ( {
80- page : {
81- number : this . pages . lastPage ,
82- size : this . pages . perPage
83- }
84- } ) ;
85- links . self = refLink + '?' + qs . stringify ( {
86- page : {
87- number : this . pages . page ,
88- size : this . pages . perPage
89- }
90- } ) ;
91- }
63+ _setPageLinks ( links , refLink ) {
64+ links . first = refLink + '?' + qs . stringify ( {
65+ page : {
66+ number : 1 ,
67+ size : this . pages . perPage
68+ }
69+ } ) ;
70+ links . prev = refLink + '?' + qs . stringify ( {
71+ page : {
72+ number : this . pages . page > 1 ? ( this . pages . page - 1 ) : 1 ,
73+ size : this . pages . perPage
74+ }
75+ } ) ;
76+ links . next = refLink + '?' + qs . stringify ( {
77+ page : {
78+ number : this . pages . page >= this . pages . lastPage ? this . pages . lastPage : ( parseInt ( this . pages . page ) + 1 ) ,
79+ size : this . pages . perPage
80+ }
81+ } ) ;
82+ links . last = refLink + '?' + qs . stringify ( {
83+ page : {
84+ number : this . pages . lastPage ,
85+ size : this . pages . perPage
86+ }
87+ } ) ;
88+ links . self = refLink + '?' + qs . stringify ( {
89+ page : {
90+ number : this . pages . page ,
91+ size : this . pages . perPage
92+ }
93+ } ) ;
94+ }
9295}
9396
9497module . exports = LucidSerializer ;
0 commit comments