import { Context } from '@nuxt/types/app' import * as _ from 'lodash' import { AnyJson, DataProviderArgs, Provider } from '~/types/interfaces' import BaseProvider from '~/services/dataProvider/provider/baseProvider' import { QUERY_TYPE } from '~/types/enums' import { repositoryHelper } from '~/services/store/repository' class ModelProvider extends BaseProvider implements Provider { constructor (ctx: Context, args: DataProviderArgs) { super(ctx, args) } async invoke (data: AnyJson): Promise { if (typeof this.arguments.model === 'undefined') { throw new TypeError('model must be defined') } data.originalState = _.cloneDeep(data) await repositoryHelper.persist(this.arguments.model, data) await this.postHook() } static support (args:DataProviderArgs): boolean { return args.type === QUERY_TYPE.MODEL } } export default ModelProvider