modelProcessor.ts 1.0 KB

12345678910111213141516171819202122232425262728293031323334
  1. import * as _ from 'lodash'
  2. import {ApiResponse, DataProviderArgs, Processor} from '~/types/interfaces'
  3. import BaseProcessor from '~/services/data/processor/baseProcessor'
  4. import {METADATA_TYPE, QUERY_TYPE} from '~/types/enums'
  5. import { repositoryHelper } from '~/services/store/repository'
  6. class ModelProcessor extends BaseProcessor implements Processor {
  7. /**
  8. * Is the given argument a supported model
  9. * @param args
  10. */
  11. public static support (args: DataProviderArgs): boolean {
  12. return args.type === QUERY_TYPE.MODEL
  13. }
  14. /**
  15. * Exécute la requête et retourne la réponse désérialisée
  16. * @param data
  17. */
  18. async process (payload: ApiResponse): Promise<any> {
  19. if (typeof this.arguments.model === 'undefined') {
  20. throw new TypeError('model must be defined')
  21. }
  22. if(payload.metadata.type !== METADATA_TYPE.COLLECTION){
  23. payload.data.originalState = _.cloneDeep(payload)
  24. }
  25. await repositoryHelper.persist(this.arguments.model, payload.data)
  26. return payload
  27. }
  28. }
  29. export default ModelProcessor