import {useContext} from '@nuxtjs/composition-api' import {Repository} from "@vuex-orm/core"; import {$objectProperties} from "~/services/utils/objectProperties"; import {Model} from '@/models/Model' import {AnyJson} from "~/types/types"; class useRepository{ public getRepository(model: typeof Model): Repository{ const {store} = useContext() return store.$repo(model) } public initRepository(model: typeof Model, readOnly:boolean = true): Repository{ const repository = this.getRepository(model) this.setReadOnly(repository, readOnly) return repository } public setReadOnly(repository: Repository, readOnly:boolean): void{ repository.getModel().setReadOnly(readOnly) } public getReadOnly(repository: Repository): boolean{ return repository.getModel().getReadOnly() } public editRepository(repository: Repository){ return () => { this.setReadOnly(repository, false) } } public updateStoreFromField(repository: Repository, entry:AnyJson, value:any, field:string): void{ entry[field] = value repository.update($objectProperties.cloneAndNest(entry)) } public cleanRepository(repository: Repository){ return () => { repository.flush() } } } export const useRepositoryHelper = new useRepository()