Skip to content
Snippets Groups Projects
run-tests-step-2-mutation.ts 946 B
Newer Older
brunoravera's avatar
brunoravera committed
import { AxiosError, toFormData } from 'axios'
import { useMutation as useRQMutation, UseMutationOptions } from 'react-query'

brunoravera's avatar
brunoravera committed
import { Formalization, Implementation, Report } from 'src/models'
brunoravera's avatar
brunoravera committed
import axiosService from 'src/services/axios-service'

export namespace RunTestsStep2Mutation {
  export type Params = {
    id: Formalization['id']
    implementationId: Implementation['id']
    wrapperFile: File
brunoravera's avatar
brunoravera committed
    name: string
brunoravera's avatar
brunoravera committed
  }
brunoravera's avatar
brunoravera committed
  export type Response = Report
brunoravera's avatar
brunoravera committed

brunoravera's avatar
brunoravera committed
  export const key = ['formalizations', 'run-tests-step-2']
brunoravera's avatar
brunoravera committed

  export const mutationFn = (params: Params) =>
    axiosService
      .post<Response>(
brunoravera's avatar
brunoravera committed
        `/formalizations/${params.id}/run-tests-step-2/${params.implementationId}`,
brunoravera's avatar
brunoravera committed
        toFormData(params)
      )
      .then((res) => res.data)

  export const useMutation = (
    options: UseMutationOptions<Response, AxiosError, Params> = {}
  ) => {
    return useRQMutation(mutationFn, { ...options, mutationKey: key })
  }
}