8000 fix(adapter): moves loadRelationsFor logic into separate method (#10) · js-data/js-data-adapter@c46a983 · GitHub
[go: up one dir, main page]

Skip to content

Commit c46a983

Browse files
stalniyjmdobry
authored andcommitted
fix(adapter): moves loadRelationsFor logic into separate method (#10)
1 parent 748a77c commit c46a983

File tree

1 file changed

+36
-65
lines changed

1 file changed

+36
-65
lines changed

src/index.js

Lines changed: 36 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -846,8 +846,7 @@ Component.extend({
846846
* @return {Promise}
847847
*/
848848
find (mapper, id, opts) {
849-
let record, op
850-
let meta = {}
849+
let op
851850
opts || (opts = {})
852851
opts.with || (opts.with = [])
853852

@@ -859,38 +858,8 @@ Component.extend({
859858
this.dbg(op, mapper, id, opts)
860859
return utils.resolve(this._find(mapper, id, opts))
861860
})
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]) => {
894863
let response = new Response(record, meta, 'find')
895864
response.found = record ? 1 : 0
896865
response = this.respond(response, opts)
@@ -922,12 +891,10 @@ Component.extend({
922891
* @return {Promise}
923892
*/
924893
findAll (mapper, query, opts) {
894+
let op
925895
opts || (opts = {})
926896
opts.with || (opts.with = [])
927897

928-
let records = []
929-
let meta = {}
930-
let op
931898
const activeWith = opts._activeWith
932899

933900
if (utils.isObject(activeWith)) {
@@ -947,34 +914,8 @@ Component.extend({
947914
this.dbg(op, mapper, query, opts)
948915
return utils.resolve(this._findAll(mapper, query, opts))
949916
})
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]) => {
978919
let response = new Response(records, meta, 'findAll')
979920
response.found = records.length
980921
response = this.respond(response, opts)
@@ -986,6 +927,36 @@ Component.extend({
986927
})
987928
},
988929

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+
989960
/**
990961
* Resolve the value of the specified option based on the given options and
991962
* this adapter's settings. Override with care.

0 commit comments

Comments
 (0)
0