diff --git a/backend/src/main/java/com/reactpairdemo/demo/DemoApplication.java b/backend/src/main/java/com/reactpairdemo/demo/DemoApplication.java index 0108661..9713c2b 100644 --- a/backend/src/main/java/com/reactpairdemo/demo/DemoApplication.java +++ b/backend/src/main/java/com/reactpairdemo/demo/DemoApplication.java @@ -1,7 +1,9 @@ package com.reactpairdemo.demo; +import org.modelmapper.ModelMapper; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.Bean; @SpringBootApplication public class DemoApplication { @@ -13,5 +15,6 @@ public static void main(String[] args) { public ModelMapper modelMapper() { return new ModelMapper(); } - +// user have crud application + // user can have many education id,degree ,percentage, passing date ,shoolName pagination should work } diff --git a/backend/src/main/java/com/reactpairdemo/demo/controller/EducationController.java b/backend/src/main/java/com/reactpairdemo/demo/controller/EducationController.java new file mode 100644 index 0000000..9b1dced --- /dev/null +++ b/backend/src/main/java/com/reactpairdemo/demo/controller/EducationController.java @@ -0,0 +1,50 @@ +package com.reactpairdemo.demo.controller; + +import com.reactpairdemo.demo.dto.EducationDto; +import com.reactpairdemo.demo.dto.EducationDto; +import com.reactpairdemo.demo.entity.Education; +import com.reactpairdemo.demo.service.EducationService; +import jakarta.validation.Valid; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@RestController +@RequestMapping("/api/v1/education") +public class EducationController { + + @Autowired + private EducationService educationService; + @GetMapping + public ResponseEntity> getAllEducations() { + return new ResponseEntity<>(educationService.getAllEducations(), HttpStatus.OK); + } + + + @PostMapping("/user/{userId}") + public ResponseEntity createEducation(@Valid @RequestBody Education educationDto, @PathVariable Long userId) { + return new ResponseEntity<>(educationService.createEducation(educationDto,userId), HttpStatus.CREATED); + } + + + @GetMapping("/{id}") + public ResponseEntity getEducationById(@PathVariable Long id) { + return new ResponseEntity<>(educationService.getEducationById(id), HttpStatus.OK); + + } + + + @PutMapping("/{id}/user/{userId}") + public ResponseEntity updateEducation(@PathVariable Long id, @PathVariable Long userId,@Valid @RequestBody EducationDto educationDto) { + return new ResponseEntity<>(educationService.updateEducation(id,userId,educationDto), HttpStatus.OK); + } + + + @DeleteMapping("/{id}") + public ResponseEntity deleteEducation(@PathVariable Long id) { + return new ResponseEntity<>(educationService.deleteEducation(id), HttpStatus.OK); + } +} diff --git a/backend/src/main/java/com/reactpairdemo/demo/controller/UserController.java b/backend/src/main/java/com/reactpairdemo/demo/controller/UserController.java new file mode 100644 index 0000000..ba5dd94 --- /dev/null +++ b/backend/src/main/java/com/reactpairdemo/demo/controller/UserController.java @@ -0,0 +1,51 @@ +package com.reactpairdemo.demo.controller; + +import com.reactpairdemo.demo.dto.UserDto; +import com.reactpairdemo.demo.service.UserService; +import jakarta.validation.Valid; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +import static com.reactpairdemo.demo.utils.Constants.BASE_URL; + +@RestController +@RequestMapping(BASE_URL) +public class UserController { + + @Autowired + private UserService userService; + + @GetMapping + public ResponseEntity> getAllUsers() { + return new ResponseEntity<>(userService.getAllUsers(), HttpStatus.OK); + } + + + @PostMapping + public ResponseEntity createUser(@Valid @RequestBody UserDto userDto) { + return new ResponseEntity<>(userService.createUser(userDto), HttpStatus.CREATED); + } + + + @GetMapping("/{id}") + public ResponseEntity getUserById(@PathVariable Long id) { + return new ResponseEntity<>(userService.getUserById(id), HttpStatus.OK); + + } + + + @PutMapping("/{id}") + public ResponseEntity updateUser(@PathVariable Long id, @RequestBody UserDto userDto) { + return new ResponseEntity<>(userService.updateUser(id,userDto), HttpStatus.OK); + } + + + @DeleteMapping("/{id}") + public ResponseEntity deleteUser(@PathVariable Long id) { + return new ResponseEntity<>(userService.deleteUser(id), HttpStatus.OK); + } +} diff --git a/backend/src/main/java/com/reactpairdemo/demo/dto/EducationDto.java b/backend/src/main/java/com/reactpairdemo/demo/dto/EducationDto.java new file mode 100644 index 0000000..cbe6f6e --- /dev/null +++ b/backend/src/main/java/com/reactpairdemo/demo/dto/EducationDto.java @@ -0,0 +1,28 @@ +package com.reactpairdemo.demo.dto; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.reactpairdemo.demo.entity.User; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.Builder; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.time.LocalDate; + +@Data +public class EducationDto { + + private Long id; + @NotNull(message = "Please Enter courseName") + @Size(min = 4,message = "Please Enter valid courseName") + private String courseName; + @NotNull(message = "Please Enter courseName") + private String percentage; + + @NotNull(message = "Please Enter courseName") + private LocalDate passingYear; + +} diff --git a/backend/src/main/java/com/reactpairdemo/demo/dto/UserDto.java b/backend/src/main/java/com/reactpairdemo/demo/dto/UserDto.java new file mode 100644 index 0000000..da71c46 --- /dev/null +++ b/backend/src/main/java/com/reactpairdemo/demo/dto/UserDto.java @@ -0,0 +1,31 @@ +package com.reactpairdemo.demo.dto; + +import com.reactpairdemo.demo.entity.Education; +import jakarta.persistence.CascadeType; +import jakarta.persistence.OneToMany; + +import jakarta.validation.constraints.*; +import lombok.Builder; +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + + +@Data +public class UserDto { + private Long id; + @NotNull(message = "Please enter email") + @Email(message = "Invalid email format") + private String email; + @NotNull(message = "Please enter password") + @Pattern(regexp = "^(?=.*[A-Z])(?=.*[a-z])(?=.*\\d)(?=.*[@#$%^&+=])[A-Za-z\\d@#$%^&+=]{8,}$",message = "Invalid password format") + private String password; + @NotNull(message = "Please enter name") + @Size(min = 4,message = "Please enter a valid name") + private String name; + @NotNull(message = "Please enter age") + private Long age; + + private List education= new ArrayList<>(); +} diff --git a/backend/src/main/java/com/reactpairdemo/demo/entity/Education.java b/backend/src/main/java/com/reactpairdemo/demo/entity/Education.java new file mode 100644 index 0000000..511dabd --- /dev/null +++ b/backend/src/main/java/com/reactpairdemo/demo/entity/Education.java @@ -0,0 +1,25 @@ +package com.reactpairdemo.demo.entity; + +import com.fasterxml.jackson.annotation.JsonFormat; +import jakarta.persistence.*; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.time.LocalDate; + +@Data +@Entity +public class Education { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + private String courseName; + private String percentage; + @JsonFormat(pattern = "dd/MM/yyyy") + @DateTimeFormat(pattern = "dd/MM/yyyy") + private LocalDate passingYear; + + @ManyToOne + @JoinColumn(name = "user_id") + private User user; +} diff --git a/backend/src/main/java/com/reactpairdemo/demo/entity/User.java b/backend/src/main/java/com/reactpairdemo/demo/entity/User.java new file mode 100644 index 0000000..b8aab32 --- /dev/null +++ b/backend/src/main/java/com/reactpairdemo/demo/entity/User.java @@ -0,0 +1,22 @@ +package com.reactpairdemo.demo.entity; + +import jakarta.persistence.*; +import lombok.Data; + +import java.util.List; + +@Data +@Entity(name = "student_edu") +public class User { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + private String email; + private String password; + private String name; + private Long age; + + @OneToMany(mappedBy = "user",cascade = CascadeType.ALL,orphanRemoval = true) + private List education; +} diff --git a/backend/src/main/java/com/reactpairdemo/demo/exceptions/ErrorResponse.java b/backend/src/main/java/com/reactpairdemo/demo/exceptions/ErrorResponse.java new file mode 100644 index 0000000..f7e75d8 --- /dev/null +++ b/backend/src/main/java/com/reactpairdemo/demo/exceptions/ErrorResponse.java @@ -0,0 +1,11 @@ +package com.reactpairdemo.demo.exceptions; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class ErrorResponse { + String message; + String title; +} diff --git a/backend/src/main/java/com/reactpairdemo/demo/exceptions/GlobalHandleException.java b/backend/src/main/java/com/reactpairdemo/demo/exceptions/GlobalHandleException.java new file mode 100644 index 0000000..656cc53 --- /dev/null +++ b/backend/src/main/java/com/reactpairdemo/demo/exceptions/GlobalHandleException.java @@ -0,0 +1,50 @@ +package com.reactpairdemo.demo.exceptions; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.FieldError; +import org.springframework.web.bind.MethodArgumentNotValidException; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.RestControllerAdvice; +import org.springframework.web.servlet.resource.NoResourceFoundException; + + +import java.util.HashMap; +import java.util.Map; + +@RestControllerAdvice +@Slf4j +public class GlobalHandleException { + @ExceptionHandler(ResourceNotFoundException.class) + public ResponseEntity handleResourceNotFoundException( + ResourceNotFoundException ex + ) { + log.warn(String.format(">>> {}", ex.getMessage())); + return new ResponseEntity<>(new ErrorResponse(ex.getMessage(), HttpStatus.NOT_FOUND.toString()), HttpStatus.NOT_FOUND); + } + @ExceptionHandler(NoResourceFoundException.class) + public ResponseEntity handleNoResourceFoundException(NoResourceFoundException ex) { + log.warn(String.format(">>> {}", ex.getMessage())); + return new ResponseEntity<>(new ErrorResponse(ex.getMessage(), HttpStatus.BAD_REQUEST.toString()),HttpStatus.BAD_REQUEST); + } + + @ExceptionHandler(IllegalArgumentException.class) + public ResponseEntity handleIllegalArgumentException(IllegalArgumentException ex) { + log.warn(String.format(">>> {}", ex.getMessage())); + return new ResponseEntity<>(new ErrorResponse(ex.getMessage(), HttpStatus.BAD_REQUEST.toString()),HttpStatus.BAD_REQUEST); + } + + @ExceptionHandler(MethodArgumentNotValidException.class) + public ResponseEntity> handleMethodArgumentNotValidException(MethodArgumentNotValidException e){ + Map resp=new HashMap<>(); + e.getBindingResult().getAllErrors().forEach(objectError -> { + String fieldName=((FieldError)(objectError)).getField(); + String message=objectError.getDefaultMessage(); + resp.put(fieldName,message); + }); + return ResponseEntity.status(HttpStatus.NOT_ACCEPTABLE).body(resp); + } + +} diff --git a/backend/src/main/java/com/reactpairdemo/demo/exceptions/ResourceNotFoundException.java b/backend/src/main/java/com/reactpairdemo/demo/exceptions/ResourceNotFoundException.java new file mode 100644 index 0000000..053893f --- /dev/null +++ b/backend/src/main/java/com/reactpairdemo/demo/exceptions/ResourceNotFoundException.java @@ -0,0 +1,7 @@ +package com.reactpairdemo.demo.exceptions; + +public class ResourceNotFoundException extends RuntimeException{ + public ResourceNotFoundException(String message) { + super(message); + } +} diff --git a/backend/src/main/java/com/reactpairdemo/demo/repo/EducationRepository.java b/backend/src/main/java/com/reactpairdemo/demo/repo/EducationRepository.java new file mode 100644 index 0000000..cc66f49 --- /dev/null +++ b/backend/src/main/java/com/reactpairdemo/demo/repo/EducationRepository.java @@ -0,0 +1,14 @@ +package com.reactpairdemo.demo.repo; + +import com.reactpairdemo.demo.entity.Education; +import com.reactpairdemo.demo.entity.User; +import org.springframework.data.jpa.repository.JpaRepository; + +import java.util.Optional; + + +public interface EducationRepository extends JpaRepository { + Optional findByCourseName(String courseName); +} + + diff --git a/backend/src/main/java/com/reactpairdemo/demo/repo/UserRepository.java b/backend/src/main/java/com/reactpairdemo/demo/repo/UserRepository.java new file mode 100644 index 0000000..5658eff --- /dev/null +++ b/backend/src/main/java/com/reactpairdemo/demo/repo/UserRepository.java @@ -0,0 +1,12 @@ +package com.reactpairdemo.demo.repo; + +import com.reactpairdemo.demo.entity.User; +import org.springframework.data.jpa.repository.JpaRepository; + +import java.util.List; +import java.util.Optional; + +public interface UserRepository extends JpaRepository { + Optional findByEmail(String email); + List findByName(String name); +} diff --git a/backend/src/main/java/com/reactpairdemo/demo/service/EducationService.java b/backend/src/main/java/com/reactpairdemo/demo/service/EducationService.java new file mode 100644 index 0000000..9a75f2f --- /dev/null +++ b/backend/src/main/java/com/reactpairdemo/demo/service/EducationService.java @@ -0,0 +1,14 @@ +package com.reactpairdemo.demo.service; + +import com.reactpairdemo.demo.dto.EducationDto; +import com.reactpairdemo.demo.entity.Education; + +import java.util.List; + +public interface EducationService { + List getAllEducations(); + EducationDto createEducation(Education educationDto, Long userId); + EducationDto getEducationById(Long id); + EducationDto updateEducation(Long id ,Long userId, EducationDto educationDto); + String deleteEducation(Long id); +} diff --git a/backend/src/main/java/com/reactpairdemo/demo/service/UserService.java b/backend/src/main/java/com/reactpairdemo/demo/service/UserService.java new file mode 100644 index 0000000..bbfc11e --- /dev/null +++ b/backend/src/main/java/com/reactpairdemo/demo/service/UserService.java @@ -0,0 +1,14 @@ +package com.reactpairdemo.demo.service; + +import com.reactpairdemo.demo.dto.UserDto; + +import java.util.List; + +public interface UserService { + List getAllUsers(); + UserDto createUser(UserDto userDto); + UserDto getUserById(Long id); + UserDto updateUser(Long id , UserDto userDto); + String deleteUser(Long id); + +} diff --git a/backend/src/main/java/com/reactpairdemo/demo/service/impl/EducationServiceImpl.java b/backend/src/main/java/com/reactpairdemo/demo/service/impl/EducationServiceImpl.java new file mode 100644 index 0000000..97148ad --- /dev/null +++ b/backend/src/main/java/com/reactpairdemo/demo/service/impl/EducationServiceImpl.java @@ -0,0 +1,80 @@ +package com.reactpairdemo.demo.service.impl; + +import com.reactpairdemo.demo.dto.EducationDto; +import com.reactpairdemo.demo.dto.UserDto; +import com.reactpairdemo.demo.entity.Education; +import com.reactpairdemo.demo.entity.User; +import com.reactpairdemo.demo.exceptions.ResourceNotFoundException; +import com.reactpairdemo.demo.repo.EducationRepository; +import com.reactpairdemo.demo.repo.UserRepository; +import com.reactpairdemo.demo.service.EducationService; +import org.modelmapper.ModelMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Optional; +import java.util.stream.Collectors; + +import static com.reactpairdemo.demo.utils.Constants.NOT_FOUND; + +@Service +public class EducationServiceImpl implements EducationService { + + @Autowired + private EducationRepository educationRepository; + @Autowired + private UserRepository userRepository; + + + @Autowired + private ModelMapper modelMapper; + @Override + public List getAllEducations() { + List educationList=educationRepository.findAll(); + + return educationList.stream().map(user -> modelMapper.map(user, EducationDto.class)).collect(Collectors.toList()); + } + + @Override + public EducationDto createEducation(Education educationDto,Long userId) { + + User user = userRepository.findById(userId).orElseThrow(() -> new ResourceNotFoundException("User NOT FOUND ")); + educationDto.setUser(user); + Education education = educationRepository.save(educationDto); + return modelMapper.map(education,EducationDto.class); + } + + @Override + public EducationDto getEducationById(Long id) { + Optional educationOptional=educationRepository.findById(id); + if(educationOptional.isEmpty()){ + throw new ResourceNotFoundException(NOT_FOUND); + } + + return modelMapper.map(educationOptional.get(),EducationDto.class); + } + + @Override + public EducationDto updateEducation(Long id,Long userId, EducationDto educationDto) { + Optional educationOptional=educationRepository.findById(id); + if(educationOptional.isEmpty()){ + throw new ResourceNotFoundException(NOT_FOUND); + } + educationOptional.get().setCourseName(educationDto.getCourseName()); + educationOptional.get().setPercentage(educationDto.getPercentage()); + educationOptional.get().setPassingYear(educationDto.getPassingYear()); + Education education= educationRepository.save(educationOptional.get()); + return modelMapper.map(education, EducationDto.class); + } + + @Override + public String deleteEducation(Long id) { + Optional educationOptional=educationRepository.findById(id); + if(educationOptional.isEmpty()){ + throw new ResourceNotFoundException(NOT_FOUND); + } + educationRepository.deleteById(id); + return "Sucessfully Deleted"; + } +} diff --git a/backend/src/main/java/com/reactpairdemo/demo/service/impl/UserServiceImpl.java b/backend/src/main/java/com/reactpairdemo/demo/service/impl/UserServiceImpl.java new file mode 100644 index 0000000..78c0e36 --- /dev/null +++ b/backend/src/main/java/com/reactpairdemo/demo/service/impl/UserServiceImpl.java @@ -0,0 +1,80 @@ +package com.reactpairdemo.demo.service.impl; + +import com.reactpairdemo.demo.dto.UserDto; +import com.reactpairdemo.demo.entity.User; +import com.reactpairdemo.demo.exceptions.ResourceNotFoundException; +import com.reactpairdemo.demo.repo.UserRepository; +import com.reactpairdemo.demo.service.UserService; +import com.reactpairdemo.demo.utils.Mapper; +import org.modelmapper.ModelMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Optional; +import java.util.stream.Collectors; + +import static com.reactpairdemo.demo.utils.Constants.NOT_FOUND; + +@Service +public class UserServiceImpl implements UserService { + + @Autowired + private Mapper mapper; + @Autowired + private UserRepository userRepository; + + @Autowired + private ModelMapper modelMapper; + + @Override + public List getAllUsers() { + List userList=userRepository.findAll(); + + return userList.stream().map(user -> mapper.entityToDto(user)).collect(Collectors.toList()); + } + + @Override + public UserDto createUser(UserDto userDto) { + User isExistingUser=userRepository.findByEmail(userDto.getEmail()).orElse(null); + if(isExistingUser!=null){ + throw new IllegalArgumentException("User Already Existed !!"); + } + User user=userRepository.save(mapper.dtoToEntity(userDto)); + return mapper.entityToDto(user); + } + + @Override + public UserDto getUserById(Long id) { + Optional userOptional=userRepository.findById(id); + if(userOptional.isEmpty()){ + throw new ResourceNotFoundException(NOT_FOUND); + } + + return mapper.entityToDto(userOptional.get()); + } + + @Override + public UserDto updateUser(Long id, UserDto userDto) { + Optional userOptional=userRepository.findById(id); + if(userOptional.isEmpty()){ + throw new ResourceNotFoundException(NOT_FOUND); + } + userOptional.get().setName(userDto.getName()); + userOptional.get().setEmail(userDto.getEmail()); + userOptional.get().setPassword(userDto.getPassword()); + userOptional.get().setAge(userDto.getAge()); + User user=userRepository.save(userOptional.get()); + return mapper.entityToDto(user) ; + } + + @Override + public String deleteUser(Long id) { + Optional userOptional=userRepository.findById(id); + if(userOptional.isEmpty()){ + throw new ResourceNotFoundException(NOT_FOUND); + } + userRepository.deleteById(id); + return "Sucessfully Deleted"; + } +} diff --git a/backend/src/main/java/com/reactpairdemo/demo/utils/Constants.java b/backend/src/main/java/com/reactpairdemo/demo/utils/Constants.java new file mode 100644 index 0000000..561030e --- /dev/null +++ b/backend/src/main/java/com/reactpairdemo/demo/utils/Constants.java @@ -0,0 +1,6 @@ +package com.reactpairdemo.demo.utils; + +public class Constants { + public static final String BASE_URL="/api/v1/user"; + public static final String NOT_FOUND="Give Id Not Found !!"; +} diff --git a/backend/src/main/java/com/reactpairdemo/demo/utils/Mapper.java b/backend/src/main/java/com/reactpairdemo/demo/utils/Mapper.java new file mode 100644 index 0000000..1fefa14 --- /dev/null +++ b/backend/src/main/java/com/reactpairdemo/demo/utils/Mapper.java @@ -0,0 +1,22 @@ +package com.reactpairdemo.demo.utils; + +import com.reactpairdemo.demo.dto.UserDto; +import com.reactpairdemo.demo.entity.User; +import org.modelmapper.ModelMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +@Component +public class Mapper { + + @Autowired + private ModelMapper mapper; + + public UserDto entityToDto(User user){ + return mapper.map(user, UserDto.class); + } + + public User dtoToEntity(UserDto user){ + return mapper.map(user, User.class); + } +} diff --git a/backend/target/classes/com/reactpairdemo/demo/DemoApplication.class b/backend/target/classes/com/reactpairdemo/demo/DemoApplication.class index 5662ef5..3d71273 100644 Binary files a/backend/target/classes/com/reactpairdemo/demo/DemoApplication.class and b/backend/target/classes/com/reactpairdemo/demo/DemoApplication.class differ diff --git a/backend/target/classes/com/reactpairdemo/demo/controller/EducationController.class b/backend/target/classes/com/reactpairdemo/demo/controller/EducationController.class new file mode 100644 index 0000000..a187ebd Binary files /dev/null and b/backend/target/classes/com/reactpairdemo/demo/controller/EducationController.class differ diff --git a/backend/target/classes/com/reactpairdemo/demo/controller/UserController.class b/backend/target/classes/com/reactpairdemo/demo/controller/UserController.class new file mode 100644 index 0000000..06853bf Binary files /dev/null and b/backend/target/classes/com/reactpairdemo/demo/controller/UserController.class differ diff --git a/backend/target/classes/com/reactpairdemo/demo/dto/EducationDto.class b/backend/target/classes/com/reactpairdemo/demo/dto/EducationDto.class new file mode 100644 index 0000000..aa4be4f Binary files /dev/null and b/backend/target/classes/com/reactpairdemo/demo/dto/EducationDto.class differ diff --git a/backend/target/classes/com/reactpairdemo/demo/dto/UserDto.class b/backend/target/classes/com/reactpairdemo/demo/dto/UserDto.class new file mode 100644 index 0000000..525021c Binary files /dev/null and b/backend/target/classes/com/reactpairdemo/demo/dto/UserDto.class differ diff --git a/backend/target/classes/com/reactpairdemo/demo/entity/Education.class b/backend/target/classes/com/reactpairdemo/demo/entity/Education.class new file mode 100644 index 0000000..b33b971 Binary files /dev/null and b/backend/target/classes/com/reactpairdemo/demo/entity/Education.class differ diff --git a/backend/target/classes/com/reactpairdemo/demo/entity/User.class b/backend/target/classes/com/reactpairdemo/demo/entity/User.class new file mode 100644 index 0000000..c9d2233 Binary files /dev/null and b/backend/target/classes/com/reactpairdemo/demo/entity/User.class differ diff --git a/backend/target/classes/com/reactpairdemo/demo/exceptions/ErrorResponse$ErrorResponseBuilder.class b/backend/target/classes/com/reactpairdemo/demo/exceptions/ErrorResponse$ErrorResponseBuilder.class new file mode 100644 index 0000000..7830fbe Binary files /dev/null and b/backend/target/classes/com/reactpairdemo/demo/exceptions/ErrorResponse$ErrorResponseBuilder.class differ diff --git a/backend/target/classes/com/reactpairdemo/demo/exceptions/ErrorResponse.class b/backend/target/classes/com/reactpairdemo/demo/exceptions/ErrorResponse.class new file mode 100644 index 0000000..c5dde4f Binary files /dev/null and b/backend/target/classes/com/reactpairdemo/demo/exceptions/ErrorResponse.class differ diff --git a/backend/target/classes/com/reactpairdemo/demo/exceptions/GlobalHandleException.class b/backend/target/classes/com/reactpairdemo/demo/exceptions/GlobalHandleException.class new file mode 100644 index 0000000..5f275f7 Binary files /dev/null and b/backend/target/classes/com/reactpairdemo/demo/exceptions/GlobalHandleException.class differ diff --git a/backend/target/classes/com/reactpairdemo/demo/exceptions/ResourceNotFoundException.class b/backend/target/classes/com/reactpairdemo/demo/exceptions/ResourceNotFoundException.class new file mode 100644 index 0000000..89dae99 Binary files /dev/null and b/backend/target/classes/com/reactpairdemo/demo/exceptions/ResourceNotFoundException.class differ diff --git a/backend/target/classes/com/reactpairdemo/demo/repo/EducationRepository.class b/backend/target/classes/com/reactpairdemo/demo/repo/EducationRepository.class new file mode 100644 index 0000000..4a4bef5 Binary files /dev/null and b/backend/target/classes/com/reactpairdemo/demo/repo/EducationRepository.class differ diff --git a/backend/target/classes/com/reactpairdemo/demo/repo/UserRepository.class b/backend/target/classes/com/reactpairdemo/demo/repo/UserRepository.class new file mode 100644 index 0000000..558f5b9 Binary files /dev/null and b/backend/target/classes/com/reactpairdemo/demo/repo/UserRepository.class differ diff --git a/backend/target/classes/com/reactpairdemo/demo/service/EducationService.class b/backend/target/classes/com/reactpairdemo/demo/service/EducationService.class new file mode 100644 index 0000000..7546bfe Binary files /dev/null and b/backend/target/classes/com/reactpairdemo/demo/service/EducationService.class differ diff --git a/backend/target/classes/com/reactpairdemo/demo/service/UserService.class b/backend/target/classes/com/reactpairdemo/demo/service/UserService.class new file mode 100644 index 0000000..5f6031f Binary files /dev/null and b/backend/target/classes/com/reactpairdemo/demo/service/UserService.class differ diff --git a/backend/target/classes/com/reactpairdemo/demo/service/impl/EducationServiceImpl.class b/backend/target/classes/com/reactpairdemo/demo/service/impl/EducationServiceImpl.class new file mode 100644 index 0000000..c5904c8 Binary files /dev/null and b/backend/target/classes/com/reactpairdemo/demo/service/impl/EducationServiceImpl.class differ diff --git a/backend/target/classes/com/reactpairdemo/demo/service/impl/UserServiceImpl.class b/backend/target/classes/com/reactpairdemo/demo/service/impl/UserServiceImpl.class new file mode 100644 index 0000000..e91bb95 Binary files /dev/null and b/backend/target/classes/com/reactpairdemo/demo/service/impl/UserServiceImpl.class differ diff --git a/backend/target/classes/com/reactpairdemo/demo/utils/Constants.class b/backend/target/classes/com/reactpairdemo/demo/utils/Constants.class new file mode 100644 index 0000000..1780b43 Binary files /dev/null and b/backend/target/classes/com/reactpairdemo/demo/utils/Constants.class differ diff --git a/backend/target/classes/com/reactpairdemo/demo/utils/Mapper.class b/backend/target/classes/com/reactpairdemo/demo/utils/Mapper.class new file mode 100644 index 0000000..1d2dfc5 Binary files /dev/null and b/backend/target/classes/com/reactpairdemo/demo/utils/Mapper.class differ