modelProvider.ts 885 B

123456789101112131415161718192021222324252627
  1. import { Context } from '@nuxt/types/app'
  2. import * as _ from 'lodash'
  3. import { AnyJson, DataProviderArgs, Provider } from '~/types/interfaces'
  4. import BaseProvider from '~/services/dataProvider/provider/baseProvider'
  5. import { QUERY_TYPE } from '~/types/enums'
  6. import { repositoryHelper } from '~/services/store/repository'
  7. class ModelProvider extends BaseProvider implements Provider {
  8. constructor (ctx: Context, args: DataProviderArgs) {
  9. super(ctx, args)
  10. }
  11. async invoke (data: AnyJson): Promise<any> {
  12. if (typeof this.arguments.model === 'undefined') { throw new TypeError('model must be defined') }
  13. data.originalState = _.cloneDeep(data)
  14. await repositoryHelper.persist(this.arguments.model, data)
  15. await this.postHook()
  16. }
  17. static support (args:DataProviderArgs): boolean {
  18. return args.type === QUERY_TYPE.MODEL
  19. }
  20. }
  21. export default ModelProvider