@@ -846,8 +846,7 @@ Component.extend({
846
846
* @return {Promise }
847
847
*/
848
848
find ( mapper , id , opts ) {
849
- let record , op
850
- let meta = { }
849
+ let op
851
850
opts || ( opts = { } )
852
851
opts . with || ( opts . with = [ ] )
853
852
@@ -859,38 +858,8 @@ Component.extend({
859
858
this . dbg ( op , mapper , id , opts )
860
859
return utils . resolve ( this . _find ( mapper , id , opts ) )
861
860
} )
862
- . then ( ( results ) => {
863
- let [ _record , _meta ] = results
864
- if ( ! _record ) {
865
- return
866
- }
867
- record = _record
868
- meta = _meta
869
- const tasks = [ ]
870
-
871
- utils . forEachRelation ( mapper , opts , ( def , __opts ) => {
872
- let task
873
- if ( def . foreignKey && ( def . type === 'hasOne' || def . type === 'hasMany' ) ) {
874
- if ( def . type === 'hasOne' ) {
875
- task = this . loadHasOne ( mapper , def , record , __opts )
876
- } else {
877
- task = this . loadHasMany ( mapper , def , record , __opts )
878
- }
879
- } else if ( def . type === 'hasMany' && def . localKeys ) {
880
- task = this . loadHasManyLocalKeys ( mapper , def , record , __opts )
881
- } else if ( def . type === 'hasMany' && def . foreignKeys ) {
882
- task = this . loadHasManyForeignKeys ( mapper , def , record , __opts )
883
- } else if ( def . type === 'belongsTo' ) {
884
- task = this . loadBelongsTo ( mapper , def , record , __opts )
885
- }
886
- if ( task ) {
887
- tasks . push ( task )
888
- }
889
- } )
890
-
891
- return utils . Promise . all ( tasks )
892
- } )
893
- . then ( ( ) => {
861
+ . then ( ( results ) => this . loadRelationsFor ( mapper , results , opts ) )
862
+ . then ( ( [ record , meta ] ) => {
894
863
let response = new Response ( record , meta , 'find' )
895
864
response . found = record ? 1 : 0
896
865
response = this . respond ( response , opts )
@@ -922,12 +891,10 @@ Component.extend({
922
891
* @return {Promise }
923
892
*/
924
893
findAll ( mapper , query , opts ) {
894
+ let op
925
895
opts || ( opts = { } )
926
896
opts . with || ( opts . with = [ ] )
927
897
928
- let records = [ ]
929
- let meta = { }
930
- let op
931
898
const activeWith = opts . _activeWith
932
899
933
900
if ( utils . isObject ( activeWith ) ) {
@@ -947,34 +914,8 @@ Component.extend({
947
914
this . dbg ( op , mapper , query , opts )
948
915
return utils . resolve ( this . _findAll ( mapper , query , opts ) )
949
916
} )
950
- . then ( ( results ) => {
951
- let [ _records , _meta ] = results
952
- _records || ( _records = [ ] )
953
- records = _records
954
- meta = _meta
955
- const tasks = [ ]
956
- utils . forEachRelation ( mapper , opts , ( def , __opts ) => {
957
- let task
958
- if ( def . foreignKey && ( def . type === 'hasOne' || def . type === 'hasMany' ) ) {
959
- if ( def . type === 'hasMany' ) {
960
- task = this . loadHasMany ( mapper , def , records , __opts )
961
- } else {
962
- task = this . loadHasOne ( mapper , def , records , __opts )
963
- }
964
- } else if ( def . type === 'hasMany' && def . localKeys ) {
965
- task = this . loadHasManyLocalKeys ( mapper , def , records , __opts )
966
- } else if ( def . type === 'hasMany' && def . foreignKeys ) {
967
- task = this . loadHasManyForeignKeys ( mapper , def , records , __opts )
968
- } else if ( def . type === 'belongsTo' ) {
969
- task = this . loadBelongsTo ( mapper , def , records , __opts )
970
- }
971
- if ( task ) {
972
- tasks . push ( task )
973
- }
974
- } )
975
- return utils . Promise . all ( tasks )
976
- } )
977
- . then ( ( ) => {
917
+ . then ( ( results ) => this . loadRelationsFor ( mapper , results , opts ) )
918
+ . then ( ( [ records , meta ] ) => {
978
919
let response = new Response ( records , meta , 'findAll' )
979
920
response . found = records . length
980
921
response = this . respond ( response , opts )
@@ -986,6 +927,36 @@ Component.extend({
986
927
} )
987
928
} ,
988
929
930
+ loadRelationsFor ( mapper , results , opts ) {
931
+ const [ records ] = results
932
+ const tasks = [ ]
933
+
934
+ if ( records ) {
935
+ utils . forEachRelation ( mapper , opts , ( def , __opts ) => {
936
+ let task
937
+ if ( def . foreignKey && ( def . type === 'hasOne' || def . type === 'hasMany' ) ) {
938
+ if ( def . type === 'hasOne' ) {
939
+ task = this . loadHasOne ( mapper , def , records , __opts )
940
+ } else {
941
+ task = this . loadHasMany ( mapper , def , records , __opts )
942
+ }
943
+ } else if ( def . type === 'hasMany' && def . localKeys ) {
944
+ task = this . loadHasManyLocalKeys ( mapper , def , records , __opts )
945
+ } else if ( def . type === 'hasMany' && def . foreignKeys ) {
946
+ task = this . loadHasManyForeignKeys ( mapper , def , records , __opts )
947
+ } else if ( def . type === 'belongsTo' ) {
948
+ task = this . loadBelongsTo ( mapper , def , records , __opts )
949
+ }
950
+ if ( task ) {
794E
951
+ tasks . push ( task )
952
+ }
953
+ } )
954
+ }
955
+
956
+ return utils . Promise . all ( tasks )
957
+ . then ( ( ) => results )
958
+ } ,
959
+
989
960
/**
990
961
* Resolve the value of the specified option based on the given options and
991
962
* this adapter's settings. Override with care.
0 commit comments