|
1 | 1 | package com.sprint.mission.discodeit.controller.message;
|
2 | 2 |
|
| 3 | +import com.sprint.mission.discodeit.dto.data.ChannelDto; |
| 4 | +import com.sprint.mission.discodeit.dto.request.ReadStatusCreateRequest; |
| 5 | +import com.sprint.mission.discodeit.dto.request.ReadStatusUpdateRequest; |
| 6 | +import com.sprint.mission.discodeit.entity.Message; |
| 7 | +import com.sprint.mission.discodeit.entity.ReadStatus; |
| 8 | +import com.sprint.mission.discodeit.service.ChannelService; |
| 9 | +import com.sprint.mission.discodeit.service.MessageService; |
| 10 | +import com.sprint.mission.discodeit.service.ReadStatusService; |
| 11 | +import java.net.URI; |
| 12 | +import java.util.List; |
| 13 | +import java.util.UUID; |
| 14 | +import org.springframework.http.ResponseEntity; |
| 15 | +import org.springframework.web.bind.annotation.PathVariable; |
| 16 | +import org.springframework.web.bind.annotation.RequestBody; |
3 | 17 | import org.springframework.web.bind.annotation.RequestMapping;
|
| 18 | +import org.springframework.web.bind.annotation.RequestMethod; |
4 | 19 | import org.springframework.web.bind.annotation.RestController;
|
5 | 20 |
|
6 | 21 | @RestController
|
7 |
| -@RequestMapping("/api/") |
| 22 | +@RequestMapping("/api/read-status") |
8 | 23 | public class MessageReadStatusController {
|
| 24 | + |
| 25 | + private final ReadStatusService readStatusService; |
| 26 | + |
| 27 | + public MessageReadStatusController(ReadStatusService readStatusService) { |
| 28 | + this.readStatusService = readStatusService; |
| 29 | + } |
| 30 | + |
| 31 | + @RequestMapping(value = "/{id}", method = RequestMethod.GET) |
| 32 | + public ResponseEntity<List<ReadStatus>> findByUserId( |
| 33 | + @PathVariable(name = "id") UUID userId |
| 34 | + ) { |
| 35 | + return ResponseEntity.ok(readStatusService.findAllByUserId(userId)); |
| 36 | + } |
| 37 | + |
| 38 | + @RequestMapping(method = RequestMethod.POST) |
| 39 | + public ResponseEntity<Void> createReadStatus( |
| 40 | + @RequestBody ReadStatusCreateRequest readStatusCreateRequest |
| 41 | + ) { |
| 42 | + readStatusService.create(readStatusCreateRequest); |
| 43 | + return ResponseEntity.created(URI.create("/")).build(); |
| 44 | + } |
| 45 | + |
| 46 | + @RequestMapping(value = "/{id}", method = RequestMethod.PATCH) |
| 47 | + public ResponseEntity<Void> updateReadStatusByChannelId( |
| 48 | + @PathVariable(name = "id") UUID userId, |
| 49 | + @RequestBody ReadStatusUpdateRequest readStatusUpdateRequest |
| 50 | + ) { |
| 51 | + List<ReadStatus> allByUserId = readStatusService.findAllByUserId(userId); |
| 52 | + allByUserId.stream().map(ReadStatus::getId).forEach(it -> readStatusService.update(it, readStatusUpdateRequest)); |
| 53 | + return ResponseEntity.noContent().build(); |
| 54 | + } |
9 | 55 | }
|
0 commit comments