Skip to content

Commit 8551f5d

Browse files
salisdemoseFrane
authored andcommitted
feat/fix: Disperse moduleName and Type for relationsships
1 parent 39b8271 commit 8551f5d

File tree

5 files changed

+19
-17
lines changed

5 files changed

+19
-17
lines changed

src/module/ModuleBuilder.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -180,8 +180,8 @@ export class ModuleBuilder {
180180
const relatedObjectMethods = this.apiMethods.related[relatedObjectType]
181181

182182
if (relatedObjectMethods.isCollection()) {
183-
const listActionName = `listRelated${relatedObjectType}`
184-
relatedActions[listActionName] = listRelatedAction(this.api, this.moduleName, relatedObjectType)
183+
const listActionName = `listRelated${relatedObjectTypeActionName}`
184+
relatedActions[listActionName] = listRelatedAction(this.api, this.moduleName, relatedObjectTypeActionName)
185185
}
186186
}
187187

src/module/resource/ResourceBuilder.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -69,25 +69,25 @@ export class ResourceBuilder {
6969
isToMany: relatedObject.data.constructor === Array
7070
}
7171

72-
relatedObject.get = getRelationship(this.store, relatedObject, relationshipConfig)
73-
relatedObject.load = loadRelationship(this.store, obj.id, obj.type, relatedObject, relationshipConfig)
72+
relatedObject.get = getRelationship(this.store, currentRelationshipName, relatedObject, relationshipConfig)
73+
relatedObject.load = loadRelationship(this.store, obj.id, currentRelationshipName, relatedObject, relationshipConfig)
7474

7575
if (relationshipConfig.isToMany) {
76-
relatedObject.list = listRelationship(this.store, relatedObject)
76+
relatedObject.list = listRelationship(this.store, currentRelationshipName, relatedObject)
7777
}
7878

7979
relationships[currentRelationshipName] = relatedObject
8080
}
8181

8282
// shorthand variant
8383
obj.loadRel = (relationshipName) => {
84-
return loadRelationship(this.store, obj.id, obj.type, relationships[relationshipName], getRelationshipConfig(relationships[relationshipName]))()
84+
return loadRelationship(this.store, obj.id, relationshipName, relationships[relationshipName], getRelationshipConfig(relationships[relationshipName]))()
8585
}
8686
obj.rel = (relationshipName) => {
8787
if (getRelationshipConfig(relationships[relationshipName]).isToMany) {
88-
return listRelationship(this.store, relationships[relationshipName])()
88+
return listRelationship(this.store, relationshipName, relationships[relationshipName])()
8989
} else {
90-
return getRelationship(this.store, relationships[relationshipName], getRelationshipConfig(relationships[relationshipName]))()
90+
return getRelationship(this.store, relationshipName, relationships[relationshipName], getRelationshipConfig(relationships[relationshipName]))()
9191
}
9292
}
9393
}
Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,28 @@
11
/**
22
*
33
* @param {Vuex.Store} store
4+
* @param {String} relationshipModuleName
45
* @param {Object} relatedObject
56
* @param {Object} config{isToMany: boolean}
7+
* @param {Object} config{isToMany: boolean}
68
*/
7-
export function getRelationship (store, relatedObject, config) {
9+
export function getRelationship (store, relationshipModuleName, relatedObject, config) {
810
return new Proxy(() => {}, {
911
apply (target, thisArg, argArray) {
1012
const moduleType = relatedObject.data.type
11-
const relatedModule = store.state[moduleType]
13+
const relatedModule = store.state[moduleType] // This should work with 'relationshipModuleName' instead of 'moduleType'
1214

1315
if (config.isToMany) {
1416
const [requestedId] = argArray
1517

1618
try {
1719
return relatedModule.items[requestedId]
1820
} catch (e) {
19-
throw new Error(`Related object ${relatedObject.data.id} not found in ${moduleType}`)
21+
throw new Error(`Related object ${relatedObject.id} not found in ${moduleType}`)
2022
}
2123
}
2224

23-
return relatedModule.items[relatedObject.data.id]
25+
return relatedModule.items[relatedObject.id]
2426
}
2527
})
2628
}

src/module/resource/listRelationship.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
/**
22
* @param {Vuex.Store} store
3+
* @param {String} relationshipModuleName
34
* @param {Array} relatedObjects
45
*/
5-
export function listRelationship (store, relatedObjects) {
6+
export function listRelationship (store, relationshipModuleName, relatedObjects) {
67
return new Proxy(() => {}, {
78
apply (target, thisArg, argArray) {
8-
const moduleName = relatedObjects.data[0].type
9-
const relatedModule = store.state[moduleName]
9+
const relatedModule = store.state[relationshipModuleName]
1010

1111
const relatedObjectIds = relatedObjects.data.map(obj => obj.id)
1212

src/module/resource/loadRelationship.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
export function loadRelationship (store, currentObjectId, currentObjectType, relatedObject, config) {
1+
export function loadRelationship (store, currentObjectId, moduleName, relatedObject, config) {
22
return () => {
33
const relatedObjectType = (config.isToMany) ? relatedObject.data[0].type : relatedObject.data.type
44

55
if (config.isToMany) {
6-
return store.dispatch(`${currentObjectType}/listRelated${relatedObjectType}`, { id: currentObjectId })
6+
return store.dispatch(`${moduleName}/listRelated${relatedObjectNameForAction}`, { id: currentObjectId })
77
}
88

99
return new Error('Failed to load relationship')

0 commit comments

Comments
 (0)