-
Notifications
You must be signed in to change notification settings - Fork 30
서현하 sprint4 #76
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
The head ref may contain hidden characters: "\uC11C\uD604\uD558_sprint4"
서현하 sprint4 #76
Changes from all commits
cc703df
186df0b
41f3419
69c5d92
21a54fa
1cff2be
5efca2e
1b145ea
439de6a
0fc7de7
bbe8f82
58e14a6
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,86 +1,88 @@ | ||
| package com.sprint.mission.discodeit; | ||
|
|
||
| import com.sprint.mission.discodeit.dto.ChannelCreateRequest; | ||
| import com.sprint.mission.discodeit.dto.MessageCreateRequest; | ||
| import com.sprint.mission.discodeit.dto.ReadStatusCreateRequest; | ||
| import com.sprint.mission.discodeit.dto.UserCreateRequest; | ||
| import com.sprint.mission.discodeit.entity.Channel; | ||
| import com.sprint.mission.discodeit.entity.ChannelType; | ||
| import com.sprint.mission.discodeit.entity.Message; | ||
| import com.sprint.mission.discodeit.entity.User; | ||
| import com.sprint.mission.discodeit.repository.*; | ||
| import com.sprint.mission.discodeit.repository.file.FileBinaryContentRepository; | ||
| import com.sprint.mission.discodeit.repository.file.FileChannelRepository; | ||
| import com.sprint.mission.discodeit.repository.file.FileMessageRepository; | ||
| import com.sprint.mission.discodeit.repository.file.FileUserRepository; | ||
| import com.sprint.mission.discodeit.repository.jcf.JcfReadStatusRepository; | ||
| import com.sprint.mission.discodeit.repository.jcf.JcfUserStatusRepository; | ||
| import com.sprint.mission.discodeit.service.ChannelService; | ||
| import com.sprint.mission.discodeit.service.MessageService; | ||
| import com.sprint.mission.discodeit.service.ReadStatusService; | ||
| import com.sprint.mission.discodeit.service.UserService; | ||
| import com.sprint.mission.discodeit.service.basic.BasicChannelService; | ||
| import com.sprint.mission.discodeit.service.basic.BasicMessageService; | ||
| import com.sprint.mission.discodeit.service.basic.BasicReadStatusService; | ||
| import com.sprint.mission.discodeit.service.basic.BasicUserService; | ||
|
|
||
| public class JavaApplication2 { | ||
| static User setupUser(UserService userService) { | ||
| UserCreateRequest request = new UserCreateRequest( | ||
| "woody", | ||
| "woody@codeit.com", | ||
| "woody1234", | ||
| null | ||
| ); | ||
| return userService.create(request); | ||
| } | ||
| private static Channel setupChannel(ChannelService channelService) { | ||
| ChannelCreateRequest request = new ChannelCreateRequest( | ||
| "공지", | ||
| "공지 채널입니다.", | ||
| null | ||
| ); | ||
| return channelService.createPublic(request); | ||
| } | ||
|
|
||
| private static void messageCreateTest(MessageService messageService, Channel channel, User author) { | ||
| MessageCreateRequest request = new MessageCreateRequest( | ||
| "안녕하세요.", | ||
| channel.getId(), | ||
| author.getId(), | ||
| null // 첨부파일(지금은 없으므로 null 전달) | ||
| ); | ||
|
|
||
| Message message = messageService.create(request); | ||
| System.out.println("메시지 생성: " + message.getId()); | ||
| } | ||
| public static void main(String[] args) { | ||
| // 레포지토리 초기화 | ||
| UserRepository userRepository = new FileUserRepository(); | ||
| ChannelRepository channelRepository = new FileChannelRepository(); | ||
| MessageRepository messageRepository = new FileMessageRepository(); | ||
| ReadStatusRepository readStatusRepository = new JcfReadStatusRepository(); | ||
| BinaryContentRepository binaryContentRepository = new FileBinaryContentRepository(); | ||
|
|
||
| // 서비스 초기화 | ||
| UserStatusRepository userStatusRepository = new JcfUserStatusRepository(); | ||
| UserService userService = new BasicUserService(userRepository, userStatusRepository); | ||
| ChannelService channelService = new BasicChannelService(channelRepository, readStatusRepository, messageRepository); | ||
| MessageService messageService = new BasicMessageService(messageRepository, channelRepository, userRepository, binaryContentRepository); | ||
| ReadStatusService readStatusService = new BasicReadStatusService(readStatusRepository, userRepository, channelRepository); | ||
|
|
||
| // 셋업 | ||
| User user = setupUser(userService); | ||
| Channel channel = setupChannel(channelService); | ||
| // 테스트 | ||
| messageCreateTest(messageService, channel, user); | ||
| ReadStatusCreateRequest rsRequest = new ReadStatusCreateRequest( | ||
| user.getId(), | ||
| channel.getId(), | ||
| null // 처음에는 읽은 메시지가 없으므로 null을 넣습니다. | ||
| ); | ||
|
|
||
| readStatusService.create(rsRequest); | ||
| System.out.println("읽음 상태 생성 완료!"); | ||
| } | ||
| } | ||
| //package com.sprint.mission.discodeit; | ||
| // | ||
| //import com.sprint.mission.discodeit.dto.ChannelCreateRequest; | ||
| //import com.sprint.mission.discodeit.dto.MessageCreateRequest; | ||
| //import com.sprint.mission.discodeit.dto.ReadStatusCreateRequest; | ||
| //import com.sprint.mission.discodeit.dto.UserCreateRequest; | ||
| //import com.sprint.mission.discodeit.entity.Channel; | ||
| //import com.sprint.mission.discodeit.entity.ChannelType; | ||
| //import com.sprint.mission.discodeit.entity.Message; | ||
| //import com.sprint.mission.discodeit.entity.User; | ||
| //import com.sprint.mission.discodeit.repository.*; | ||
| //import com.sprint.mission.discodeit.repository.file.FileBinaryContentRepository; | ||
| //import com.sprint.mission.discodeit.repository.file.FileChannelRepository; | ||
| //import com.sprint.mission.discodeit.repository.file.FileMessageRepository; | ||
| //import com.sprint.mission.discodeit.repository.file.FileUserRepository; | ||
| //import com.sprint.mission.discodeit.repository.jcf.JcfReadStatusRepository; | ||
| //import com.sprint.mission.discodeit.repository.jcf.JcfUserStatusRepository; | ||
| //import com.sprint.mission.discodeit.service.ChannelService; | ||
| //import com.sprint.mission.discodeit.service.MessageService; | ||
| //import com.sprint.mission.discodeit.service.ReadStatusService; | ||
| //import com.sprint.mission.discodeit.service.UserService; | ||
| //import com.sprint.mission.discodeit.service.basic.BasicChannelService; | ||
| //import com.sprint.mission.discodeit.service.basic.BasicMessageService; | ||
| //import com.sprint.mission.discodeit.service.basic.BasicReadStatusService; | ||
| //import com.sprint.mission.discodeit.service.basic.BasicUserService; | ||
| // | ||
| //import java.util.Optional; | ||
| // | ||
| //public class JavaApplication2 { | ||
| // static User setupUser(UserService userService) { | ||
| // UserCreateRequest request = new UserCreateRequest( | ||
| // "woody", | ||
| // "woody@codeit.com", | ||
| // "woody1234", | ||
| // null | ||
| // ); | ||
| // return userService.create(request, Optional.empty()); | ||
| // } | ||
| // private static Channel setupChannel(ChannelService channelService) { | ||
| // ChannelCreateRequest request = new ChannelCreateRequest( | ||
| // "공지", | ||
| // "공지 채널입니다.", | ||
| // null | ||
| // ); | ||
| // return channelService.createPublic(request); | ||
| // } | ||
| // | ||
| // private static void messageCreateTest(MessageService messageService, Channel channel, User author) { | ||
| // MessageCreateRequest request = new MessageCreateRequest( | ||
| // "안녕하세요.", | ||
| // channel.getId(), | ||
| // author.getId(), | ||
| // null // 첨부파일(지금은 없으므로 null 전달) | ||
| // ); | ||
| // | ||
| // Message message = messageService.create(request); | ||
| // System.out.println("메시지 생성: " + message.getId()); | ||
| // } | ||
| // public static void main(String[] args) { | ||
| // // 레포지토리 초기화 | ||
| // UserRepository userRepository = new FileUserRepository(); | ||
| // ChannelRepository channelRepository = new FileChannelRepository(); | ||
| // MessageRepository messageRepository = new FileMessageRepository(); | ||
| // ReadStatusRepository readStatusRepository = new JcfReadStatusRepository(); | ||
| // BinaryContentRepository binaryContentRepository = new FileBinaryContentRepository(); | ||
| // | ||
| // // 서비스 초기화 | ||
| // UserStatusRepository userStatusRepository = new JcfUserStatusRepository(); | ||
| // UserService userService = new BasicUserService(userRepository, userStatusRepository); | ||
| // ChannelService channelService = new BasicChannelService(channelRepository, readStatusRepository, messageRepository); | ||
| // MessageService messageService = new BasicMessageService(messageRepository, channelRepository, userRepository, binaryContentRepository); | ||
| // ReadStatusService readStatusService = new BasicReadStatusService(readStatusRepository, userRepository, channelRepository); | ||
| // | ||
| // // 셋업 | ||
| // User user = setupUser(userService); | ||
| // Channel channel = setupChannel(channelService); | ||
| // // 테스트 | ||
| // messageCreateTest(messageService, channel, user); | ||
| // ReadStatusCreateRequest rsRequest = new ReadStatusCreateRequest( | ||
| // user.getId(), | ||
| // channel.getId(), | ||
| // null // 처음에는 읽은 메시지가 없으므로 null을 넣습니다. | ||
| // ); | ||
| // | ||
| // readStatusService.create(rsRequest); | ||
| // System.out.println("읽음 상태 생성 완료!"); | ||
| // } | ||
| //} |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,25 @@ | ||
| package com.sprint.mission.discodeit.controller; | ||
|
|
||
| import com.sprint.mission.discodeit.dto.LoginRequest; | ||
| import com.sprint.mission.discodeit.entity.User; | ||
| import com.sprint.mission.discodeit.service.AuthService; | ||
| import lombok.RequiredArgsConstructor; | ||
| 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; | ||
|
|
||
| @RestController | ||
| @RequestMapping("/api/auth") | ||
| @RequiredArgsConstructor | ||
| public class AuthController { | ||
| private final AuthService authService; | ||
|
|
||
| @PostMapping("/login") | ||
| public ResponseEntity<User> login(@RequestBody LoginRequest request) { | ||
| User user = authService.login(request); | ||
| return ResponseEntity.ok(user); | ||
| } | ||
|
|
||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,46 @@ | ||
| package com.sprint.mission.discodeit.controller; | ||
|
|
||
| import com.sprint.mission.discodeit.dto.BinaryContentCreateRequest; | ||
| import com.sprint.mission.discodeit.entity.BinaryContent; | ||
| import com.sprint.mission.discodeit.service.BinaryContentService; | ||
| import lombok.RequiredArgsConstructor; | ||
| import org.springframework.http.HttpHeaders; | ||
| import org.springframework.http.HttpStatus; | ||
| import org.springframework.http.MediaType; | ||
| import org.springframework.http.ResponseEntity; | ||
| import org.springframework.web.bind.annotation.*; | ||
|
|
||
| import java.util.List; | ||
| import java.util.UUID; | ||
|
|
||
| @RestController | ||
| @RequestMapping("/api/binary-contents") | ||
| @RequiredArgsConstructor | ||
| public class BinaryContentController { | ||
|
|
||
| private final BinaryContentService binaryContentService; | ||
|
|
||
| @GetMapping("/{id}") | ||
| public ResponseEntity<byte[]> download(@PathVariable UUID id) { | ||
| BinaryContent content = binaryContentService.find(id); | ||
|
|
||
| String contentDisposition = "attachment; filename=\"file_" + id + "\""; | ||
|
|
||
| return ResponseEntity.ok() | ||
| .header(HttpHeaders.CONTENT_DISPOSITION, contentDisposition) // 다운로드 파일명 설정 | ||
| .contentType(MediaType.APPLICATION_OCTET_STREAM) // 이진 데이터 타입 설정 | ||
| .body(content.getBytes()); // 실제 바이트 데이터 | ||
| } | ||
|
|
||
| @PostMapping | ||
| public ResponseEntity<BinaryContent> create(@RequestBody BinaryContentCreateRequest request) { | ||
| BinaryContent savedContent = binaryContentService.create(request); | ||
| return ResponseEntity.status(HttpStatus.CREATED).body(savedContent); | ||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. BinaryContent Entity를 그대로 반환하지 말고 다른 DTO등으로 감싸주세요. 해당 Entity 내부에 byte코드도 같이 json으로 반환하게 되면서 부하가 생깁니다. |
||
| } | ||
|
|
||
| @GetMapping | ||
| public ResponseEntity<List<BinaryContent>> findAll(@RequestParam List<UUID> ids) { | ||
| List<BinaryContent> contents = binaryContentService.findAllByIds(ids); | ||
| return ResponseEntity.ok(contents); | ||
| } | ||
| } | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,72 @@ | ||
| package com.sprint.mission.discodeit.controller; | ||
|
|
||
| import com.sprint.mission.discodeit.dto.ChannelCreateRequest; | ||
| import com.sprint.mission.discodeit.dto.ChannelDto; | ||
| import com.sprint.mission.discodeit.dto.ChannelUpdateRequest; | ||
| import com.sprint.mission.discodeit.entity.Channel; | ||
| import com.sprint.mission.discodeit.service.ChannelService; | ||
| import lombok.RequiredArgsConstructor; | ||
| import org.springframework.http.HttpStatus; | ||
| import org.springframework.http.ResponseEntity; | ||
| import org.springframework.web.bind.annotation.*; | ||
|
|
||
| import java.time.Instant; | ||
| import java.util.ArrayList; | ||
| import java.util.List; | ||
| import java.util.UUID; | ||
|
|
||
| @RestController | ||
| @RequestMapping("/api/channel") | ||
| @RequiredArgsConstructor | ||
| public class ChannelController { | ||
|
|
||
| private final ChannelService channelService; | ||
|
|
||
| @PostMapping("/public") | ||
| public ResponseEntity<Channel> createPublic(@RequestBody ChannelCreateRequest request) { | ||
| Channel channel = channelService.createPublic(request); | ||
| return ResponseEntity.status(HttpStatus.CREATED).body(channel); | ||
| } | ||
|
|
||
| @PostMapping("/private") | ||
| public ResponseEntity<Channel> createPrivate(@RequestBody ChannelCreateRequest request) { | ||
| Channel channel = channelService.createPrivate(request); | ||
| return ResponseEntity.status(HttpStatus.CREATED).body(channel); | ||
| } | ||
|
|
||
| @GetMapping("/{userId}") | ||
| public ResponseEntity<List<ChannelDto>> findAllByUserId(@PathVariable UUID userId) { | ||
| List<ChannelDto> channels = channelService.findAllByUserId(userId); | ||
| return ResponseEntity.ok(channels); | ||
| } | ||
|
|
||
| @PatchMapping("/{id}") | ||
| public ResponseEntity<ChannelDto> update( | ||
| @PathVariable UUID id, | ||
| @RequestBody ChannelUpdateRequest request) { | ||
| Channel updatedChannel = channelService.update(id, request); | ||
| return ResponseEntity.ok(toDto(updatedChannel)); | ||
| } | ||
|
|
||
| @DeleteMapping("/{id}") | ||
| public ResponseEntity<Void> delete(@PathVariable UUID id) { | ||
| channelService.delete(id); | ||
| return ResponseEntity.noContent().build(); | ||
| } | ||
|
|
||
| private ChannelDto toDto(Channel channel) { | ||
| return new ChannelDto( | ||
| channel.getId(), | ||
| channel.getType(), | ||
| channel.getName(), | ||
| channel.getDescription(), | ||
| new ArrayList<>(), // 참여자 명단은 일단 빈 리스트로 처리 | ||
| Instant.now() | ||
| ); | ||
| } | ||
|
|
||
| @GetMapping | ||
| public ResponseEntity<List<Channel>> findAll() { | ||
| return ResponseEntity.ok(null); | ||
| } | ||
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
주석보다 테스트 로직을 삭제하는 편이 좋아보입니다.
주석의 경우 차후 미사용하거나 잊혀지는 경우가 많아서 제거하거나
따로 Test 파일을 만들어서 관리하는 편이 좋습니다.