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
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
//package com.sprint.mission.discodeit;
//
//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.service.ChannelService;
//import com.sprint.mission.discodeit.service.MessageService;
//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.BasicUserService;
//import org.springframework.boot.SpringApplication;
//import org.springframework.boot.autoconfigure.SpringBootApplication;
//import org.springframework.context.ConfigurableApplicationContext;
//
//@SpringBootApplication
//public class DiscodeitApplication {
//
// static User setupUser(UserService userService) {
// User user = userService.create("woody", "woody@codeit.com", "woody1234");
// return user;
// }
//
// static Channel setupChannel(ChannelService channelService) {
// Channel channel = channelService.create(ChannelType.PUBLIC, "공지", "공지 채널입니다.");
// return channel;
// }
//
// static void messageCreateTest(MessageService messageService, Channel channel, User author) {
// Message message = messageService.create("안녕하세요.", channel.getId(), author.getId());
// System.out.println("메시지 생성: [" + author.getUsername() + "] " + message.getContent());
// }
//
// public static void main(String[] args) {
// ConfigurableApplicationContext context = SpringApplication.run(DiscodeitApplication.class, args);
//
// // 서비스 초기화
// UserService userService = context.getBean(UserService.class);
// ChannelService channelService = context.getBean(ChannelService.class);
// MessageService messageService = context.getBean(MessageService.class);
//
// // 셋업
// User user = setupUser(userService);
// Channel channel = setupChannel(channelService);
//
// // 테스트
// messageCreateTest(messageService, channel, user);
// }
//
//}
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
//package com.sprint.mission.discodeit;
//
//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.ChannelRepository;
//import com.sprint.mission.discodeit.repository.MessageRepository;
//import com.sprint.mission.discodeit.repository.UserRepository;
//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.service.ChannelService;
//import com.sprint.mission.discodeit.service.MessageService;
//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.BasicUserService;
//
//public class JavaApplication {
// public static void main(String[] args) {
// // 레포지토리 초기화
// UserRepository userRepository = new FileUserRepository();
// ChannelRepository channelRepository = new FileChannelRepository();
// MessageRepository messageRepository = new FileMessageRepository();
//
// // 서비스 초기화
// UserService userService = new BasicUserService(userRepository);
// ChannelService channelService = new BasicChannelService(channelRepository);
// MessageService messageService = new BasicMessageService(messageRepository, channelRepository, userRepository);
//
// // 셋업
// User user = setupUser(userService);
// Channel channel = setupChannel(channelService);
// // 테스트
// messageCreateTest(messageService, channel, user);
// }
//}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.sprint.mission.discodeit.dto;

public class AuthDto {
public record LoginRequest(
String username,
String password
) {}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package com.sprint.mission.discodeit.dto;

import java.util.UUID;

public class BinaryContentDto {
public record CreateRequest(
byte[] bytes,
String contentType,
String fileName
){}

public record Response(
UUID id,
byte[] bytes,
String contentType,
String fileName
){}

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

import com.sprint.mission.discodeit.entity.ChannelType;
import lombok.Builder;

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

public class ChannelDto {
public record CreateRequest(
ChannelType type,
String name,
String description
) {}


@Builder
public record Response(
UUID id,
ChannelType type,
String name,
String description,
Instant lastMessageAt,
List<UUID> memberIdList

) {}

public record UpdateRequest (
UUID channelId,
String newName,
String newDescription
) {}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package com.sprint.mission.discodeit.dto;

import lombok.Builder;

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

public class MessageDto {
public record CreateRequest(
String content,
UUID channelId,
UUID authorId,
List<BinaryContentDto> attachments // 첨부파일(선택)
) {}

public record BinaryContentDto (
byte[] data,
String fileType,
String fileName
) {}


@Builder
public record Response(
UUID id,
UUID channelId,
UUID authorId,
String content,
List<UUID> attachmentId
) {}

public record UpdateRequest (
UUID id,
String content,
List<BinaryContentDto> attachments
) {}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package com.sprint.mission.discodeit.dto;

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

public class ReadStatusDto {
public record CreateRequest(
UUID userId,
UUID channelId
){}

public record Response(
UUID id,
UUID userId,
UUID channelId,
UUID lastMessageReadId,
Instant updatedAt

){}

public record UpdateRequest(
UUID id,
UUID lastReadMessageId
){}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package com.sprint.mission.discodeit.dto;

import lombok.Builder;

import java.util.UUID;

public class UserDto {
public record CreateRequest(
String username,
String email,
String password,
BinaryContentDto profileImage
) {}

public record BinaryContentDto (
byte[] data,
String fileType,
String fileName
) {}

@Builder
public record Response(
UUID id,
String username,
String email,
boolean isOnline,
UUID profileImageId
) {}

public record UpdateRequest (
UUID id,
String username,
String email,
String password,
BinaryContentDto profileImage
) {}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package com.sprint.mission.discodeit.dto;

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

public class UserStatusDto {
public record CreateRequest(
UUID userId
){}

public record Response(
UUID id,
UUID userId,
Instant updatedAt,
boolean isOnline
){}

public record UpdateRequest(
UUID id,
UUID userId
){}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package com.sprint.mission.discodeit.entity;

import lombok.AllArgsConstructor;
import lombok.experimental.SuperBuilder;

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

@SuperBuilder
@AllArgsConstructor
public abstract class BaseEntity implements Serializable {
private static final long serialVersionUID = 1L;
protected final UUID id;
protected final Instant createdAt;

public BaseEntity() {
this.id = UUID.randomUUID();
this.createdAt = Instant.now();
}

// 공통 Getter
public UUID getId() { return id; }
public Instant getCreatedAt() { return createdAt; }

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

import lombok.Getter;

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

@Getter
public class BinaryContent extends BaseEntity{
private final byte[] bytes;
private final String contentType; // 예: image/png, application/pdf
private final String fileName;

public BinaryContent(byte[] bytes, String contentType, String fileName) {
super();
this.bytes = bytes;
this.contentType = contentType;
this.fileName = fileName;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
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 Channel extends BaseEntity implements Serializable {
private static final long serialVersionUID = 1L;
private Instant updatedAt;
private ChannelType type;
private String name;
private String description;

public Channel(ChannelType type, String name, String description) {
this.type = type;
this.name = name;
this.description = description;
}

public void update(String newName, String newDescription) {
boolean anyValueUpdated = false;
if (newName != null && !newName.equals(this.name)) {
this.name = newName;
anyValueUpdated = true;
}
if (newDescription != null && !newDescription.equals(this.description)) {
this.description = newDescription;
anyValueUpdated = true;
}

if (anyValueUpdated) {
this.updatedAt = Instant.now();
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package com.sprint.mission.discodeit.entity;

public enum ChannelType {
PUBLIC,
PRIVATE,
}
Loading