modelProvider.ts 946 B

1234567891011121314151617181920212223242526272829
  1. import {AnyJson, DataProviderArgs, Provider} from "~/types/interfaces";
  2. import BaseProvider from "~/services/dataProvider/provider/baseProvider";
  3. import {QUERY_TYPE} from "~/types/enums";
  4. import {Context} from "@nuxt/types/app";
  5. import * as _ from "lodash";
  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')
  13. throw new Error('model must be defined');
  14. data['originalState'] = _.cloneDeep(data)
  15. const repository = repositoryHelper.getRepository(this.arguments.model);
  16. await repositoryHelper.persist(repository, data)
  17. await this.postHook()
  18. }
  19. static support(args:DataProviderArgs): boolean{
  20. return args.type === QUERY_TYPE.MODEL
  21. }
  22. }
  23. export default ModelProvider