enumManager.ts 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. import type { VueI18n } from 'vue-i18n'
  2. import type ApiRequestService from './apiRequestService'
  3. import UrlUtils from '~/services/utils/urlUtils'
  4. import HydraNormalizer from '~/services/data/normalizer/hydraNormalizer'
  5. import type { AnyJson, Enum, EnumApiResponse } from '~/types/data.d'
  6. class EnumManager {
  7. private apiRequestService: ApiRequestService
  8. private i18n: VueI18n
  9. public constructor(apiRequestService: ApiRequestService, i18n: VueI18n) {
  10. this.apiRequestService = apiRequestService
  11. this.i18n = i18n
  12. }
  13. public async fetch(enumName: string): Promise<Enum> {
  14. const url = UrlUtils.join('api', 'enum', enumName)
  15. const response = await this.apiRequestService.get(url)
  16. const { data } = HydraNormalizer.denormalize(
  17. response as unknown as AnyJson,
  18. ) as {
  19. data: EnumApiResponse
  20. }
  21. const enum_: Enum = []
  22. for (const key in data.items) {
  23. if (Object.prototype.hasOwnProperty.call(data.items, key)) {
  24. enum_.push({
  25. value: data.items[key],
  26. label: this.i18n.t(data.items[key]),
  27. })
  28. }
  29. }
  30. return enum_
  31. }
  32. }
  33. export default EnumManager