-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Browse the repository at this point in the history
[FEAT] 레큐노트 생성 API 구현
- Loading branch information
Showing
12 changed files
with
124 additions
and
25 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
31 changes: 31 additions & 0 deletions
31
src/main/java/org/sopt/lequuServer/domain/note/controller/NoteController.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
package org.sopt.lequuServer.domain.note.controller; | ||
|
||
import io.swagger.v3.oas.annotations.Operation; | ||
import io.swagger.v3.oas.annotations.security.SecurityRequirement; | ||
import io.swagger.v3.oas.annotations.tags.Tag; | ||
import java.security.Principal; | ||
import lombok.RequiredArgsConstructor; | ||
import org.sopt.lequuServer.domain.note.dto.request.NoteCreateDto; | ||
import org.sopt.lequuServer.domain.note.facade.NoteFacade; | ||
import org.sopt.lequuServer.global.auth.jwt.JwtProvider; | ||
import org.sopt.lequuServer.global.common.dto.ApiResponse; | ||
import org.sopt.lequuServer.global.exception.enums.SuccessType; | ||
import org.springframework.web.bind.annotation.PostMapping; | ||
import org.springframework.web.bind.annotation.RequestMapping; | ||
import org.springframework.web.bind.annotation.RestController; | ||
|
||
@RestController | ||
@RequiredArgsConstructor | ||
@RequestMapping("/api/note") | ||
@Tag(name = "Note", description = "레큐 노트 API") | ||
@SecurityRequirement(name = "JWT Auth") | ||
public class NoteController { | ||
|
||
private final NoteFacade noteFacade; | ||
|
||
@Operation(summary = "레큐 노트 생성") | ||
@PostMapping | ||
public ApiResponse<?> createNote(Principal principal, NoteCreateDto noteCreateDto) { | ||
return ApiResponse.success(SuccessType.CREATE_NOTE_SUCCESS, noteFacade.createNote(JwtProvider.getUserFromPrincial(principal), noteCreateDto)); | ||
} | ||
} |
23 changes: 23 additions & 0 deletions
23
src/main/java/org/sopt/lequuServer/domain/note/dto/request/NoteCreateDto.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
package org.sopt.lequuServer.domain.note.dto.request; | ||
|
||
import io.swagger.v3.oas.annotations.media.Schema; | ||
import jakarta.validation.constraints.NotBlank; | ||
import jakarta.validation.constraints.Size; | ||
|
||
public record NoteCreateDto( | ||
@Schema(example = "1") | ||
Long bookId, | ||
//TODO DB상에서 관리하려면 그냥 Auditing으로 하는게 좋을지도? | ||
@Schema(example = "2023.12.27 (수)") | ||
String noteDate, | ||
//TODO validation 추가 | ||
@Schema(example = "test") | ||
@NotBlank | ||
@Size(min = 1, max = 1000, message = "레큐노트 내용은 1자 이상 1000자 이하여야합니다.") | ||
String content, | ||
@Schema(example = "0") | ||
int textColor, | ||
@Schema(example = "0") | ||
String background | ||
) { | ||
} |
12 changes: 12 additions & 0 deletions
12
src/main/java/org/sopt/lequuServer/domain/note/dto/response/NoteResponseDto.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
package org.sopt.lequuServer.domain.note.dto.response; | ||
|
||
import org.sopt.lequuServer.domain.note.model.Note; | ||
|
||
public record NoteResponseDto( | ||
Long noteId, | ||
String bookUuid | ||
) { | ||
public static NoteResponseDto of(Note note) { | ||
return new NoteResponseDto(note.getId(), note.getBook().getUuid()); | ||
} | ||
} |
28 changes: 28 additions & 0 deletions
28
src/main/java/org/sopt/lequuServer/domain/note/facade/NoteFacade.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
package org.sopt.lequuServer.domain.note.facade; | ||
|
||
import lombok.RequiredArgsConstructor; | ||
import org.sopt.lequuServer.domain.book.model.Book; | ||
import org.sopt.lequuServer.domain.book.repository.BookRepository; | ||
import org.sopt.lequuServer.domain.member.model.Member; | ||
import org.sopt.lequuServer.domain.member.repository.MemberRepository; | ||
import org.sopt.lequuServer.domain.note.dto.request.NoteCreateDto; | ||
import org.sopt.lequuServer.domain.note.dto.response.NoteResponseDto; | ||
import org.sopt.lequuServer.domain.note.model.Note; | ||
import org.sopt.lequuServer.domain.note.service.NoteService; | ||
import org.springframework.stereotype.Service; | ||
|
||
@Service | ||
@RequiredArgsConstructor | ||
public class NoteFacade { | ||
|
||
private final MemberRepository memberRepository; | ||
private final BookRepository bookRepository; | ||
private final NoteService noteService; | ||
|
||
public NoteResponseDto createNote(Long userId, NoteCreateDto noteCreateDto) { | ||
Member member = memberRepository.findByIdOrThrow(userId); | ||
Book book = bookRepository.findByIdOrThrow(noteCreateDto.bookId()); | ||
|
||
return noteService.saveNote(Note.of(noteCreateDto.content(), noteCreateDto.background(), noteCreateDto.textColor(), member, book)); | ||
} | ||
} |
11 changes: 6 additions & 5 deletions
11
src/main/java/org/sopt/lequuServer/domain/note/service/NoteService.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,19 +1,20 @@ | ||
package org.sopt.lequuServer.domain.note.service; | ||
|
||
import lombok.RequiredArgsConstructor; | ||
import org.sopt.lequuServer.domain.note.dto.response.NoteResponseDto; | ||
import org.sopt.lequuServer.domain.note.model.Note; | ||
import org.sopt.lequuServer.domain.note.repository.NoteRepository; | ||
import org.springframework.stereotype.Service; | ||
import org.springframework.transaction.annotation.Transactional; | ||
|
||
@Service | ||
@RequiredArgsConstructor | ||
public class NoteService { | ||
|
||
private final NoteRepository noteRepository; | ||
|
||
//TODO 되는지 검증 필요 | ||
public Long getAllNoteCount() { | ||
return noteRepository.count(); | ||
@Transactional | ||
public NoteResponseDto saveNote(Note note) { | ||
return NoteResponseDto.of(noteRepository.save(note)); | ||
} | ||
|
||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters