enumManager.ts 1.0 KB

12345678910111213141516171819202122232425262728293031323334
  1. import ApiRequestService from "./apiRequestService";
  2. import UrlUtils from "~/services/utils/urlUtils";
  3. import HydraNormalizer from "~/services/data/normalizer/hydraNormalizer";
  4. import type {Enum} from "~/types/data.d";
  5. import type {VueI18n} from "vue-i18n";
  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(response)
  17. const enum_: Enum = []
  18. for (const key in data.items) {
  19. if (data.items.hasOwnProperty(key)) {
  20. enum_.push({value: key, label: this.i18n.t(data.items[key])})
  21. }
  22. }
  23. return enum_
  24. }
  25. }
  26. export default EnumManager