Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,9 @@ public class DeleteGroomingTestAnswerController {

@DeleteMapping("/api/grooming/tests/answers/{answerId}")
public ResponseEntity<ApiResponse<Void>> deleteAnswer(@PathVariable Long answerId) {
deleteGroomingTestAnswerUseCase.execute(DeleteGroomingTestAnswerCommand.of(answerId));
DeleteGroomingTestAnswerCommand command = DeleteGroomingTestAnswerCommand.of(answerId);
deleteGroomingTestAnswerUseCase.execute(command);

return ResponseEntity.status(HttpStatus.OK)
.body(ApiResponse.success(SuccessResponseCode.OK));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,13 @@ public class SaveGroomingTestAnswerController {
public ResponseEntity<ApiResponse<Void>> saveAnswer(
@PathVariable Long questionsId,
@RequestBody @Valid SaveGroomingTestAnswerRequest request) {
SaveGroomingTestAnswerCommand command =
SaveGroomingTestAnswerCommand.of(
questionsId, request.getAnswer(), request.getScore());
saveGroomingTestAnswerUseCase.execute(
SaveGroomingTestAnswerCommand.of(
questionsId, request.getAnswer(), request.getScore()));

return ResponseEntity.status(HttpStatus.CREATED)
.body(ApiResponse.success(SuccessResponseCode.CREATED));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,11 @@ public class UpdateGroomingTestAnswerController {
@PatchMapping("/api/grooming/tests/answers/{answerId}")
public ResponseEntity<ApiResponse<Void>> updateAnswer(
@PathVariable Long answerId, @RequestBody UpdateGroomingTestAnswerRequest request) {
updateGroomingTestAnswerUseCase.execute(
UpdateGroomingTestAnswerCommand command =
UpdateGroomingTestAnswerCommand.of(
answerId,
request.getQuestionId(),
request.getAnswer(),
request.getScore()));
answerId, request.getQuestionId(), request.getAnswer(), request.getScore());
updateGroomingTestAnswerUseCase.execute(command);

return ResponseEntity.status(HttpStatus.OK)
.body(ApiResponse.success(SuccessResponseCode.OK));
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package com.ftm.server.adapter.in.web.grooming.controller.level;

import com.ftm.server.application.command.grooming.level.DeleteGroomingLevelCommand;
import com.ftm.server.application.port.in.grooming.level.DeleteGroomingLevelUseCase;
import com.ftm.server.common.response.ApiResponse;
import com.ftm.server.common.response.enums.SuccessResponseCode;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequiredArgsConstructor
public class DeleteGroomingLevelController {

private final DeleteGroomingLevelUseCase deleteGroomingLevelUseCase;

@DeleteMapping("/api/grooming/levels/{levelId}")
public ResponseEntity<ApiResponse<Void>> deleteGroomingLevel(@PathVariable Long levelId) {
DeleteGroomingLevelCommand command = DeleteGroomingLevelCommand.of(levelId);
deleteGroomingLevelUseCase.execute(command);

return ResponseEntity.status(HttpStatus.OK)
.body(ApiResponse.success(SuccessResponseCode.OK));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package com.ftm.server.adapter.in.web.grooming.controller.level;

import com.ftm.server.adapter.in.web.grooming.dto.request.SaveGroomingLevelRequest;
import com.ftm.server.application.command.grooming.level.SaveGroomingLevelCommand;
import com.ftm.server.application.port.in.grooming.level.SaveGroomingLevelUseCase;
import com.ftm.server.common.response.ApiResponse;
import com.ftm.server.common.response.enums.SuccessResponseCode;
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.RestController;

@RestController
@RequiredArgsConstructor
public class SaveGroomingLevelController {

private final SaveGroomingLevelUseCase saveGroomingLevelUseCase;

@PostMapping("/api/grooming/levels")
public ResponseEntity<ApiResponse<Void>> saveGroomingLevel(
@RequestBody @Valid SaveGroomingLevelRequest request) {
SaveGroomingLevelCommand command =
SaveGroomingLevelCommand.of(
request.getMinScore(),
request.getMaxScore(),
request.getMildLevelName(),
request.getSpicyLevelName());
saveGroomingLevelUseCase.execute(command);

return ResponseEntity.status(HttpStatus.CREATED)
.body(ApiResponse.success(SuccessResponseCode.CREATED));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package com.ftm.server.adapter.in.web.grooming.controller.level;

import com.ftm.server.adapter.in.web.grooming.dto.request.UpdateGroomingLevelRequest;
import com.ftm.server.application.command.grooming.level.UpdateGroomingLevelCommand;
import com.ftm.server.application.port.in.grooming.level.UpdateGroomingLevelUseCase;
import com.ftm.server.common.response.ApiResponse;
import com.ftm.server.common.response.enums.SuccessResponseCode;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PatchMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequiredArgsConstructor
public class UpdateGroomingLevelController {

private final UpdateGroomingLevelUseCase updateGroomingLevelUseCase;

@PatchMapping("/api/grooming/levels/{levelId}")
public ResponseEntity<ApiResponse<Void>> saveGroomingLevel(
@PathVariable Long levelId, @RequestBody @Valid UpdateGroomingLevelRequest request) {

UpdateGroomingLevelCommand command =
UpdateGroomingLevelCommand.of(
levelId,
request.getMinScore(),
request.getMaxScore(),
request.getMildLevelName(),
request.getSpicyLevelName());
updateGroomingLevelUseCase.execute(command);

return ResponseEntity.status(HttpStatus.OK)
.body(ApiResponse.success(SuccessResponseCode.OK));
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.ftm.server.adapter.in.web.grooming.controller.question;

import com.ftm.server.application.command.grooming.DeleteGroomingTestQuestionCommand;
import com.ftm.server.application.command.grooming.question.DeleteGroomingTestQuestionCommand;
import com.ftm.server.application.port.in.grooming.question.DeleteGroomingTestQuestionUseCase;
import com.ftm.server.common.response.ApiResponse;
import com.ftm.server.common.response.enums.SuccessResponseCode;
Expand All @@ -19,7 +19,10 @@ public class DeleteGroomingTestQuestionController {

@DeleteMapping("/api/grooming/tests/questions/{questionId}")
public ResponseEntity<ApiResponse<Void>> deleteQuestion(@PathVariable Long questionId) {
DeleteGroomingTestQuestionCommand command =
DeleteGroomingTestQuestionCommand.of(questionId);
deleteGroomingTestQuestionUseCase.execute(DeleteGroomingTestQuestionCommand.of(questionId));

return ResponseEntity.status(HttpStatus.OK)
.body(ApiResponse.success(SuccessResponseCode.OK));
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.ftm.server.adapter.in.web.grooming.controller.question;

import com.ftm.server.adapter.in.web.grooming.dto.request.SaveGroomingTestQuestionRequest;
import com.ftm.server.application.command.grooming.SaveGroomingTestQuestionCommand;
import com.ftm.server.application.command.grooming.question.SaveGroomingTestQuestionCommand;
import com.ftm.server.application.port.in.grooming.question.SaveGroomingTestQuestionUseCase;
import com.ftm.server.common.response.ApiResponse;
import com.ftm.server.common.response.enums.SuccessResponseCode;
Expand All @@ -22,9 +22,11 @@ public class SaveGroomingTestQuestionController {
@PostMapping("/api/grooming/tests/questions")
public ResponseEntity<ApiResponse<Void>> saveQuestion(
@RequestBody @Valid SaveGroomingTestQuestionRequest request) {
saveGroomingTestQuestionUseCase.execute(
SaveGroomingTestQuestionCommand command =
SaveGroomingTestQuestionCommand.of(
request.getGroomingCategory(), request.getQuestion()));
request.getGroomingCategory(), request.getQuestion());
saveGroomingTestQuestionUseCase.execute(command);

return ResponseEntity.status(HttpStatus.CREATED)
.body(ApiResponse.success(SuccessResponseCode.CREATED));
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.ftm.server.adapter.in.web.grooming.controller.question;

import com.ftm.server.adapter.in.web.grooming.dto.request.UpdateGroomingTestQuestionRequest;
import com.ftm.server.application.command.grooming.UpdateGroomingTestQuestionCommand;
import com.ftm.server.application.command.grooming.question.UpdateGroomingTestQuestionCommand;
import com.ftm.server.application.port.in.grooming.question.UpdateGroomingTestQuestionUseCase;
import com.ftm.server.common.response.ApiResponse;
import com.ftm.server.common.response.enums.SuccessResponseCode;
Expand All @@ -22,9 +22,11 @@ public class UpdateGroomingTestQuestionController {
@PatchMapping("/api/grooming/tests/questions/{questionId}")
public ResponseEntity<ApiResponse<Void>> updateQuestion(
@PathVariable Long questionId, @RequestBody UpdateGroomingTestQuestionRequest request) {
updateGroomingTestQuestionUseCase.execute(
UpdateGroomingTestQuestionCommand command =
UpdateGroomingTestQuestionCommand.of(
questionId, request.getGroomingCategory(), request.getQuestion()));
questionId, request.getGroomingCategory(), request.getQuestion());
updateGroomingTestQuestionUseCase.execute(command);

return ResponseEntity.status(HttpStatus.OK)
.body(ApiResponse.success(SuccessResponseCode.OK));
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package com.ftm.server.adapter.in.web.grooming.dto.request;

import jakarta.validation.constraints.Max;
import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.NotEmpty;
import lombok.AllArgsConstructor;
import lombok.Getter;

@Getter
@AllArgsConstructor
public class SaveGroomingLevelRequest {

@Min(0)
@Max(100)
private Integer minScore;

@Min(0)
@Max(100)
private Integer maxScore;

@NotEmpty private String mildLevelName;
@NotEmpty private String spicyLevelName;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package com.ftm.server.adapter.in.web.grooming.dto.request;

import jakarta.validation.constraints.Max;
import jakarta.validation.constraints.Min;
import lombok.AllArgsConstructor;
import lombok.Getter;

@Getter
@AllArgsConstructor
public class UpdateGroomingLevelRequest {

@Min(0)
@Max(100)
private Integer minScore;

@Min(0)
@Max(100)
private Integer maxScore;

private String mildLevelName;
private String spicyLevelName;
}
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,10 @@ public class GroomingDomainPersistenceAdapter
DeleteGroomingTestQuestionPort,
DeleteGroomingTestAnswerPort,
SaveGroomingTestAnswerPort,
UpdateGroomingTestAnswerPort {
UpdateGroomingTestAnswerPort,
SaveGroomingLevelPort,
UpdateGroomingLevelPort,
DeleteGroomingLevelPort {

// Repository
private final GroomingTestQuestionRepository groomingTestQuestionRepository;
Expand Down Expand Up @@ -116,6 +119,13 @@ public Optional<GroomingLevel> loadGroomingLevelByScore(FIndGroomingLevelByScore
.map(groomingLevelMapper::toDomainEntity);
}

@Override
public Optional<GroomingLevel> loadGroomingLevelById(FindByIdQuery query) {
return groomingLevelRepository
.findById(query.getId())
.map(groomingLevelMapper::toDomainEntity);
}

@Override
public void updateUserGroomingStatus(User user) {
UserJpaEntity userJpaEntity =
Expand Down Expand Up @@ -239,4 +249,27 @@ public void updateGroomingTestAnswer(
// 질문 정보를 제외한 나머지 필드 수정
groomingTestAnswerJpaEntity.updateGroomingTestAnswerForDomainEntity(groomingTestAnswer);
}

@Override
public void saveGroomingLevel(GroomingLevel groomingLevel) {
groomingLevelRepository.save(groomingLevelMapper.toJpaEntity(groomingLevel));
}

@Override
public void updateGroomingLevel(GroomingLevel groomingLevel) {
GroomingLevelJpaEntity groomingLevelJpaEntity =
groomingLevelRepository
.findById(groomingLevel.getId())
.orElseThrow(
() ->
new CustomException(
ErrorResponseCode.GROOMING_LEVEL_NOT_FOUND));

groomingLevelJpaEntity.updateGroomingLevelForDomainEntity(groomingLevel);
}

@Override
public void deleteGroomingLevel(Long id) {
groomingLevelRepository.deleteById(id);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -36,4 +36,11 @@ public static GroomingLevelJpaEntity from(GroomingLevel groomingLevel) {
.spicyLevelName(groomingLevel.getSpicyLevelName())
.build();
}

public void updateGroomingLevelForDomainEntity(GroomingLevel groomingLevel) {
this.minScore = groomingLevel.getMinScore();
this.maxScore = groomingLevel.getMaxScore();
this.mildLevelName = groomingLevel.getMildLevelName();
this.spicyLevelName = groomingLevel.getSpicyLevelName();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package com.ftm.server.application.command.grooming.level;

import lombok.Getter;

@Getter
public class DeleteGroomingLevelCommand {

private final Long id;

private DeleteGroomingLevelCommand(Long id) {
this.id = id;
}

public static DeleteGroomingLevelCommand of(Long id) {
return new DeleteGroomingLevelCommand(id);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package com.ftm.server.application.command.grooming.level;

import lombok.Getter;

@Getter
public class SaveGroomingLevelCommand {

private final Integer minScore;
private final Integer maxScore;
private final String mildLevelName;
private final String spicyLevelName;

private SaveGroomingLevelCommand(
Integer minScore, Integer maxScore, String mildLevelName, String spicyLevelName) {
this.minScore = minScore;
this.maxScore = maxScore;
this.mildLevelName = mildLevelName;
this.spicyLevelName = spicyLevelName;
}

public static SaveGroomingLevelCommand of(
Integer minScore, Integer maxScore, String mildLevelName, String spicyLevelName) {
return new SaveGroomingLevelCommand(minScore, maxScore, mildLevelName, spicyLevelName);
}
}
Loading
Loading