diff --git a/src/main/java/es/princip/ringus/application/mentee/service/MenteeService.java b/src/main/java/es/princip/ringus/application/mentee/service/MenteeService.java index 7bbcb54..f964931 100644 --- a/src/main/java/es/princip/ringus/application/mentee/service/MenteeService.java +++ b/src/main/java/es/princip/ringus/application/mentee/service/MenteeService.java @@ -1,12 +1,13 @@ package es.princip.ringus.application.mentee.service; +import es.princip.ringus.domain.exception.MenteeErrorCode; import es.princip.ringus.domain.exception.SignUpErrorCode; import es.princip.ringus.domain.member.Member; import es.princip.ringus.domain.member.MemberRepository; import es.princip.ringus.domain.mentee.Mentee; import es.princip.ringus.domain.mentee.MenteeRepository; -import es.princip.ringus.domain.mentor.MentorRepository; import es.princip.ringus.global.exception.CustomRuntimeException; +import es.princip.ringus.presentation.mentee.dto.EditMenteeRequest; import es.princip.ringus.presentation.mentee.dto.MenteeRequest; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -22,9 +23,18 @@ public class MenteeService { @Transactional public Long register(MenteeRequest request) { + //TODO: 확인 쿼리로 최적화 Member member = memberRepository.findByEmail(request.email()) .orElseThrow(() -> new CustomRuntimeException(SignUpErrorCode.WRONG_EMAIL)); - Mentee mentee = request.toEntity(); + Mentee mentee = request.toEntity(member.getId()); return menteeRepository.save(mentee).getId(); } + + @Transactional + public Long edit(EditMenteeRequest request) { + Mentee mentee = menteeRepository.findById(request.menteeId()) + .orElseThrow(() -> new CustomRuntimeException(MenteeErrorCode.MENTEE_PROFILE_NOT_FOUND)); + mentee.edit(request); + return mentee.getId(); + } } \ No newline at end of file diff --git a/src/main/java/es/princip/ringus/application/mentor/service/MentorService.java b/src/main/java/es/princip/ringus/application/mentor/service/MentorService.java index 0407a3b..280dc9c 100644 --- a/src/main/java/es/princip/ringus/application/mentor/service/MentorService.java +++ b/src/main/java/es/princip/ringus/application/mentor/service/MentorService.java @@ -1,12 +1,13 @@ package es.princip.ringus.application.mentor.service; +import es.princip.ringus.domain.exception.MentorErrorCode; import es.princip.ringus.domain.exception.SignUpErrorCode; import es.princip.ringus.domain.member.Member; import es.princip.ringus.domain.member.MemberRepository; -import es.princip.ringus.domain.mentee.MenteeRepository; import es.princip.ringus.domain.mentor.Mentor; import es.princip.ringus.domain.mentor.MentorRepository; import es.princip.ringus.global.exception.CustomRuntimeException; +import es.princip.ringus.presentation.mentor.dto.EditMentorRequest; import es.princip.ringus.presentation.mentor.dto.MentorRequest; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -23,8 +24,16 @@ public class MentorService { @Transactional public Long register(MentorRequest request) { Member member = memberRepository.findByEmail(request.email()) - .orElseThrow(() -> new CustomRuntimeException(SignUpErrorCode.WRONG_EMAIL)); + .orElseThrow(() -> new CustomRuntimeException(SignUpErrorCode.DUPLICATE_EMAIL)); Mentor mentor = request.toEntity(member.getId()); return mentorRepository.save(mentor).getId(); } + + @Transactional + public Long edit(EditMentorRequest request) { + Mentor mentor = mentorRepository.findById(request.mentorId()) + .orElseThrow(() -> new CustomRuntimeException(MentorErrorCode.MENTOR_PROFILE_NOT_FOUND)); + mentor.edit(request); + return mentor.getId(); + } } \ No newline at end of file diff --git a/src/main/java/es/princip/ringus/domain/exception/MenteeErrorCode.java b/src/main/java/es/princip/ringus/domain/exception/MenteeErrorCode.java new file mode 100644 index 0000000..c49d728 --- /dev/null +++ b/src/main/java/es/princip/ringus/domain/exception/MenteeErrorCode.java @@ -0,0 +1,31 @@ +package es.princip.ringus.domain.exception; + +import es.princip.ringus.global.exception.ErrorCode; +import org.springframework.http.HttpStatus; + +public enum MenteeErrorCode implements ErrorCode { + MENTEE_PROFILE_NOT_FOUND(HttpStatus.NOT_FOUND, "멘티 프로필을 등록한 적이 없음"); + + MenteeErrorCode(HttpStatus status, String message) { + this.status = status; + this.message = message; + } + + private final HttpStatus status; + private final String message; + + @Override + public HttpStatus status() { + return this.status; + } + + @Override + public String message() { + return this.message; + } + + @Override + public String code() { + return this.name(); + } +} \ No newline at end of file diff --git a/src/main/java/es/princip/ringus/domain/exception/MentorErrorCode.java b/src/main/java/es/princip/ringus/domain/exception/MentorErrorCode.java new file mode 100644 index 0000000..ae9dfb4 --- /dev/null +++ b/src/main/java/es/princip/ringus/domain/exception/MentorErrorCode.java @@ -0,0 +1,31 @@ +package es.princip.ringus.domain.exception; + +import es.princip.ringus.global.exception.ErrorCode; +import org.springframework.http.HttpStatus; + +public enum MentorErrorCode implements ErrorCode { + MENTOR_PROFILE_NOT_FOUND(HttpStatus.NOT_FOUND, "멘토 프로필을 등록한 적이 없음"); + + MentorErrorCode(HttpStatus status, String message) { + this.status = status; + this.message = message; + } + + private final HttpStatus status; + private final String message; + + @Override + public HttpStatus status() { + return this.status; + } + + @Override + public String message() { + return this.message; + } + + @Override + public String code() { + return this.name(); + } +} diff --git a/src/main/java/es/princip/ringus/domain/mentee/Mentee.java b/src/main/java/es/princip/ringus/domain/mentee/Mentee.java index 96ba6c7..a6711ef 100644 --- a/src/main/java/es/princip/ringus/domain/mentee/Mentee.java +++ b/src/main/java/es/princip/ringus/domain/mentee/Mentee.java @@ -2,6 +2,7 @@ import es.princip.ringus.domain.common.Education; import es.princip.ringus.infra.storage.domain.ProfileImage; +import es.princip.ringus.presentation.mentee.dto.EditMenteeRequest; import jakarta.persistence.*; import lombok.AccessLevel; import lombok.Builder; @@ -51,4 +52,11 @@ public Mentee( this.profileImage = profileImage; this.memberId = memberId; } + + public void edit(final EditMenteeRequest request) { + this.nickname = request.nickname(); + this.education = request.education().toEntity(); + this.introduction = request.introduction(); + this.profileImage = request.image().toEntity(); + } } \ No newline at end of file diff --git a/src/main/java/es/princip/ringus/domain/mentor/Mentor.java b/src/main/java/es/princip/ringus/domain/mentor/Mentor.java index 1d398f9..d958a64 100644 --- a/src/main/java/es/princip/ringus/domain/mentor/Mentor.java +++ b/src/main/java/es/princip/ringus/domain/mentor/Mentor.java @@ -1,13 +1,9 @@ package es.princip.ringus.domain.mentor; import es.princip.ringus.domain.common.Education; -import es.princip.ringus.domain.mentor.vo.Hashtag; -import es.princip.ringus.domain.mentor.vo.MentoringField; -import es.princip.ringus.domain.mentor.vo.Organization; -import es.princip.ringus.domain.mentor.vo.Portfolio; -import es.princip.ringus.domain.mentor.vo.Timezone; -import es.princip.ringus.infra.storage.domain.Certificate; +import es.princip.ringus.domain.mentor.vo.*; import es.princip.ringus.infra.storage.domain.ProfileImage; +import es.princip.ringus.presentation.mentor.dto.EditMentorRequest; import jakarta.persistence.*; import lombok.AccessLevel; import lombok.Builder; @@ -16,6 +12,7 @@ import java.util.List; import java.util.Set; +import java.util.stream.Collectors; @Getter @Entity @@ -99,10 +96,15 @@ public Mentor( this.memberId = memberId; } - /** - * 프로필 이미지 업데이트 - */ - public void updateProfileImage(ProfileImage profileImage) { - this.profileImage = profileImage; + public void edit(final EditMentorRequest request) { + this.nickname = request.nickname(); + this.education = request.education().toEntity(); + this.organization = request.organization().toEntity(); + this.introduction = request.introduction(); + this.timezone = request.timezone().toEntity(); + this.mentoringField = request.mentoringField().stream().map(MentoringField::valueOf).collect(Collectors.toSet()); + this.hashtags = request.hashtags().stream().map(Hashtag::new).toList(); + this.message = request.message(); + this.portfolio = request.portfolio().toEntity(); } } \ No newline at end of file diff --git a/src/main/java/es/princip/ringus/presentation/auth/AuthControllerDocs.java b/src/main/java/es/princip/ringus/presentation/auth/AuthControllerDocs.java index ce7efc3..56e08ce 100644 --- a/src/main/java/es/princip/ringus/presentation/auth/AuthControllerDocs.java +++ b/src/main/java/es/princip/ringus/presentation/auth/AuthControllerDocs.java @@ -24,7 +24,6 @@ public interface AuthControllerDocs { @Operation(summary = "회원가입", description = "회원가입을 처리합니다.") - @ApiResponses(value = { @ApiResponse(responseCode = "201", description = "회원가입 성공"), @ApiResponse(responseCode = "409", description = "이미 가입된 이메일"), diff --git a/src/main/java/es/princip/ringus/presentation/common/dto/EducationRequest.java b/src/main/java/es/princip/ringus/presentation/common/dto/EducationRequest.java index 2679590..c19ff67 100644 --- a/src/main/java/es/princip/ringus/presentation/common/dto/EducationRequest.java +++ b/src/main/java/es/princip/ringus/presentation/common/dto/EducationRequest.java @@ -1,7 +1,15 @@ package es.princip.ringus.presentation.common.dto; +import es.princip.ringus.domain.common.Education; + public record EducationRequest( String schoolName, String major ) { + public Education toEntity() { + return new Education( + schoolName, + major + ); + } } \ No newline at end of file diff --git a/src/main/java/es/princip/ringus/presentation/common/dto/OrganizationRequest.java b/src/main/java/es/princip/ringus/presentation/common/dto/OrganizationRequest.java index 0401da0..4109d8c 100644 --- a/src/main/java/es/princip/ringus/presentation/common/dto/OrganizationRequest.java +++ b/src/main/java/es/princip/ringus/presentation/common/dto/OrganizationRequest.java @@ -1,8 +1,13 @@ package es.princip.ringus.presentation.common.dto; +import es.princip.ringus.domain.mentor.vo.Organization; + public record OrganizationRequest( String name, String role, int experience ) { + public Organization toEntity() { + return new Organization(name, role, experience); + } } \ No newline at end of file diff --git a/src/main/java/es/princip/ringus/presentation/common/dto/PortfolioRequest.java b/src/main/java/es/princip/ringus/presentation/common/dto/PortfolioRequest.java index dec8bb3..e6b4e4e 100644 --- a/src/main/java/es/princip/ringus/presentation/common/dto/PortfolioRequest.java +++ b/src/main/java/es/princip/ringus/presentation/common/dto/PortfolioRequest.java @@ -1,7 +1,12 @@ package es.princip.ringus.presentation.common.dto; +import es.princip.ringus.domain.mentor.vo.Portfolio; + public record PortfolioRequest( String url, String description ) { + public Portfolio toEntity() { + return new Portfolio(url, description); + } } diff --git a/src/main/java/es/princip/ringus/presentation/mentee/MenteeController.java b/src/main/java/es/princip/ringus/presentation/mentee/MenteeController.java index 2a07d2a..303372f 100644 --- a/src/main/java/es/princip/ringus/presentation/mentee/MenteeController.java +++ b/src/main/java/es/princip/ringus/presentation/mentee/MenteeController.java @@ -2,21 +2,20 @@ import es.princip.ringus.application.mentee.service.MenteeService; import es.princip.ringus.global.util.ApiResponseWrapper; +import es.princip.ringus.presentation.mentee.dto.EditMenteeRequest; +import es.princip.ringus.presentation.mentee.dto.EditMenteeResponse; import es.princip.ringus.presentation.mentee.dto.MenteeRequest; import es.princip.ringus.presentation.mentee.dto.MenteeResponse; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; @RestController @RequiredArgsConstructor @RequestMapping("/mentee") -public class MenteeController { +public class MenteeController implements MenteeControllerDocs{ private final MenteeService menteeService; @PostMapping @@ -24,4 +23,10 @@ public ResponseEntity> create(@Valid @Request MenteeResponse response = MenteeResponse.from(menteeService.register(request)); return ResponseEntity.ok(ApiResponseWrapper.success(HttpStatus.OK, "성공", response)); } + + @PutMapping + public ResponseEntity> update(@Valid @RequestBody EditMenteeRequest request) { + EditMenteeResponse response = EditMenteeResponse.from(menteeService.edit(request)); + return ResponseEntity.ok(ApiResponseWrapper.success(HttpStatus.OK, "성공", response)); + } } diff --git a/src/main/java/es/princip/ringus/presentation/mentee/MenteeControllerDocs.java b/src/main/java/es/princip/ringus/presentation/mentee/MenteeControllerDocs.java new file mode 100644 index 0000000..5397692 --- /dev/null +++ b/src/main/java/es/princip/ringus/presentation/mentee/MenteeControllerDocs.java @@ -0,0 +1,40 @@ +package es.princip.ringus.presentation.mentee; + + +import es.princip.ringus.global.util.ApiResponseWrapper; +import es.princip.ringus.presentation.mentee.dto.EditMenteeRequest; +import es.princip.ringus.presentation.mentee.dto.EditMenteeResponse; +import es.princip.ringus.presentation.mentee.dto.MenteeRequest; +import es.princip.ringus.presentation.mentee.dto.MenteeResponse; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.responses.ApiResponse; +import io.swagger.v3.oas.annotations.responses.ApiResponses; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.validation.Valid; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +@Tag(name = "Mentee API", description = "멘티 관련 API") +@RequestMapping("/mentee") +public interface MenteeControllerDocs { + + @Operation(summary = "멘티 등록", description = "새로운 멘티를 등록합니다.") + @ApiResponses(value = { + @ApiResponse(responseCode = "200", description = "멘티 등록 성공"), + @ApiResponse(responseCode = "409", description = "이미 가입된 이메일") + }) + @PostMapping + ResponseEntity> create(@Valid @RequestBody @Parameter(description = "멘티 등록 요청") MenteeRequest request); + + @Operation(summary = "멘티 수정", description = "기존 멘티 정보를 수정합니다.") + @ApiResponses(value = { + @ApiResponse(responseCode = "200", description = "멘티 수정 성공"), + @ApiResponse(responseCode = "404", description = "멘티 프로필을 등록한 적이 없음") + }) + @PutMapping + ResponseEntity> update(@Valid @RequestBody @Parameter(description = "멘티 수정 요청") EditMenteeRequest request); +} diff --git a/src/main/java/es/princip/ringus/presentation/mentee/dto/EditMenteeRequest.java b/src/main/java/es/princip/ringus/presentation/mentee/dto/EditMenteeRequest.java new file mode 100644 index 0000000..f3a7217 --- /dev/null +++ b/src/main/java/es/princip/ringus/presentation/mentee/dto/EditMenteeRequest.java @@ -0,0 +1,14 @@ +package es.princip.ringus.presentation.mentee.dto; + +import es.princip.ringus.presentation.common.dto.EducationRequest; +import es.princip.ringus.presentation.common.dto.ProfileImageRequest; +import jakarta.validation.constraints.NotBlank; + +public record EditMenteeRequest( + @NotBlank Long menteeId, + @NotBlank String nickname, + EducationRequest education, + ProfileImageRequest image, + @NotBlank String introduction +) { +} \ No newline at end of file diff --git a/src/main/java/es/princip/ringus/presentation/mentee/dto/EditMenteeResponse.java b/src/main/java/es/princip/ringus/presentation/mentee/dto/EditMenteeResponse.java new file mode 100644 index 0000000..d239049 --- /dev/null +++ b/src/main/java/es/princip/ringus/presentation/mentee/dto/EditMenteeResponse.java @@ -0,0 +1,9 @@ +package es.princip.ringus.presentation.mentee.dto; + +public record EditMenteeResponse( + Long menteeId +) { + public static EditMenteeResponse from(final Long menteeId) { + return new EditMenteeResponse(menteeId); + } +} diff --git a/src/main/java/es/princip/ringus/presentation/mentee/dto/MenteeRequest.java b/src/main/java/es/princip/ringus/presentation/mentee/dto/MenteeRequest.java index f16a99c..c80d792 100644 --- a/src/main/java/es/princip/ringus/presentation/mentee/dto/MenteeRequest.java +++ b/src/main/java/es/princip/ringus/presentation/mentee/dto/MenteeRequest.java @@ -1,7 +1,6 @@ package es.princip.ringus.presentation.mentee.dto; import es.princip.ringus.domain.mentee.Mentee; -import es.princip.ringus.domain.common.Education; import es.princip.ringus.presentation.common.dto.EducationRequest; import es.princip.ringus.presentation.common.dto.ProfileImageRequest; import jakarta.validation.constraints.NotBlank; @@ -13,12 +12,13 @@ public record MenteeRequest( ProfileImageRequest image, @NotBlank String introduction ) { - public Mentee toEntity() { - return Mentee.builder() - .nickname(nickname) - .education(new Education(education.schoolName(), education().major())) - .profileImage(image.toEntity()) - .introduction(introduction) - .build(); - } + public Mentee toEntity(Long memberId) { + return Mentee.builder() + .nickname(nickname) + .education(education.toEntity()) + .profileImage(image.toEntity()) + .introduction(introduction) + .memberId(memberId) + .build(); + } } diff --git a/src/main/java/es/princip/ringus/presentation/mentee/dto/MenteeResponse.java b/src/main/java/es/princip/ringus/presentation/mentee/dto/MenteeResponse.java index 29b6d52..07ae6ba 100644 --- a/src/main/java/es/princip/ringus/presentation/mentee/dto/MenteeResponse.java +++ b/src/main/java/es/princip/ringus/presentation/mentee/dto/MenteeResponse.java @@ -3,7 +3,7 @@ public record MenteeResponse( Long menteeId ) { - public static MenteeResponse from(Long menteeId) { + public static MenteeResponse from(final Long menteeId) { return new MenteeResponse(menteeId); } } diff --git a/src/main/java/es/princip/ringus/presentation/mentor/MentorController.java b/src/main/java/es/princip/ringus/presentation/mentor/MentorController.java index 1f19642..533452b 100644 --- a/src/main/java/es/princip/ringus/presentation/mentor/MentorController.java +++ b/src/main/java/es/princip/ringus/presentation/mentor/MentorController.java @@ -2,21 +2,20 @@ import es.princip.ringus.application.mentor.service.MentorService; import es.princip.ringus.global.util.ApiResponseWrapper; +import es.princip.ringus.presentation.mentor.dto.EditMentorRequest; +import es.princip.ringus.presentation.mentor.dto.EditMentorResponse; import es.princip.ringus.presentation.mentor.dto.MentorRequest; import es.princip.ringus.presentation.mentor.dto.MentorResponse; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; @RestController @RequiredArgsConstructor @RequestMapping("/mentor") -public class MentorController { +public class MentorController implements MentorControllerDocs{ private final MentorService mentorService; @@ -25,4 +24,10 @@ public ResponseEntity> create(@Valid @Request MentorResponse response = MentorResponse.from(mentorService.register(request)); return ResponseEntity.ok(ApiResponseWrapper.success(HttpStatus.OK, "성공", response)); } + + @PutMapping + public ResponseEntity> update(@Valid @RequestBody EditMentorRequest request) { + EditMentorResponse response = EditMentorResponse.from(mentorService.edit(request)); + return ResponseEntity.ok(ApiResponseWrapper.success(HttpStatus.OK, "성공", response)); + } } \ No newline at end of file diff --git a/src/main/java/es/princip/ringus/presentation/mentor/MentorControllerDocs.java b/src/main/java/es/princip/ringus/presentation/mentor/MentorControllerDocs.java new file mode 100644 index 0000000..4823876 --- /dev/null +++ b/src/main/java/es/princip/ringus/presentation/mentor/MentorControllerDocs.java @@ -0,0 +1,36 @@ +package es.princip.ringus.presentation.mentor; + +import es.princip.ringus.global.util.ApiResponseWrapper; +import es.princip.ringus.presentation.mentor.dto.EditMentorRequest; +import es.princip.ringus.presentation.mentor.dto.EditMentorResponse; +import es.princip.ringus.presentation.mentor.dto.MentorRequest; +import es.princip.ringus.presentation.mentor.dto.MentorResponse; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.responses.ApiResponse; +import io.swagger.v3.oas.annotations.responses.ApiResponses; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.validation.Valid; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +@Tag(name = "Mentor API", description = "멘토 관련 API") +@RequestMapping("/mentor") +public interface MentorControllerDocs { + + @Operation(summary = "멘토 등록", description = "새로운 멘토를 등록합니다.") + @ApiResponses(value = { + @ApiResponse(responseCode = "200", description = "멘토 등록 성공"), + @ApiResponse(responseCode = "409", description = "이미 가입된 이메일") + }) + @PostMapping + ResponseEntity> create(@Valid @RequestBody @Parameter(description = "멘토 등록 요청") MentorRequest request); + + @Operation(summary = "멘토 수정", description = "기존 멘토 정보를 수정합니다.") + @ApiResponses(value = { + @ApiResponse(responseCode = "200", description = "멘토 수정 성공"), + @ApiResponse(responseCode = "404", description = "멘토 프로필을 등록한 적이 없음") + }) + @PutMapping + ResponseEntity> update(@Valid @RequestBody @Parameter(description = "멘토 수정 요청") EditMentorRequest request); +} \ No newline at end of file diff --git a/src/main/java/es/princip/ringus/presentation/mentor/dto/EditMentorRequest.java b/src/main/java/es/princip/ringus/presentation/mentor/dto/EditMentorRequest.java new file mode 100644 index 0000000..5e20c13 --- /dev/null +++ b/src/main/java/es/princip/ringus/presentation/mentor/dto/EditMentorRequest.java @@ -0,0 +1,24 @@ +package es.princip.ringus.presentation.mentor.dto; + +import es.princip.ringus.presentation.common.dto.EducationRequest; +import es.princip.ringus.presentation.common.dto.OrganizationRequest; +import es.princip.ringus.presentation.common.dto.PortfolioRequest; +import jakarta.validation.constraints.NotBlank; + +import java.util.List; +import java.util.Set; + +public record EditMentorRequest( + @NotBlank Long mentorId, + @NotBlank String email, + @NotBlank String nickname, + @NotBlank String introduction, + Set mentoringField, + EducationRequest education, + OrganizationRequest organization, + TimezoneRequest timezone, + List hashtags, + String message, + PortfolioRequest portfolio +) { +} \ No newline at end of file diff --git a/src/main/java/es/princip/ringus/presentation/mentor/dto/EditMentorResponse.java b/src/main/java/es/princip/ringus/presentation/mentor/dto/EditMentorResponse.java new file mode 100644 index 0000000..10ea063 --- /dev/null +++ b/src/main/java/es/princip/ringus/presentation/mentor/dto/EditMentorResponse.java @@ -0,0 +1,9 @@ +package es.princip.ringus.presentation.mentor.dto; + +public record EditMentorResponse( + Long mentorId +) { + public static EditMentorResponse from(final Long mentorId) { + return new EditMentorResponse(mentorId); + } +} \ No newline at end of file diff --git a/src/main/java/es/princip/ringus/presentation/mentor/dto/MentorRequest.java b/src/main/java/es/princip/ringus/presentation/mentor/dto/MentorRequest.java index 31f2e95..afc4a42 100644 --- a/src/main/java/es/princip/ringus/presentation/mentor/dto/MentorRequest.java +++ b/src/main/java/es/princip/ringus/presentation/mentor/dto/MentorRequest.java @@ -28,13 +28,13 @@ public Mentor toEntity(Long memberId) { return Mentor.builder() .nickname(nickname) .education(new Education(education().schoolName(), education().major())) - .organization(new Organization(organization().name(), organization().role(), organization().experience())) + .organization(organization.toEntity()) .introduction(introduction) - .timezone(new Timezone(timezone().startTime(), timezone().endTime())) + .timezone(timezone.toEntity()) .mentoringField(mentoringField.stream().map(MentoringField::valueOf).collect(Collectors.toSet())) .hashtags(hashtags.stream().map(Hashtag::new).toList()) .message(message) - .portfolio(new Portfolio(portfolio.url(), portfolio.description())) + .portfolio(portfolio.toEntity()) .memberId(memberId) .build(); } diff --git a/src/main/java/es/princip/ringus/presentation/mentor/dto/TimezoneRequest.java b/src/main/java/es/princip/ringus/presentation/mentor/dto/TimezoneRequest.java index 8c115d0..c224e1d 100644 --- a/src/main/java/es/princip/ringus/presentation/mentor/dto/TimezoneRequest.java +++ b/src/main/java/es/princip/ringus/presentation/mentor/dto/TimezoneRequest.java @@ -1,9 +1,14 @@ package es.princip.ringus.presentation.mentor.dto; +import es.princip.ringus.domain.mentor.vo.Timezone; + import java.time.LocalTime; public record TimezoneRequest ( LocalTime startTime, LocalTime endTime ) { + public Timezone toEntity() { + return new Timezone(startTime, endTime); + } } \ No newline at end of file