MentoringField

박경희·2023년 8월 25일
1

프로젝트

목록 보기
8/16
post-thumbnail

Entity

@Entity
@Getter @Builder
@NoArgsConstructor
@AllArgsConstructor
@Table(name = "mentoring_fields")
public class MentoringField {
    @Id @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String fieldName;

    @OneToMany(mappedBy = "mentoringField", fetch = FetchType.LAZY, orphanRemoval = true)
    private List<MentorMentoringField> mentors;
}

Controller

@RestController
@RequiredArgsConstructor
@RequestMapping("/api/v1/mentoringField")
public class MentoringFieldController {
    private final MentoringFieldService mentoringFieldService;

    @PostMapping
    public void insert(@RequestBody MentoringFieldRequest request) {
        mentoringFieldService.save(request);
    }

    @DeleteMapping("{id}")
    public void deleteData(@PathVariable("id") Long id) {
        mentoringFieldService.deleteData(id);
    }

    @GetMapping
    public List<MentoringFieldResponse> getAll() {
        List<MentoringFieldResponse> all = mentoringFieldService.findAll();
        return all;
    }
}

Service

@Service
@RequiredArgsConstructor
@Transactional
public class MentoringFieldService {
    private final MentoringFieldRepository fieldRepository;
    private final MentorRepository mentorRepository;

    //멘토링 분야 등록
    public void save(MentoringFieldRequest request) {

        MentoringField field = MentoringField.builder()
                .id(request.getMentoringFieldId())
                .fieldName(request.getFieldName())
                .mentors(null)
                .build();
        fieldRepository.save(field);
    }

    //멘토링 분야 삭제
    public void deleteData(Long id) {
        fieldRepository.deleteById(id);
    }

    //멘토링분야 전체 조회
    public List<MentoringFieldResponse> findAll() {
        List<MentoringField> all = fieldRepository.findAll();
        return all.stream().map(m -> new MentoringFieldResponse(m)).toList();
    }

}

Repository

@Repository
public interface MentoringFieldRepository extends JpaRepository<MentoringField, Long> {

}

Request

@Getter
@AllArgsConstructor
@NoArgsConstructor
public class MentoringFieldRequest {
    private Long mentoringFieldId;
    private String fieldName;
    private Long mentorId;

}

Response

@AllArgsConstructor
@NoArgsConstructor
@Getter
public class MentoringFieldResponse {
    private Long id;
    private String fieldName;
    private List<MentorDto> mentors;

    public MentoringFieldResponse(MentoringField mentoringField) {
        this.id = mentoringField.getId();
        this.fieldName = mentoringField.getFieldName();
        this.mentors = mentoringField.getMentors() != null ?
                mentoringField.getMentors()
                        .stream()
                        .map(MentorMentoringField::getMentor)
                        .map(MentorDto::new)
                        .toList()
                :new ArrayList<>();
    }
}

Dto

@Getter
@AllArgsConstructor
@NoArgsConstructor
public class MentoringFieldDto {
    private Long id;
    private String fieldName;

    public MentoringFieldDto(MentoringField mentoringField) {
        this.id = mentoringField.getId();
        this.fieldName = mentoringField.getFieldName();
    }
}

0개의 댓글

관련 채용 정보