Skip to content
Open
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
19 changes: 19 additions & 0 deletions .idea/dataSources.xml

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
@@ -0,0 +1,50 @@
package com.sprint.mission.discodeit.controller;


import com.sprint.mission.discodeit.dto.channelService.ChannelCreateRequest;
import com.sprint.mission.discodeit.dto.channelService.ChannelDTO;
import com.sprint.mission.discodeit.dto.channelService.ChannelUpdateRequest;
import com.sprint.mission.discodeit.dto.channelService.PrivateChannelCreateRequest;
import com.sprint.mission.discodeit.entity.Channel;
import com.sprint.mission.discodeit.service.basic.ChannelService;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;

import java.util.List;
import java.util.UUID;

@RestController
@RequestMapping("/channels")
@RequiredArgsConstructor

public class ChannelController {
private final ChannelService channelService;

@RequestMapping(value = "/public", method = RequestMethod.POST)
public Channel createPublicChannel(@RequestBody ChannelCreateRequest request) {
return channelService.createPublicChannel(request);
}

@RequestMapping(value = "/private", method = RequestMethod.POST)
public Channel createPrivateChannel(@RequestBody PrivateChannelCreateRequest request) {
return channelService.createPrivateChannel(request);
}

@RequestMapping(value = "/update", method = RequestMethod.PUT)
public ChannelDTO updateChannel(@RequestBody ChannelUpdateRequest request) {
return channelService.update(request);
}

@RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
public void deleteChannel(@PathVariable UUID id) {
channelService.delete(id);
}

@RequestMapping(value = "", method = RequestMethod.GET)
public List<ChannelDTO> getUserChannels(@RequestParam UUID userId) {
return channelService.findAllByUserId(userId);
}



}
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
package com.sprint.mission.discodeit.controller;

import com.sprint.mission.discodeit.dto.MessageService.MessageCreateRequestDTO;
import com.sprint.mission.discodeit.dto.MessageService.MessageResponseDTO;
import com.sprint.mission.discodeit.dto.MessageService.MessageUpdateRequestDTO;
import com.sprint.mission.discodeit.entity.Message;
import com.sprint.mission.discodeit.service.basic.BasicMessageService;
import com.sprint.mission.discodeit.service.basic.MessageService;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;

import java.util.List;
import java.util.UUID;

@RestController
@RequestMapping("/messages")
@RequiredArgsConstructor
public class MessageController {

private final MessageService messageService;
// 메시지 생성 API
@RequestMapping(value = "/create", method = RequestMethod.POST)
public Message createMessage(@RequestBody MessageCreateRequestDTO request) {
return messageService.create(request, List.of()); // 현재는 첨부파일 없이 메시지만 생성
}

// 특정 메시지 조회 API
@RequestMapping(value = "/{messageId}", method = RequestMethod.GET)
public Message getMessage(@PathVariable UUID messageId) {
return messageService.find(messageId);
}

// 특정 채널의 모든 메시지 조회 API
@RequestMapping(method = RequestMethod.GET)
public List<Message> getMessagesByChannel(@RequestParam UUID channelId) {
return messageService.findAllByChannelId(channelId);
}

// 메시지 수정 API
@RequestMapping(value = "/{messageId}", method = RequestMethod.PUT)
public Message updateMessage(@PathVariable UUID messageId, @RequestBody MessageUpdateRequestDTO request) {
return messageService.update(messageId, request);
}

// 메시지 삭제
@RequestMapping(value = "/{messageId}", method = RequestMethod.DELETE)
public void deleteMessage(@PathVariable UUID messageId) {
messageService.delete(messageId);
}


}
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
package com.sprint.mission.discodeit.controller;

import com.sprint.mission.discodeit.dto.ReadStatusService.ReadStatusCreateRequestDTO;
import com.sprint.mission.discodeit.dto.ReadStatusService.ReadStatusUpdateRequestDTO;
import com.sprint.mission.discodeit.entity.ReadStatus;
import com.sprint.mission.discodeit.service.readStatus.ReadStatusService;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;

import java.util.List;
import java.util.UUID;

