| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- import { AnyJson, DataPersisterArgs, DataProviderArgs } from '~/types/interfaces'
- import UrlBuilder from '~/services/connection/urlBuilder'
- import { DENORMALIZER_TYPE, HTTP_METHOD } from '~/types/enums'
- import Serializer from '~/services/serializer/serializer'
- import ApiError from '~/services/utils/apiError'
- import DataProvider from '~/services/dataProvider/dataProvider'
- import DataManager from '~/services/connection/dataManager'
- /**
- * Le DataPersisteer a pour rôle de mettre à jour les données via de l'API Opentalent
- */
- class DataPersister extends DataManager {
- /**
- * Exécute la requête et retourne la réponse désérialisée
- * @param args
- */
- public async invoke (args: DataPersisterArgs): Promise<any> {
- try {
- await super.invoke(args)
- args.data = Serializer.normalize(args)
- const url = UrlBuilder.invoke(args)
- const response = await DataPersister.sendRequest(url, args.id ? HTTP_METHOD.PUT : HTTP_METHOD.POST, args)
- await this.provideResponse(response, args)
- } catch (error) {
- throw new ApiError(error.response.status, error.response.data.detail)
- }
- }
- /**
- * ?
- * @param response
- * @param args
- */
- private async provideResponse (response: AnyJson, args: DataPersisterArgs) {
- const deserializedResponse = Serializer.denormalize(response, DENORMALIZER_TYPE.HYDRA)
- const dataProvider = new DataProvider()
- dataProvider.initCtx(this.ctx)
- const dataProviderArgs: DataProviderArgs = {
- type: args.type,
- url: args.url,
- enumType: args.enumType,
- model: args.model,
- rootModel: args.rootModel,
- id: args.id,
- rootId: args.rootId
- }
- return await dataProvider.provide(deserializedResponse, dataProviderArgs)
- }
- }
- export default DataPersister
|