useQuery.ts 957 B

12345678910111213141516171819202122232425262728293031323334
  1. import {Query} from "@vuex-orm/core";
  2. import {$objectProperties} from "~/services/utils/objectProperties";
  3. import {AnyJson} from "~/types/types";
  4. import {Collection, Item} from "@vuex-orm/core/dist/src/data/Data";
  5. class useQuery{
  6. public getEntry(query: Query, id:number): Item{
  7. return query.find(id);
  8. }
  9. public getEntries(query: Query):Collection{
  10. return query.get()
  11. }
  12. public getFlattenEntry(query: Query, id:number): AnyJson{
  13. return $objectProperties.cloneAndFlatten(this.getEntry(query, id) as AnyJson);
  14. }
  15. public getFlattenEntries(query: Query): Array<AnyJson>{
  16. const entries = this.getEntries(query)
  17. return entries.map((entry:AnyJson) => {
  18. return $objectProperties.cloneAndFlatten(entry)
  19. })
  20. }
  21. public getJsonEntry(query: Query, id:number): AnyJson{
  22. const entry = this.getEntry(query, id);
  23. if(entry)
  24. return entry.$toJson();
  25. return {}
  26. }
  27. }
  28. export const useQueryHelper = new useQuery()