modelProvider.ts 936 B

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