useEntityManager.ts 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. import { useRepo } from 'pinia-orm'
  2. import EntityManager from '~/services/data/entityManager'
  3. import { useAp2iRequestService } from '~/composables/data/useAp2iRequestService'
  4. import { useAccessProfileStore } from '~/stores/accessProfile'
  5. import type ApiResource from '~/models/ApiResource'
  6. import type { AsyncData } from '#app'
  7. let entityManager: EntityManager | null = null
  8. interface _useEntityManagerReturnType {
  9. fetch: <T extends typeof ApiResource>(
  10. model: T,
  11. id?: number | null,
  12. ) => AsyncData<InstanceType<T> | null, Error | null>
  13. }
  14. export const useEntityManager = () => {
  15. if (entityManager === null) {
  16. const { apiRequestService } = useAp2iRequestService()
  17. const getRepo = useRepo
  18. const profileStore = useAccessProfileStore()
  19. const getProfileMask = () => {
  20. return {
  21. activityYear: profileStore.activityYear,
  22. historical: profileStore.historical,
  23. }
  24. }
  25. entityManager = new EntityManager(
  26. apiRequestService,
  27. getRepo,
  28. getProfileMask,
  29. )
  30. }
  31. return { em: entityManager }
  32. }