@RestController
@RequestMapping("/read-status")
@RequiredArgsConstructor
public class ReadStatusController {

private final ReadStatusService readStatusService;

// ✅ 특정 채널의 메시지 수신 정보 생성 (POST /read-status/create)
@RequestMapping(value = "/create", method = RequestMethod.POST)
public ReadStatus createReadStatus(@RequestBody ReadStatusCreateRequestDTO request) {
return readStatusService.create(request);
}

// ✅ 특정 메시지 수신 정보 조회 (GET /read-status/{id})
@RequestMapping(value = "/{id}", method = RequestMethod.GET)
public ReadStatus getReadStatus(@PathVariable UUID id) {
return readStatusService.find(id);
}

// ✅ 특정 사용자의 모든 메시지 수신 정보 조회 (GET /read-status/user/{userId})
@RequestMapping(value = "/user/{userId}", method = RequestMethod.GET)
public List<ReadStatus> getReadStatusByUser(@PathVariable UUID userId) {
return readStatusService.findAllByUserId(userId);
}

// ✅ 특정 채널의 메시지 수신 정보 수정 (PUT /read-status/update)
@RequestMapping(value = "/update", method = RequestMethod.PUT)
public ReadStatus updateReadStatus(@RequestBody ReadStatusUpdateRequestDTO request) {
return readStatusService.update(request);
}

// ✅ 특정 메시지 수신 정보 삭제 (DELETE /read-status/{id})
@RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
public void deleteReadStatus(@PathVariable UUID id) {
readStatusService.delete(id);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import com.sprint.mission.discodeit.dto.authService.LoginRequest;
import com.sprint.mission.discodeit.dto.authService.LoginResponse;
import com.sprint.mission.discodeit.dto.binaryContentService.BinaryContentCreateRequestDTO;
import com.sprint.mission.discodeit.dto.userService.UserCreateRequest;
import com.sprint.mission.discodeit.dto.userService.UserDTO;
import com.sprint.mission.discodeit.dto.userService.UserProfileImageRequest;
Expand All @@ -13,6 +14,7 @@
import org.springframework.web.bind.annotation.*;

import java.util.List;
import java.util.Optional;
import java.util.UUID;

@RestController
Expand All @@ -26,16 +28,20 @@ public class UserController {

// 사용자 생성 API (POST /users/create)
@RequestMapping(value = "/create", method = RequestMethod.POST)
public User createUser(@RequestBody UserCreateRequest userRequest) {
return userService.create(userRequest, null);
public User createUser(@RequestBody UserCreateRequest userRequest,
@RequestBody(required = false) BinaryContentCreateRequestDTO profileImage) {
return userService.create(userRequest, Optional.ofNullable(profileImage));
}


// 사용자 정보 수정 API (PUT /users/update)
@RequestMapping(value = "/update", method = RequestMethod.PUT)
public UserDTO updateUser(@RequestBody UserUpdateRequest userRequest) {
return userService.update(userRequest, null);
public User updateUser(@RequestBody UserUpdateRequest userRequest) {
return userService.update(userRequest, Optional.empty());
}



// 특정 사용자 조회 API (GET /users/{id})
@RequestMapping(value = "/{id}", method = RequestMethod.GET)
public UserDTO getUser(@PathVariable UUID id) {
Expand All @@ -56,11 +62,7 @@ public List<UserDTO> getAllUsers() {

// 로그인 API (POST /users/login)
@RequestMapping(value = "/login", method = RequestMethod.POST)
public LoginResponse login(@RequestBody LoginRequest request) {
public User login(@RequestBody LoginRequest request) {
return authService.login(request);
}




}
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,6 @@
import java.util.UUID;

public record MessageUpdateRequestDTO(
UUID messageId, // 수정할 메시지 ID
String newContent, // 수정할 메시지 내용
List<UUID> fileIds // 새롭게 등록할 첨부파일 ID 리스트 (선택적)
String newContent
) {

}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.sprint.mission.discodeit.dto.authService;

public record LoginRequest(
String email,
String username,
String password
) {}
Original file line number Diff line number Diff line change
Expand Up @@ -5,19 +5,8 @@
import java.util.UUID;

public record BinaryContentCreateRequestDTO(
UUID userId,
UUID messageId,
String mimeType,
String fileName,
byte[] data
String contentType,
byte[] bytes
) {
public BinaryContent from() {
return new BinaryContent(
userId,
messageId,
mimeType,
fileName,
data
);
}
}
Original file line number Diff line number Diff line change
@@ -1,10 +1,19 @@
package com.sprint.mission.discodeit.dto.binaryContentService;

import com.sprint.mission.discodeit.entity.BinaryContent;

import java.util.UUID;

public record BinaryContentDTO(
UUID id, // 파일 ID
String fileName, // 파일 이름
String mimeType // 파일 타입 (예: image/png)
) {
public static BinaryContentDTO from(BinaryContent binaryContent) {
return new BinaryContentDTO(
binaryContent.getId(),
binaryContent.getFileName(),
binaryContent.getContentType()
);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@
import java.util.UUID;

public record PrivateChannelCreateRequest(
String password, // PRIVATE 채널은 비밀번호가 필요함
List<UUID> userIds // 채널에 참여할 유저 ID 목록
) {
}
String name, // 채널 이름 추가
String description, // 채널 설명 추가
String password, // PRIVATE 채널은 비밀번호가 필요함
List<UUID> userIds // 채널에 참여할 유저 ID 목록
) {}

Original file line number Diff line number Diff line change
@@ -1,38 +1,29 @@
package com.sprint.mission.discodeit.entity;

import lombok.Getter;
import lombok.Setter;

import java.io.Serializable;
import java.time.Instant;
import java.util.UUID;

@Getter
@Setter
public class BinaryContent implements Serializable {
private static final long serialVersionUID = 1L;

private final UUID id;
private final Instant createdAt;

private UUID userId;
@Setter
private UUID messageId;
private UUID id;
private Instant createdAt;
//
private String fileName;
private String mimeType;
private byte[] data;
private Long size;
private String contentType;
private byte[] bytes;

public BinaryContent(UUID userId, UUID messageId, String mimeType, String fileName, byte[] content) {
public BinaryContent(String fileName, Long size, String contentType, byte[] bytes) {
this.id = UUID.randomUUID();
this.createdAt = Instant.now();

this.userId = userId;
this.messageId = messageId;

//
this.fileName = fileName;
this.mimeType = mimeType;
this.data = content.clone();
this.size = size;
this.contentType = contentType;
this.bytes = bytes;
}


}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

import java.io.Serializable;
import java.time.Instant;
import java.util.List;
import java.util.UUID;

@Getter
Expand All @@ -18,14 +19,16 @@ public class Message implements Serializable {
//
private UUID channelId;
private UUID authorId;
private List<UUID> attachmentIds;

public Message(String content, UUID channelId, UUID authorId) {
public Message(String content, UUID channelId, UUID authorId, List<UUID> attachmentIds) {
this.id = UUID.randomUUID();
this.createdAt = Instant.now();
//
this.content = content;
this.channelId = channelId;
this.authorId = authorId;
this.attachmentIds = attachmentIds;
}

public void update(String newContent) {
Expand Down
Loading