useRepository.ts 892 B

123456789101112131415161718192021222324252627282930313233
  1. import {Model, Repository} from "@vuex-orm/core";
  2. import {$objectProperties} from "~/services/utils/objectProperties";
  3. import {AnyJson} from "~/types/interfaces";
  4. import {Store} from "vuex";
  5. class useRepository{
  6. private store !: Store<any>
  7. public setStore(store: Store<any>){
  8. this.store = store
  9. }
  10. public getRepository(model: typeof Model): Repository<Model>{
  11. return this.store.$repo(model)
  12. }
  13. public updateStoreFromField(repository: Repository<Model>, entry:AnyJson, value:any, field:string): void{
  14. entry[field] = value
  15. this.updateStore(repository, $objectProperties.cloneAndNest(entry))
  16. }
  17. public updateStore(repository: Repository<Model>, entry:AnyJson): void{
  18. repository.save(entry)
  19. }
  20. public cleanRepository(repository: Repository){
  21. return () => {
  22. repository.flush()
  23. }
  24. }
  25. }
  26. export const useRepositoryHelper = new useRepository()