Skip to content
Snippets Groups Projects
Commit 5d181226 authored by brunoravera's avatar brunoravera
Browse files

create pattern

parent fe9acee9
No related branches found
No related tags found
No related merge requests found
...@@ -4,3 +4,8 @@ export interface Pattern { ...@@ -4,3 +4,8 @@ export interface Pattern {
description: string description: string
numberOfImplementations: number numberOfImplementations: number
} }
export interface CreatePatternRequest {
title: string
description: string
}
...@@ -21,6 +21,10 @@ import { ...@@ -21,6 +21,10 @@ import {
Textarea, Textarea,
} from '@chakra-ui/react' } from '@chakra-ui/react'
import { useFormik } from 'formik' import { useFormik } from 'formik'
import { useQueryClient } from 'react-query'
import { GetPatternsQuery } from '../query-builder'
import { CreatePatternMutation } from '../query-builder/create-pattern-mutation'
import { CreatePatternSchema, createPatternSchema } from './schema' import { CreatePatternSchema, createPatternSchema } from './schema'
...@@ -28,9 +32,20 @@ const FORM_ID = 'add-pattern-form' ...@@ -28,9 +32,20 @@ const FORM_ID = 'add-pattern-form'
export const AddPatternButton: React.FC<ButtonProps> = () => { export const AddPatternButton: React.FC<ButtonProps> = () => {
const { isOpen, onClose, onOpen } = useDisclosure() const { isOpen, onClose, onOpen } = useDisclosure()
const queryClient = useQueryClient()
const createMutation = CreatePatternMutation.useMutation({
onSuccess: () => {
queryClient.invalidateQueries(GetPatternsQuery.getKey({}))
},
})
const handleOnSubmit = (values: CreatePatternSchema) => { const handleOnSubmit = async (values: CreatePatternSchema) => {
console.log(values) await createMutation.mutateAsync({
title: values.title,
description: values.description,
})
onClose()
} }
const { const {
...@@ -72,7 +87,10 @@ export const AddPatternButton: React.FC<ButtonProps> = () => { ...@@ -72,7 +87,10 @@ export const AddPatternButton: React.FC<ButtonProps> = () => {
<VStack> <VStack>
<FormControl isInvalid={Boolean(errors.title) && touched.title}> <FormControl isInvalid={Boolean(errors.title) && touched.title}>
<FormLabel> <FormLabel>
<Text fontSize="sm">Titulo</Text> <HStack>
<Text fontSize="sm">Titulo</Text>
<Text color="red">*</Text>
</HStack>
</FormLabel> </FormLabel>
<Input <Input
name="title" name="title"
...@@ -89,7 +107,10 @@ export const AddPatternButton: React.FC<ButtonProps> = () => { ...@@ -89,7 +107,10 @@ export const AddPatternButton: React.FC<ButtonProps> = () => {
isInvalid={Boolean(errors.description) && touched.description} isInvalid={Boolean(errors.description) && touched.description}
> >
<FormLabel> <FormLabel>
<Text fontSize="sm">Descripcion</Text> <HStack>
<Text fontSize="sm">Descripcion</Text>
<Text color="red">*</Text>
</HStack>
</FormLabel> </FormLabel>
<Textarea <Textarea
name="description" name="description"
......
import { AxiosError } from 'axios'
import { useMutation as useRQMutation, UseMutationOptions } from 'react-query'
import { CreatePatternRequest, Pattern } from 'src/models'
import axiosService from 'src/services/axios-service'
export namespace CreatePatternMutation {
export type Params = CreatePatternRequest
export type Response = Pattern
export const key = ['create', 'pattern']
export const mutationFn = (params: Params) =>
axiosService.post<Response>(`/pattern/`, params).then((res) => res.data)
export const useMutation = (
options: UseMutationOptions<Response, AxiosError, CreatePatternRequest> = {}
) => {
return useRQMutation(mutationFn, { ...options, mutationKey: key })
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment