Added model factories for each type of request
All checks were successful
the build was successful

This commit is contained in:
konrad 2019-02-24 17:57:22 +01:00
parent 68dfe7c5eb
commit 785cb149f3
Signed by: konrad
GPG Key ID: F40E70337AB24C9B

View File

@ -123,7 +123,14 @@ export default class AbstractService {
this.loading = false
}
}
//////////////////
// Default factories
// It is possible to specify a factory for each type of request.
// This makes it possible to have different models returned from different routes.
// Specific factories for each request are completly optional, if these are not specified, the defautl factory is used.
////////////////
/**
* The modelFactory returns an model from an object.
* This one here is the default one, usually the service definitions for a model will override this.
@ -134,6 +141,42 @@ export default class AbstractService {
return data
}
/**
* This is the model factory for get requests.
* @param data
* @return {*}
*/
modelGetFactory(data) {
return this.modelFactory(data)
}
/**
* This is the model factory for get all requests.
* @param data
* @return {*}
*/
modelGetAllFactory(data) {
return this.modelFactory(data)
}
/**
* This is the model factory for create requests.
* @param data
* @return {*}
*/
modelCreateFactory(data) {
return this.modelFactory(data)
}
/**
* This is the model factory for update requests.
* @param data
* @return {*}
*/
modelUpdateFactory(data) {
return this.modelFactory(data)
}
//////////////
// Preprocessors
////////////
@ -196,7 +239,7 @@ export default class AbstractService {
return this.errorHandler(error)
})
.then(response => {
return Promise.resolve(this.modelFactory(response.data))
return Promise.resolve(this.modelGetFactory(response.data))
})
.finally(() => {
cancel()
@ -224,10 +267,10 @@ export default class AbstractService {
.then(response => {
if (Array.isArray(response.data)) {
return Promise.resolve(response.data.map(entry => {
return this.modelFactory(entry)
return this.modelGetAllFactory(entry)
}))
}
return Promise.resolve(this.modelFactory(response.data))
return Promise.resolve(this.modelGetAllFactory(response.data))
})
.finally(() => {
cancel()
@ -251,7 +294,7 @@ export default class AbstractService {
return this.errorHandler(error)
})
.then(response => {
return Promise.resolve(this.modelFactory(response.data))
return Promise.resolve(this.modelCreateFactory(response.data))
})
.finally(() => {
cancel()
@ -275,7 +318,7 @@ export default class AbstractService {
return this.errorHandler(error)
})
.then(response => {
return Promise.resolve(this.modelFactory(response.data))
return Promise.resolve(this.modelUpdateFactory(response.data))
})
.finally(() => {
cancel()