diff --git a/src/main/java/site/sonisori/sonisori/controller/SignWordController.java b/src/main/java/site/sonisori/sonisori/controller/SignWordController.java index 209aa7a..5d40f0a 100644 --- a/src/main/java/site/sonisori/sonisori/controller/SignWordController.java +++ b/src/main/java/site/sonisori/sonisori/controller/SignWordController.java @@ -2,12 +2,18 @@ import java.util.List; +import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; +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 jakarta.validation.Valid; import lombok.RequiredArgsConstructor; +import site.sonisori.sonisori.common.response.SuccessResponse; +import site.sonisori.sonisori.dto.signword.SignWordRequest; import site.sonisori.sonisori.dto.signword.SignWordResponse; import site.sonisori.sonisori.service.SignWordService; @@ -22,4 +28,10 @@ public ResponseEntity> getAllSignWords() { List signWords = signWordService.getAllSignWords(); return ResponseEntity.ok(signWords); } + + @PostMapping("/admin/words") + public ResponseEntity addSignWordByAdmin(@RequestBody @Valid SignWordRequest signWordRequest) { + SuccessResponse successResponse = signWordService.addSignWord(signWordRequest); + return ResponseEntity.status(HttpStatus.CREATED).body(successResponse); + } } diff --git a/src/main/java/site/sonisori/sonisori/dto/signword/SignWordRequest.java b/src/main/java/site/sonisori/sonisori/dto/signword/SignWordRequest.java new file mode 100644 index 0000000..a517365 --- /dev/null +++ b/src/main/java/site/sonisori/sonisori/dto/signword/SignWordRequest.java @@ -0,0 +1,15 @@ +package site.sonisori.sonisori.dto.signword; + +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Size; +import site.sonisori.sonisori.common.constants.ErrorMessage; + +public record SignWordRequest( + @NotBlank(message = ErrorMessage.INVALID_VALUE) + @Size(max = 50, message = ErrorMessage.INVALID_VALUE) + String word, + + @Size(max = 500, message = ErrorMessage.INVALID_VALUE) + String description +) { +} diff --git a/src/main/java/site/sonisori/sonisori/service/SignWordService.java b/src/main/java/site/sonisori/sonisori/service/SignWordService.java index c5410ee..0699693 100644 --- a/src/main/java/site/sonisori/sonisori/service/SignWordService.java +++ b/src/main/java/site/sonisori/sonisori/service/SignWordService.java @@ -4,8 +4,11 @@ import java.util.stream.Collectors; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import lombok.RequiredArgsConstructor; +import site.sonisori.sonisori.common.response.SuccessResponse; +import site.sonisori.sonisori.dto.signword.SignWordRequest; import site.sonisori.sonisori.dto.signword.SignWordResponse; import site.sonisori.sonisori.entity.SignWord; import site.sonisori.sonisori.repository.SignWordRepository; @@ -21,4 +24,15 @@ public List getAllSignWords() { .map(SignWord::toDto) .collect(Collectors.toList()); } + + @Transactional + public SuccessResponse addSignWord(SignWordRequest signWordRequest) { + SignWord signWord = SignWord.builder() + .word(signWordRequest.word()) + .description(signWordRequest.description()) + .build(); + + Long id = signWordRepository.save(signWord).getId(); + return new SuccessResponse(id); + } }