| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- 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<Model>{
- const {store} = useContext()
- return store.$repo(model)
- }
- public initRepository(model: typeof Model, readOnly:boolean = true): Repository<Model>{
- const repository = this.getRepository(model)
- this.setReadOnly(repository, readOnly)
- return repository
- }
- public setReadOnly(repository: Repository<Model>, readOnly:boolean): void{
- repository.getModel().setReadOnly(readOnly)
- }
- public getReadOnly(repository: Repository<Model>): boolean{
- return repository.getModel().getReadOnly()
- }
- public editRepository(repository: Repository<Model>){
- 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()
|