diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 00000000..c50c31cc Binary files /dev/null and b/.DS_Store differ diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..485dee64 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.idea diff --git a/discodeit/.DS_Store b/discodeit/.DS_Store new file mode 100644 index 00000000..73780108 Binary files /dev/null and b/discodeit/.DS_Store differ diff --git a/discodeit/.gradle/8.8/checksums/checksums.lock b/discodeit/.gradle/8.8/checksums/checksums.lock new file mode 100644 index 00000000..a63bf6be Binary files /dev/null and b/discodeit/.gradle/8.8/checksums/checksums.lock differ diff --git a/discodeit/.gradle/8.8/checksums/md5-checksums.bin b/discodeit/.gradle/8.8/checksums/md5-checksums.bin new file mode 100644 index 00000000..a4094ece Binary files /dev/null and b/discodeit/.gradle/8.8/checksums/md5-checksums.bin differ diff --git a/discodeit/.gradle/8.8/checksums/sha1-checksums.bin b/discodeit/.gradle/8.8/checksums/sha1-checksums.bin new file mode 100644 index 00000000..c939a8ae Binary files /dev/null and b/discodeit/.gradle/8.8/checksums/sha1-checksums.bin differ diff --git a/discodeit/.gradle/8.8/dependencies-accessors/gc.properties b/discodeit/.gradle/8.8/dependencies-accessors/gc.properties new file mode 100644 index 00000000..e69de29b diff --git a/discodeit/.gradle/8.8/executionHistory/executionHistory.bin b/discodeit/.gradle/8.8/executionHistory/executionHistory.bin new file mode 100644 index 00000000..6bee26c3 Binary files /dev/null and b/discodeit/.gradle/8.8/executionHistory/executionHistory.bin differ diff --git a/discodeit/.gradle/8.8/executionHistory/executionHistory.lock b/discodeit/.gradle/8.8/executionHistory/executionHistory.lock new file mode 100644 index 00000000..8182b168 Binary files /dev/null and b/discodeit/.gradle/8.8/executionHistory/executionHistory.lock differ diff --git a/discodeit/.gradle/8.8/fileChanges/last-build.bin b/discodeit/.gradle/8.8/fileChanges/last-build.bin new file mode 100644 index 00000000..f76dd238 Binary files /dev/null and b/discodeit/.gradle/8.8/fileChanges/last-build.bin differ diff --git a/discodeit/.gradle/8.8/fileHashes/fileHashes.bin b/discodeit/.gradle/8.8/fileHashes/fileHashes.bin new file mode 100644 index 00000000..00ff2167 Binary files /dev/null and b/discodeit/.gradle/8.8/fileHashes/fileHashes.bin differ diff --git a/discodeit/.gradle/8.8/fileHashes/fileHashes.lock b/discodeit/.gradle/8.8/fileHashes/fileHashes.lock new file mode 100644 index 00000000..744da5d9 Binary files /dev/null and b/discodeit/.gradle/8.8/fileHashes/fileHashes.lock differ diff --git a/discodeit/.gradle/8.8/fileHashes/resourceHashesCache.bin b/discodeit/.gradle/8.8/fileHashes/resourceHashesCache.bin new file mode 100644 index 00000000..71ba56e9 Binary files /dev/null and b/discodeit/.gradle/8.8/fileHashes/resourceHashesCache.bin differ diff --git a/discodeit/.gradle/8.8/gc.properties b/discodeit/.gradle/8.8/gc.properties new file mode 100644 index 00000000..e69de29b diff --git a/discodeit/.gradle/9.0.0/checksums/checksums.lock b/discodeit/.gradle/9.0.0/checksums/checksums.lock new file mode 100644 index 00000000..bbb50f29 Binary files /dev/null and b/discodeit/.gradle/9.0.0/checksums/checksums.lock differ diff --git a/discodeit/.gradle/9.0.0/checksums/md5-checksums.bin b/discodeit/.gradle/9.0.0/checksums/md5-checksums.bin new file mode 100644 index 00000000..de295bd8 Binary files /dev/null and b/discodeit/.gradle/9.0.0/checksums/md5-checksums.bin differ diff --git a/discodeit/.gradle/9.0.0/checksums/sha1-checksums.bin b/discodeit/.gradle/9.0.0/checksums/sha1-checksums.bin new file mode 100644 index 00000000..a382ec7a Binary files /dev/null and b/discodeit/.gradle/9.0.0/checksums/sha1-checksums.bin differ diff --git a/discodeit/.gradle/9.0.0/executionHistory/executionHistory.bin b/discodeit/.gradle/9.0.0/executionHistory/executionHistory.bin new file mode 100644 index 00000000..465d9519 Binary files /dev/null and b/discodeit/.gradle/9.0.0/executionHistory/executionHistory.bin differ diff --git a/discodeit/.gradle/9.0.0/executionHistory/executionHistory.lock b/discodeit/.gradle/9.0.0/executionHistory/executionHistory.lock new file mode 100644 index 00000000..c5ed651b Binary files /dev/null and b/discodeit/.gradle/9.0.0/executionHistory/executionHistory.lock differ diff --git a/discodeit/.gradle/9.0.0/fileChanges/last-build.bin b/discodeit/.gradle/9.0.0/fileChanges/last-build.bin new file mode 100644 index 00000000..f76dd238 Binary files /dev/null and b/discodeit/.gradle/9.0.0/fileChanges/last-build.bin differ diff --git a/discodeit/.gradle/9.0.0/fileHashes/fileHashes.bin b/discodeit/.gradle/9.0.0/fileHashes/fileHashes.bin new file mode 100644 index 00000000..2dc8769e Binary files /dev/null and b/discodeit/.gradle/9.0.0/fileHashes/fileHashes.bin differ diff --git a/discodeit/.gradle/9.0.0/fileHashes/fileHashes.lock b/discodeit/.gradle/9.0.0/fileHashes/fileHashes.lock new file mode 100644 index 00000000..672d5964 Binary files /dev/null and b/discodeit/.gradle/9.0.0/fileHashes/fileHashes.lock differ diff --git a/discodeit/.gradle/9.0.0/gc.properties b/discodeit/.gradle/9.0.0/gc.properties new file mode 100644 index 00000000..e69de29b diff --git a/discodeit/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/discodeit/.gradle/buildOutputCleanup/buildOutputCleanup.lock new file mode 100644 index 00000000..84069629 Binary files /dev/null and b/discodeit/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ diff --git a/discodeit/.gradle/buildOutputCleanup/cache.properties b/discodeit/.gradle/buildOutputCleanup/cache.properties new file mode 100644 index 00000000..942274df --- /dev/null +++ b/discodeit/.gradle/buildOutputCleanup/cache.properties @@ -0,0 +1,2 @@ +#Wed Jan 28 11:51:18 KST 2026 +gradle.version=8.8 diff --git a/discodeit/.gradle/buildOutputCleanup/outputFiles.bin b/discodeit/.gradle/buildOutputCleanup/outputFiles.bin new file mode 100644 index 00000000..12d8b6b0 Binary files /dev/null and b/discodeit/.gradle/buildOutputCleanup/outputFiles.bin differ diff --git a/discodeit/.gradle/file-system.probe b/discodeit/.gradle/file-system.probe new file mode 100644 index 00000000..3f648aa7 Binary files /dev/null and b/discodeit/.gradle/file-system.probe differ diff --git a/discodeit/.gradle/vcs-1/gc.properties b/discodeit/.gradle/vcs-1/gc.properties new file mode 100644 index 00000000..e69de29b diff --git a/discodeit/README.md b/discodeit/README.md new file mode 100644 index 00000000..815bede5 --- /dev/null +++ b/discodeit/README.md @@ -0,0 +1,2 @@ +# 0-spring-mission +스프린트 미션 모범 답안 리포지토리입니다. diff --git a/discodeit/build.gradle b/discodeit/build.gradle new file mode 100644 index 00000000..1d3800a6 --- /dev/null +++ b/discodeit/build.gradle @@ -0,0 +1,37 @@ +plugins { + id 'java' + id 'org.springframework.boot' version '3.5.10' + id 'io.spring.dependency-management' version '1.1.7' +} + +group = 'com.sprint.mission' +version = '0.0.1-SNAPSHOT' +description = 'Demo project for Spring Boot' + +java { + toolchain { + languageVersion = JavaLanguageVersion.of(17) + } +} + +configurations { + compileOnly { + extendsFrom annotationProcessor + } +} + +repositories { + mavenCentral() +} + +dependencies { + implementation 'org.springframework.boot:spring-boot-starter-web' + compileOnly 'org.projectlombok:lombok' + annotationProcessor 'org.projectlombok:lombok' + testImplementation 'org.springframework.boot:spring-boot-starter-test' + testRuntimeOnly 'org.junit.platform:junit-platform-launcher' +} + +tasks.named('test') { + useJUnitPlatform() +} diff --git a/discodeit/build/classes/java/main/com/sprint/mission/discodeit/DiscodeitApplication$JavaApplication.class b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/DiscodeitApplication$JavaApplication.class new file mode 100644 index 00000000..121784cf Binary files /dev/null and b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/DiscodeitApplication$JavaApplication.class differ diff --git a/discodeit/build/classes/java/main/com/sprint/mission/discodeit/DiscodeitApplication.class b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/DiscodeitApplication.class new file mode 100644 index 00000000..412ae776 Binary files /dev/null and b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/DiscodeitApplication.class differ diff --git a/discodeit/build/classes/java/main/com/sprint/mission/discodeit/entity/BinaryContent.class b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/entity/BinaryContent.class new file mode 100644 index 00000000..033fc631 Binary files /dev/null and b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/entity/BinaryContent.class differ diff --git a/discodeit/build/classes/java/main/com/sprint/mission/discodeit/entity/Channel.class b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/entity/Channel.class new file mode 100644 index 00000000..fe5f22a9 Binary files /dev/null and b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/entity/Channel.class differ diff --git a/discodeit/build/classes/java/main/com/sprint/mission/discodeit/entity/ChannelType.class b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/entity/ChannelType.class new file mode 100644 index 00000000..11379b80 Binary files /dev/null and b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/entity/ChannelType.class differ diff --git a/discodeit/build/classes/java/main/com/sprint/mission/discodeit/entity/Message.class b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/entity/Message.class new file mode 100644 index 00000000..f4298483 Binary files /dev/null and b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/entity/Message.class differ diff --git a/discodeit/build/classes/java/main/com/sprint/mission/discodeit/entity/ReadStatus.class b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/entity/ReadStatus.class new file mode 100644 index 00000000..b132465a Binary files /dev/null and b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/entity/ReadStatus.class differ diff --git a/discodeit/build/classes/java/main/com/sprint/mission/discodeit/entity/User.class b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/entity/User.class new file mode 100644 index 00000000..e47c8e9e Binary files /dev/null and b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/entity/User.class differ diff --git a/discodeit/build/classes/java/main/com/sprint/mission/discodeit/entity/UserStatus.class b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/entity/UserStatus.class new file mode 100644 index 00000000..3d857eaf Binary files /dev/null and b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/entity/UserStatus.class differ diff --git a/discodeit/build/classes/java/main/com/sprint/mission/discodeit/repository/ChannelRepository.class b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/repository/ChannelRepository.class new file mode 100644 index 00000000..1cc52f74 Binary files /dev/null and b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/repository/ChannelRepository.class differ diff --git a/discodeit/build/classes/java/main/com/sprint/mission/discodeit/repository/MessageRepository.class b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/repository/MessageRepository.class new file mode 100644 index 00000000..ee51e671 Binary files /dev/null and b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/repository/MessageRepository.class differ diff --git a/discodeit/build/classes/java/main/com/sprint/mission/discodeit/repository/UserRepository.class b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/repository/UserRepository.class new file mode 100644 index 00000000..22335a23 Binary files /dev/null and b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/repository/UserRepository.class differ diff --git a/discodeit/build/classes/java/main/com/sprint/mission/discodeit/repository/file/FileBinaryContentRepository.class b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/repository/file/FileBinaryContentRepository.class new file mode 100644 index 00000000..9463a43b Binary files /dev/null and b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/repository/file/FileBinaryContentRepository.class differ diff --git a/discodeit/build/classes/java/main/com/sprint/mission/discodeit/repository/file/FileChannelRepository.class b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/repository/file/FileChannelRepository.class new file mode 100644 index 00000000..6b8bcb94 Binary files /dev/null and b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/repository/file/FileChannelRepository.class differ diff --git a/discodeit/build/classes/java/main/com/sprint/mission/discodeit/repository/file/FileMessageRepository.class b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/repository/file/FileMessageRepository.class new file mode 100644 index 00000000..673c976e Binary files /dev/null and b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/repository/file/FileMessageRepository.class differ diff --git a/discodeit/build/classes/java/main/com/sprint/mission/discodeit/repository/file/FileUserRepository.class b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/repository/file/FileUserRepository.class new file mode 100644 index 00000000..05142666 Binary files /dev/null and b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/repository/file/FileUserRepository.class differ diff --git a/discodeit/build/classes/java/main/com/sprint/mission/discodeit/repository/jcf/JCFBinaryContentRepository.class b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/repository/jcf/JCFBinaryContentRepository.class new file mode 100644 index 00000000..a17189e4 Binary files /dev/null and b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/repository/jcf/JCFBinaryContentRepository.class differ diff --git a/discodeit/build/classes/java/main/com/sprint/mission/discodeit/repository/jcf/JCFChannelRepository.class b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/repository/jcf/JCFChannelRepository.class new file mode 100644 index 00000000..397ea947 Binary files /dev/null and b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/repository/jcf/JCFChannelRepository.class differ diff --git a/discodeit/build/classes/java/main/com/sprint/mission/discodeit/repository/jcf/JCFMessageRepository.class b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/repository/jcf/JCFMessageRepository.class new file mode 100644 index 00000000..e59dfe48 Binary files /dev/null and b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/repository/jcf/JCFMessageRepository.class differ diff --git a/discodeit/build/classes/java/main/com/sprint/mission/discodeit/repository/jcf/JCFReadStatusRepository.class b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/repository/jcf/JCFReadStatusRepository.class new file mode 100644 index 00000000..e8cb6e90 Binary files /dev/null and b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/repository/jcf/JCFReadStatusRepository.class differ diff --git a/discodeit/build/classes/java/main/com/sprint/mission/discodeit/repository/jcf/JCFUserRepository.class b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/repository/jcf/JCFUserRepository.class new file mode 100644 index 00000000..00ab8042 Binary files /dev/null and b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/repository/jcf/JCFUserRepository.class differ diff --git a/discodeit/build/classes/java/main/com/sprint/mission/discodeit/repository/jcf/JCFUserStatusRepository.class b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/repository/jcf/JCFUserStatusRepository.class new file mode 100644 index 00000000..c29dca17 Binary files /dev/null and b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/repository/jcf/JCFUserStatusRepository.class differ diff --git a/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/AuthService.class b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/AuthService.class new file mode 100644 index 00000000..bc43d01d Binary files /dev/null and b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/AuthService.class differ diff --git a/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/BinaryContentService.class b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/BinaryContentService.class new file mode 100644 index 00000000..61a92232 Binary files /dev/null and b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/BinaryContentService.class differ diff --git a/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/ChannelService.class b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/ChannelService.class new file mode 100644 index 00000000..b0f2bde7 Binary files /dev/null and b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/ChannelService.class differ diff --git a/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/DTO/AttachmentCreatRequest.class b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/DTO/AttachmentCreatRequest.class new file mode 100644 index 00000000..0a3e7df8 Binary files /dev/null and b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/DTO/AttachmentCreatRequest.class differ diff --git a/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/DTO/BinaryContentCreateRequest.class b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/DTO/BinaryContentCreateRequest.class new file mode 100644 index 00000000..40dd4515 Binary files /dev/null and b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/DTO/BinaryContentCreateRequest.class differ diff --git a/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/DTO/Channel/ChannelFindRespone.class b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/DTO/Channel/ChannelFindRespone.class new file mode 100644 index 00000000..db549769 Binary files /dev/null and b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/DTO/Channel/ChannelFindRespone.class differ diff --git a/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/DTO/Channel/ChannelRespone.class b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/DTO/Channel/ChannelRespone.class new file mode 100644 index 00000000..817e61a8 Binary files /dev/null and b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/DTO/Channel/ChannelRespone.class differ diff --git a/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/DTO/Channel/ChannelUpdateRequest.class b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/DTO/Channel/ChannelUpdateRequest.class new file mode 100644 index 00000000..dc8ed128 Binary files /dev/null and b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/DTO/Channel/ChannelUpdateRequest.class differ diff --git a/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/DTO/Channel/PrivateChannelCreatRequest.class b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/DTO/Channel/PrivateChannelCreatRequest.class new file mode 100644 index 00000000..a0c68cda Binary files /dev/null and b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/DTO/Channel/PrivateChannelCreatRequest.class differ diff --git a/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/DTO/Channel/PublicChannelCreatRequest.class b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/DTO/Channel/PublicChannelCreatRequest.class new file mode 100644 index 00000000..947c5941 Binary files /dev/null and b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/DTO/Channel/PublicChannelCreatRequest.class differ diff --git a/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/DTO/LoginRequest.class b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/DTO/LoginRequest.class new file mode 100644 index 00000000..0e6b02d5 Binary files /dev/null and b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/DTO/LoginRequest.class differ diff --git a/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/DTO/Message/MessageCreateRequest.class b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/DTO/Message/MessageCreateRequest.class new file mode 100644 index 00000000..250b5de4 Binary files /dev/null and b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/DTO/Message/MessageCreateRequest.class differ diff --git a/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/DTO/Message/MessageResponse.class b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/DTO/Message/MessageResponse.class new file mode 100644 index 00000000..c929096e Binary files /dev/null and b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/DTO/Message/MessageResponse.class differ diff --git a/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/DTO/Message/MessageUpdateRequest.class b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/DTO/Message/MessageUpdateRequest.class new file mode 100644 index 00000000..c79d1529 Binary files /dev/null and b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/DTO/Message/MessageUpdateRequest.class differ diff --git a/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/DTO/ReadStatusCreateRequest.class b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/DTO/ReadStatusCreateRequest.class new file mode 100644 index 00000000..921c23fd Binary files /dev/null and b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/DTO/ReadStatusCreateRequest.class differ diff --git a/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/DTO/ReadStatusUpdateRequest.class b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/DTO/ReadStatusUpdateRequest.class new file mode 100644 index 00000000..0d056e85 Binary files /dev/null and b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/DTO/ReadStatusUpdateRequest.class differ diff --git a/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/DTO/User/UserCreatRequest.class b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/DTO/User/UserCreatRequest.class new file mode 100644 index 00000000..78c6320f Binary files /dev/null and b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/DTO/User/UserCreatRequest.class differ diff --git a/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/DTO/User/UserResponse.class b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/DTO/User/UserResponse.class new file mode 100644 index 00000000..4ee46d23 Binary files /dev/null and b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/DTO/User/UserResponse.class differ diff --git a/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/DTO/User/UserUpdateRequest.class b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/DTO/User/UserUpdateRequest.class new file mode 100644 index 00000000..3b167568 Binary files /dev/null and b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/DTO/User/UserUpdateRequest.class differ diff --git a/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/DTO/UserStatus/UserStatusCreateRequest.class b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/DTO/UserStatus/UserStatusCreateRequest.class new file mode 100644 index 00000000..1209c70e Binary files /dev/null and b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/DTO/UserStatus/UserStatusCreateRequest.class differ diff --git a/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/DTO/UserStatus/UserStatusUpdateByUserIdRequest.class b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/DTO/UserStatus/UserStatusUpdateByUserIdRequest.class new file mode 100644 index 00000000..257a1f0e Binary files /dev/null and b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/DTO/UserStatus/UserStatusUpdateByUserIdRequest.class differ diff --git a/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/DTO/UserStatus/UserStatusUpdateRequest.class b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/DTO/UserStatus/UserStatusUpdateRequest.class new file mode 100644 index 00000000..a571202e Binary files /dev/null and b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/DTO/UserStatus/UserStatusUpdateRequest.class differ diff --git a/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/MessageService.class b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/MessageService.class new file mode 100644 index 00000000..c264d354 Binary files /dev/null and b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/MessageService.class differ diff --git a/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/ReadStatusService.class b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/ReadStatusService.class new file mode 100644 index 00000000..2f22ad13 Binary files /dev/null and b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/ReadStatusService.class differ diff --git a/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/UserService.class b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/UserService.class new file mode 100644 index 00000000..4487eec9 Binary files /dev/null and b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/UserService.class differ diff --git a/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/UserStatusService.class b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/UserStatusService.class new file mode 100644 index 00000000..7f74dc4a Binary files /dev/null and b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/UserStatusService.class differ diff --git a/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/basic/BasicAuthService.class b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/basic/BasicAuthService.class new file mode 100644 index 00000000..4d893f3f Binary files /dev/null and b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/basic/BasicAuthService.class differ diff --git a/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/basic/BasicBinaryContentService.class b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/basic/BasicBinaryContentService.class new file mode 100644 index 00000000..483dc4b9 Binary files /dev/null and b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/basic/BasicBinaryContentService.class differ diff --git a/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/basic/BasicChannelService.class b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/basic/BasicChannelService.class new file mode 100644 index 00000000..ae0ed5ed Binary files /dev/null and b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/basic/BasicChannelService.class differ diff --git a/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/basic/BasicMessageService.class b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/basic/BasicMessageService.class new file mode 100644 index 00000000..7acf9d4b Binary files /dev/null and b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/basic/BasicMessageService.class differ diff --git a/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/basic/BasicReadStatusService.class b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/basic/BasicReadStatusService.class new file mode 100644 index 00000000..9bb90cc7 Binary files /dev/null and b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/basic/BasicReadStatusService.class differ diff --git a/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/basic/BasicUserService.class b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/basic/BasicUserService.class new file mode 100644 index 00000000..ded20fc3 Binary files /dev/null and b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/basic/BasicUserService.class differ diff --git a/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/basic/BasicUserStatusService.class b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/basic/BasicUserStatusService.class new file mode 100644 index 00000000..a89b408e Binary files /dev/null and b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/service/basic/BasicUserStatusService.class differ diff --git a/discodeit/build/classes/java/main/com/sprint/mission/discodeit/status/BinaryContentInterface.class b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/status/BinaryContentInterface.class new file mode 100644 index 00000000..4d09f587 Binary files /dev/null and b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/status/BinaryContentInterface.class differ diff --git a/discodeit/build/classes/java/main/com/sprint/mission/discodeit/status/ReadStatusInterface.class b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/status/ReadStatusInterface.class new file mode 100644 index 00000000..ebfb4d1c Binary files /dev/null and b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/status/ReadStatusInterface.class differ diff --git a/discodeit/build/classes/java/main/com/sprint/mission/discodeit/status/UserStatusInterface.class b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/status/UserStatusInterface.class new file mode 100644 index 00000000..2b0ba29c Binary files /dev/null and b/discodeit/build/classes/java/main/com/sprint/mission/discodeit/status/UserStatusInterface.class differ diff --git a/discodeit/build/resources/main/application.yaml b/discodeit/build/resources/main/application.yaml new file mode 100644 index 00000000..67790ce5 --- /dev/null +++ b/discodeit/build/resources/main/application.yaml @@ -0,0 +1,3 @@ +spring: + application: + name: "disodeit" \ No newline at end of file diff --git a/discodeit/build/tmp/compileJava/compileTransaction/stash-dir/BasicBinaryContentService.class.uniqueId1 b/discodeit/build/tmp/compileJava/compileTransaction/stash-dir/BasicBinaryContentService.class.uniqueId1 new file mode 100644 index 00000000..5d5bd6fe Binary files /dev/null and b/discodeit/build/tmp/compileJava/compileTransaction/stash-dir/BasicBinaryContentService.class.uniqueId1 differ diff --git a/discodeit/build/tmp/compileJava/compileTransaction/stash-dir/BasicChannelService.class.uniqueId16 b/discodeit/build/tmp/compileJava/compileTransaction/stash-dir/BasicChannelService.class.uniqueId16 new file mode 100644 index 00000000..a5849a14 Binary files /dev/null and b/discodeit/build/tmp/compileJava/compileTransaction/stash-dir/BasicChannelService.class.uniqueId16 differ diff --git a/discodeit/build/tmp/compileJava/compileTransaction/stash-dir/BasicMessageService.class.uniqueId7 b/discodeit/build/tmp/compileJava/compileTransaction/stash-dir/BasicMessageService.class.uniqueId7 new file mode 100644 index 00000000..ed6bd748 Binary files /dev/null and b/discodeit/build/tmp/compileJava/compileTransaction/stash-dir/BasicMessageService.class.uniqueId7 differ diff --git a/discodeit/build/tmp/compileJava/compileTransaction/stash-dir/BasicReadStatusService.class.uniqueId0 b/discodeit/build/tmp/compileJava/compileTransaction/stash-dir/BasicReadStatusService.class.uniqueId0 new file mode 100644 index 00000000..d7d9b1a7 Binary files /dev/null and b/discodeit/build/tmp/compileJava/compileTransaction/stash-dir/BasicReadStatusService.class.uniqueId0 differ diff --git a/discodeit/build/tmp/compileJava/compileTransaction/stash-dir/BasicUserService.class.uniqueId19 b/discodeit/build/tmp/compileJava/compileTransaction/stash-dir/BasicUserService.class.uniqueId19 new file mode 100644 index 00000000..5aa2e688 Binary files /dev/null and b/discodeit/build/tmp/compileJava/compileTransaction/stash-dir/BasicUserService.class.uniqueId19 differ diff --git a/discodeit/build/tmp/compileJava/compileTransaction/stash-dir/BasicUserStatusService.class.uniqueId3 b/discodeit/build/tmp/compileJava/compileTransaction/stash-dir/BasicUserStatusService.class.uniqueId3 new file mode 100644 index 00000000..346295d8 Binary files /dev/null and b/discodeit/build/tmp/compileJava/compileTransaction/stash-dir/BasicUserStatusService.class.uniqueId3 differ diff --git a/discodeit/build/tmp/compileJava/compileTransaction/stash-dir/BinaryContent.class.uniqueId15 b/discodeit/build/tmp/compileJava/compileTransaction/stash-dir/BinaryContent.class.uniqueId15 new file mode 100644 index 00000000..b9e3c9ec Binary files /dev/null and b/discodeit/build/tmp/compileJava/compileTransaction/stash-dir/BinaryContent.class.uniqueId15 differ diff --git a/discodeit/build/tmp/compileJava/compileTransaction/stash-dir/BinaryContentInterface.class.uniqueId17 b/discodeit/build/tmp/compileJava/compileTransaction/stash-dir/BinaryContentInterface.class.uniqueId17 new file mode 100644 index 00000000..42b35da0 Binary files /dev/null and b/discodeit/build/tmp/compileJava/compileTransaction/stash-dir/BinaryContentInterface.class.uniqueId17 differ diff --git a/discodeit/build/tmp/compileJava/compileTransaction/stash-dir/BinaryContentService.class.uniqueId14 b/discodeit/build/tmp/compileJava/compileTransaction/stash-dir/BinaryContentService.class.uniqueId14 new file mode 100644 index 00000000..5e0ee202 Binary files /dev/null and b/discodeit/build/tmp/compileJava/compileTransaction/stash-dir/BinaryContentService.class.uniqueId14 differ diff --git a/discodeit/build/tmp/compileJava/compileTransaction/stash-dir/DiscodeitApplication$JavaApplication.class.uniqueId12 b/discodeit/build/tmp/compileJava/compileTransaction/stash-dir/DiscodeitApplication$JavaApplication.class.uniqueId12 new file mode 100644 index 00000000..e578c3f4 Binary files /dev/null and b/discodeit/build/tmp/compileJava/compileTransaction/stash-dir/DiscodeitApplication$JavaApplication.class.uniqueId12 differ diff --git a/discodeit/build/tmp/compileJava/compileTransaction/stash-dir/DiscodeitApplication.class.uniqueId22 b/discodeit/build/tmp/compileJava/compileTransaction/stash-dir/DiscodeitApplication.class.uniqueId22 new file mode 100644 index 00000000..412ae776 Binary files /dev/null and b/discodeit/build/tmp/compileJava/compileTransaction/stash-dir/DiscodeitApplication.class.uniqueId22 differ diff --git a/discodeit/build/tmp/compileJava/compileTransaction/stash-dir/FileBinaryContentRepository.class.uniqueId23 b/discodeit/build/tmp/compileJava/compileTransaction/stash-dir/FileBinaryContentRepository.class.uniqueId23 new file mode 100644 index 00000000..8488f8d4 Binary files /dev/null and b/discodeit/build/tmp/compileJava/compileTransaction/stash-dir/FileBinaryContentRepository.class.uniqueId23 differ diff --git a/discodeit/build/tmp/compileJava/compileTransaction/stash-dir/JCFBinaryContentRepository.class.uniqueId9 b/discodeit/build/tmp/compileJava/compileTransaction/stash-dir/JCFBinaryContentRepository.class.uniqueId9 new file mode 100644 index 00000000..8e8a361f Binary files /dev/null and b/discodeit/build/tmp/compileJava/compileTransaction/stash-dir/JCFBinaryContentRepository.class.uniqueId9 differ diff --git a/discodeit/build/tmp/compileJava/compileTransaction/stash-dir/JCFReadStatusRepository.class.uniqueId24 b/discodeit/build/tmp/compileJava/compileTransaction/stash-dir/JCFReadStatusRepository.class.uniqueId24 new file mode 100644 index 00000000..957eea6a Binary files /dev/null and b/discodeit/build/tmp/compileJava/compileTransaction/stash-dir/JCFReadStatusRepository.class.uniqueId24 differ diff --git a/discodeit/build/tmp/compileJava/compileTransaction/stash-dir/JCFUserStatusRepository.class.uniqueId2 b/discodeit/build/tmp/compileJava/compileTransaction/stash-dir/JCFUserStatusRepository.class.uniqueId2 new file mode 100644 index 00000000..906e0fd2 Binary files /dev/null and b/discodeit/build/tmp/compileJava/compileTransaction/stash-dir/JCFUserStatusRepository.class.uniqueId2 differ diff --git a/discodeit/build/tmp/compileJava/compileTransaction/stash-dir/ReadStatus.class.uniqueId8 b/discodeit/build/tmp/compileJava/compileTransaction/stash-dir/ReadStatus.class.uniqueId8 new file mode 100644 index 00000000..ac6663d3 Binary files /dev/null and b/discodeit/build/tmp/compileJava/compileTransaction/stash-dir/ReadStatus.class.uniqueId8 differ diff --git a/discodeit/build/tmp/compileJava/compileTransaction/stash-dir/ReadStatusInterface.class.uniqueId11 b/discodeit/build/tmp/compileJava/compileTransaction/stash-dir/ReadStatusInterface.class.uniqueId11 new file mode 100644 index 00000000..381519f4 Binary files /dev/null and b/discodeit/build/tmp/compileJava/compileTransaction/stash-dir/ReadStatusInterface.class.uniqueId11 differ diff --git a/discodeit/build/tmp/compileJava/compileTransaction/stash-dir/ReadStatusService.class.uniqueId21 b/discodeit/build/tmp/compileJava/compileTransaction/stash-dir/ReadStatusService.class.uniqueId21 new file mode 100644 index 00000000..d08d431b Binary files /dev/null and b/discodeit/build/tmp/compileJava/compileTransaction/stash-dir/ReadStatusService.class.uniqueId21 differ diff --git a/discodeit/build/tmp/compileJava/compileTransaction/stash-dir/UserCreatRequest.class.uniqueId10 b/discodeit/build/tmp/compileJava/compileTransaction/stash-dir/UserCreatRequest.class.uniqueId10 new file mode 100644 index 00000000..6952c2b6 Binary files /dev/null and b/discodeit/build/tmp/compileJava/compileTransaction/stash-dir/UserCreatRequest.class.uniqueId10 differ diff --git a/discodeit/build/tmp/compileJava/compileTransaction/stash-dir/UserService.class.uniqueId25 b/discodeit/build/tmp/compileJava/compileTransaction/stash-dir/UserService.class.uniqueId25 new file mode 100644 index 00000000..4487eec9 Binary files /dev/null and b/discodeit/build/tmp/compileJava/compileTransaction/stash-dir/UserService.class.uniqueId25 differ diff --git a/discodeit/build/tmp/compileJava/compileTransaction/stash-dir/UserStatus.class.uniqueId18 b/discodeit/build/tmp/compileJava/compileTransaction/stash-dir/UserStatus.class.uniqueId18 new file mode 100644 index 00000000..68a14649 Binary files /dev/null and b/discodeit/build/tmp/compileJava/compileTransaction/stash-dir/UserStatus.class.uniqueId18 differ diff --git a/discodeit/build/tmp/compileJava/compileTransaction/stash-dir/UserStatusCreateRequest.class.uniqueId4 b/discodeit/build/tmp/compileJava/compileTransaction/stash-dir/UserStatusCreateRequest.class.uniqueId4 new file mode 100644 index 00000000..445e0cc6 Binary files /dev/null and b/discodeit/build/tmp/compileJava/compileTransaction/stash-dir/UserStatusCreateRequest.class.uniqueId4 differ diff --git a/discodeit/build/tmp/compileJava/compileTransaction/stash-dir/UserStatusInterface.class.uniqueId20 b/discodeit/build/tmp/compileJava/compileTransaction/stash-dir/UserStatusInterface.class.uniqueId20 new file mode 100644 index 00000000..43032431 Binary files /dev/null and b/discodeit/build/tmp/compileJava/compileTransaction/stash-dir/UserStatusInterface.class.uniqueId20 differ diff --git a/discodeit/build/tmp/compileJava/compileTransaction/stash-dir/UserStatusService.class.uniqueId26 b/discodeit/build/tmp/compileJava/compileTransaction/stash-dir/UserStatusService.class.uniqueId26 new file mode 100644 index 00000000..f1a57ebe Binary files /dev/null and b/discodeit/build/tmp/compileJava/compileTransaction/stash-dir/UserStatusService.class.uniqueId26 differ diff --git a/discodeit/build/tmp/compileJava/compileTransaction/stash-dir/UserStatusUpdateByUserIdRequest.class.uniqueId13 b/discodeit/build/tmp/compileJava/compileTransaction/stash-dir/UserStatusUpdateByUserIdRequest.class.uniqueId13 new file mode 100644 index 00000000..ff94def4 Binary files /dev/null and b/discodeit/build/tmp/compileJava/compileTransaction/stash-dir/UserStatusUpdateByUserIdRequest.class.uniqueId13 differ diff --git a/discodeit/build/tmp/compileJava/compileTransaction/stash-dir/UserStatusUpdateRequest.class.uniqueId5 b/discodeit/build/tmp/compileJava/compileTransaction/stash-dir/UserStatusUpdateRequest.class.uniqueId5 new file mode 100644 index 00000000..2286aba7 Binary files /dev/null and b/discodeit/build/tmp/compileJava/compileTransaction/stash-dir/UserStatusUpdateRequest.class.uniqueId5 differ diff --git a/discodeit/build/tmp/compileJava/compileTransaction/stash-dir/UserUpdateRequest.class.uniqueId6 b/discodeit/build/tmp/compileJava/compileTransaction/stash-dir/UserUpdateRequest.class.uniqueId6 new file mode 100644 index 00000000..fd1ff642 Binary files /dev/null and b/discodeit/build/tmp/compileJava/compileTransaction/stash-dir/UserUpdateRequest.class.uniqueId6 differ diff --git a/discodeit/build/tmp/compileJava/previous-compilation-data.bin b/discodeit/build/tmp/compileJava/previous-compilation-data.bin new file mode 100644 index 00000000..27aa092e Binary files /dev/null and b/discodeit/build/tmp/compileJava/previous-compilation-data.bin differ diff --git a/discodeit/gradle/wrapper/gradle-wrapper.jar b/discodeit/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 00000000..249e5832 Binary files /dev/null and b/discodeit/gradle/wrapper/gradle-wrapper.jar differ diff --git a/discodeit/gradle/wrapper/gradle-wrapper.properties b/discodeit/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 00000000..ce219115 --- /dev/null +++ b/discodeit/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Mon Dec 02 14:48:55 KST 2024 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/discodeit/gradlew b/discodeit/gradlew new file mode 100755 index 00000000..1b6c7873 --- /dev/null +++ b/discodeit/gradlew @@ -0,0 +1,234 @@ +#!/bin/sh + +# +# Copyright © 2015-2021 the original authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# +############################################################################## + +# Attempt to set APP_HOME + +# Resolve links: $0 may be a link +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac +done + +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit + +APP_NAME="Gradle" +APP_BASE_NAME=${0##*/} + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD=maximum + +warn () { + echo "$*" +} >&2 + +die () { + echo + echo "$*" + echo + exit 1 +} >&2 + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD=$JAVA_HOME/jre/sh/java + else + JAVACMD=$JAVA_HOME/bin/java + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD=java + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac +fi + +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + +# Collect all arguments for the java command; +# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of +# shell script including quotes and variable substitutions, so put them in +# double quotes to make sure that they get re-expanded; and +# * put everything else in single quotes, so that it's not re-expanded. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + +exec "$JAVACMD" "$@" diff --git a/discodeit/gradlew.bat b/discodeit/gradlew.bat new file mode 100644 index 00000000..107acd32 --- /dev/null +++ b/discodeit/gradlew.bat @@ -0,0 +1,89 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/discodeit/settings.gradle b/discodeit/settings.gradle new file mode 100644 index 00000000..139597f9 --- /dev/null +++ b/discodeit/settings.gradle @@ -0,0 +1,2 @@ + + diff --git a/discodeit/src/main/java/com/sprint/mission/discodeit/DiscodeitApplication.java b/discodeit/src/main/java/com/sprint/mission/discodeit/DiscodeitApplication.java new file mode 100644 index 00000000..2dd07968 --- /dev/null +++ b/discodeit/src/main/java/com/sprint/mission/discodeit/DiscodeitApplication.java @@ -0,0 +1,56 @@ +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.DTO.Message.MessageCreateRequest; +import com.sprint.mission.discodeit.service.DTO.User.UserCreatRequest; +import com.sprint.mission.discodeit.service.MessageService; +import com.sprint.mission.discodeit.service.UserService; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.ConfigurableApplicationContext; + +import java.util.List; + +import static com.sprint.mission.discodeit.DiscodeitApplication.JavaApplication.*; + +@SpringBootApplication +public class DiscodeitApplication { + + 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); + + } + + public class JavaApplication { + static User setupUser(UserService userService) { + UserCreatRequest request = new UserCreatRequest("woody", "woody@codeit.com", "woody1234",null); + return userService.create(request); + } + + 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(new MessageCreateRequest("안녕하세요.", channel.getId(), author.getId(), List.of())); + System.out.println("메시지 생성: " + message.getId()); + } + + + } +} diff --git a/discodeit/src/main/java/com/sprint/mission/discodeit/JavaApplication.java b/discodeit/src/main/java/com/sprint/mission/discodeit/JavaApplication.java new file mode 100644 index 00000000..d3f90d08 --- /dev/null +++ b/discodeit/src/main/java/com/sprint/mission/discodeit/JavaApplication.java @@ -0,0 +1,55 @@ +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.DTO.User.UserCreatRequest; +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 { + static User setupUser(UserService userService) { + UserCreatRequest request = new UserCreatRequest( + "woody", "woody@codeit.com", "woody1234", null); + return userService.create(request); + } + + 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("메시지 생성: " + message.getId()); + } + + 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); + } +}*/ diff --git a/discodeit/src/main/java/com/sprint/mission/discodeit/entity/BinaryContent.java b/discodeit/src/main/java/com/sprint/mission/discodeit/entity/BinaryContent.java new file mode 100644 index 00000000..60fce88e --- /dev/null +++ b/discodeit/src/main/java/com/sprint/mission/discodeit/entity/BinaryContent.java @@ -0,0 +1,23 @@ +package com.sprint.mission.discodeit.entity; + +import lombok.Getter; + +import java.time.Instant; +import java.util.UUID; + +@Getter +public class BinaryContent { + + private final UUID id; + private final UUID userId; + private final UUID messageId; + private final Instant createdAt; + + public BinaryContent(UUID id, UUID userId, UUID messageId,Instant createdAt) { + this.id = id; + this.createdAt = createdAt; + this.userId = userId; + this.messageId = messageId; + + } +} diff --git a/discodeit/src/main/java/com/sprint/mission/discodeit/entity/Channel.java b/discodeit/src/main/java/com/sprint/mission/discodeit/entity/Channel.java new file mode 100644 index 00000000..780d2ee0 --- /dev/null +++ b/discodeit/src/main/java/com/sprint/mission/discodeit/entity/Channel.java @@ -0,0 +1,69 @@ +package com.sprint.mission.discodeit.entity; + +import lombok.Getter; + +import java.io.Serializable; +import java.time.Instant; +import java.util.UUID; + +@Getter +public class Channel implements Serializable { + + private static final long serialVersionUID = 1L; + private UUID id; + private Instant createdAt; + private Long updatedAt; + // + private ChannelType type; + private String name; + private String description; + + public Channel(ChannelType type, String name, String description) { + this.id = UUID.randomUUID(); + this.createdAt = Instant.now(); //.getEpochSecond(); + // + this.type = type; + this.name = name; + this.description = description; + } + + public UUID getId() { + return id; + } + + public Instant getCreatedAt() { + return createdAt; + } + + public Long getUpdatedAt() { + return updatedAt; + } + + public ChannelType getType() { + return type; + } + + public String getName() { + return name; + } + + public String getDescription() { + return 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().getEpochSecond(); + } + } +} diff --git a/discodeit/src/main/java/com/sprint/mission/discodeit/entity/ChannelType.java b/discodeit/src/main/java/com/sprint/mission/discodeit/entity/ChannelType.java new file mode 100644 index 00000000..9a2ff3f0 --- /dev/null +++ b/discodeit/src/main/java/com/sprint/mission/discodeit/entity/ChannelType.java @@ -0,0 +1,6 @@ +package com.sprint.mission.discodeit.entity; + +public enum ChannelType { + PUBLIC, + PRIVATE, +} diff --git a/discodeit/src/main/java/com/sprint/mission/discodeit/entity/Message.java b/discodeit/src/main/java/com/sprint/mission/discodeit/entity/Message.java new file mode 100644 index 00000000..e7ecde0d --- /dev/null +++ b/discodeit/src/main/java/com/sprint/mission/discodeit/entity/Message.java @@ -0,0 +1,67 @@ +package com.sprint.mission.discodeit.entity; + +import com.sprint.mission.discodeit.service.DTO.AttachmentCreatRequest; +import lombok.Getter; + +import java.io.Serializable; +import java.time.Instant; +import java.util.List; +import java.util.UUID; +@Getter +public class Message implements Serializable { + private static final long serialVersionUID = 1L; + + private UUID id; + private Instant createdAt; + private Long updatedAt; + // + private String content; + // + private UUID channelId; + private UUID authorId; + + public Message(String content, UUID channelId, UUID authorId, List attachments) { + this.id = UUID.randomUUID(); + this.createdAt = Instant.now();//.getEpochSecond(); + // + this.content = content; + this.channelId = channelId; + this.authorId = authorId; + } + + public UUID getId() { + return id; + } + + public Instant getCreatedAt() { + return createdAt; + } + + public Long getUpdatedAt() { + return updatedAt; + } + + public String getContent() { + return content; + } + + public UUID getChannelId() { + return channelId; + } + + public UUID getAuthorId() { + return authorId; + } + + public void update(String newContent) { + boolean anyValueUpdated = false; + if (newContent != null && !newContent.equals(this.content)) { + this.content = newContent; + anyValueUpdated = true; + } + + if (anyValueUpdated) { + this.updatedAt = Instant.now().getEpochSecond(); + } + } +} diff --git a/discodeit/src/main/java/com/sprint/mission/discodeit/entity/ReadStatus.java b/discodeit/src/main/java/com/sprint/mission/discodeit/entity/ReadStatus.java new file mode 100644 index 00000000..1cfee68d --- /dev/null +++ b/discodeit/src/main/java/com/sprint/mission/discodeit/entity/ReadStatus.java @@ -0,0 +1,34 @@ +package com.sprint.mission.discodeit.entity; + + +import lombok.Getter; + +import java.time.Instant; +import java.util.UUID; + +@Getter +public class ReadStatus { + + private UUID id; + private UUID userId; + private UUID channelId; + private Instant createdAt; + private Instant updatedAt; + private Instant lastRead; + + + public ReadStatus(UUID id, UUID userId, UUID channelId,Instant createdAt, Instant updatedAt, Instant lastRead) { + this.id = id; + this.userId = userId; + this.channelId = channelId; + this.createdAt = createdAt; + this.updatedAt = updatedAt; + this.lastRead = lastRead; + } + +public void updateLastRead(Instant time){ + this.lastRead = time; + this.updatedAt = time; +} + +} diff --git a/discodeit/src/main/java/com/sprint/mission/discodeit/entity/User.java b/discodeit/src/main/java/com/sprint/mission/discodeit/entity/User.java new file mode 100644 index 00000000..c1608e37 --- /dev/null +++ b/discodeit/src/main/java/com/sprint/mission/discodeit/entity/User.java @@ -0,0 +1,85 @@ +package com.sprint.mission.discodeit.entity; + +import lombok.Getter; + +import java.io.IOException; +import java.io.ObjectInputStream; +import java.io.Serializable; +import java.time.Instant; +import java.util.UUID; + +@Getter +public class User implements Serializable { + private static final long serialVersionUID = 1L; + + + private UUID id; + private Instant createdAt; + private Instant updatedAt; + // + private String username; + private String email; + private String password; + + public User(String username, String email, String password) { + this.id = UUID.randomUUID(); + this.createdAt = Instant.now();//.getEpochSecond(); + this.updatedAt = Instant.now(); + this.username = username; + this.email = email; + this.password = password; + } + + public UUID getId() { + return id; + } + + public Instant getCreatedAt() { + return createdAt; + } + + public Instant getUpdatedAt() { + return updatedAt; + } + + public String getUsername() { + return username; + } + + public String getEmail() { + return email; + } + + public String getPassword() { + return password; + } + + public void update(String newUsername, String newEmail, String newPassword) { + boolean anyValueUpdated = false; + if (newUsername != null && !newUsername.equals(this.username)) { + this.username = newUsername; + anyValueUpdated = true; + } + if (newEmail != null && !newEmail.equals(this.email)) { + this.email = newEmail; + anyValueUpdated = true; + } + if (newPassword != null && !newPassword.equals(this.password)) { + this.password = newPassword; + anyValueUpdated = true; + } + + if (anyValueUpdated) { + this.updatedAt = Instant.now();//.getEpochSecond(); + } + } + +// private void readObject(ObjectInputStream objectInputStream) throws IOException,ClassNotFoundException { +// objectInputStream.defaultReadObject(); +// +// if (createdAt == null && objectInputStream.readLong() != 0) { +// long epochSeconds = objectInputStream.readLong(); +// this.createdAt = Instant.ofEpochSecond(epochSeconds); +// } +// } +} diff --git a/discodeit/src/main/java/com/sprint/mission/discodeit/entity/UserStatus.java b/discodeit/src/main/java/com/sprint/mission/discodeit/entity/UserStatus.java new file mode 100644 index 00000000..ccdfbe79 --- /dev/null +++ b/discodeit/src/main/java/com/sprint/mission/discodeit/entity/UserStatus.java @@ -0,0 +1,37 @@ +package com.sprint.mission.discodeit.entity; + +import lombok.Getter; + +import java.time.Duration; +import java.time.Instant; +import java.util.UUID; + +@Getter +public class UserStatus { + private static final Duration ONLINE_THRESHOLD = Duration.ofMinutes(5); + //ONLINE_THRESHOLD = 온라인 상태의 기준점 + private UUID id; + private UUID userId; + private Instant createdAt; + private Instant updatedAt; + private Instant lastView; + + public UserStatus(UUID id, UUID userId, Instant createdAt, Instant updatedAt, Instant lastView) { + this.id = UUID.randomUUID(); + this.userId = UUID.randomUUID(); + this.createdAt = Instant.now(); + this.updatedAt = Instant.now(); + this.lastView = Instant.now(); + } + + public boolean online() { + Instant onlineLimit = Instant.now().minus(ONLINE_THRESHOLD); + return lastView.isAfter(onlineLimit); + } + + public void updateLastView(Instant now) { + this.lastView = now; + this.updatedAt = now; + } + +} diff --git a/discodeit/src/main/java/com/sprint/mission/discodeit/repository/ChannelRepository.java b/discodeit/src/main/java/com/sprint/mission/discodeit/repository/ChannelRepository.java new file mode 100644 index 00000000..01a241c4 --- /dev/null +++ b/discodeit/src/main/java/com/sprint/mission/discodeit/repository/ChannelRepository.java @@ -0,0 +1,18 @@ +package com.sprint.mission.discodeit.repository; + +import com.sprint.mission.discodeit.entity.Channel; + +import java.util.List; +import java.util.Optional; +import java.util.UUID; + +public interface ChannelRepository { + Channel save(Channel channel); + Optional findById(UUID id); + List findAll(); + boolean existsById(UUID id); + void deleteById(UUID id); + + List findAllPublic(); + List findPrivateByUserId(UUID userId); +} diff --git a/discodeit/src/main/java/com/sprint/mission/discodeit/repository/MessageRepository.java b/discodeit/src/main/java/com/sprint/mission/discodeit/repository/MessageRepository.java new file mode 100644 index 00000000..c9a52b90 --- /dev/null +++ b/discodeit/src/main/java/com/sprint/mission/discodeit/repository/MessageRepository.java @@ -0,0 +1,22 @@ +package com.sprint.mission.discodeit.repository; + +import com.sprint.mission.discodeit.entity.Message; + +import java.time.Instant; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.UUID; + +public interface MessageRepository { + Message save(Message message); + Optional findById(UUID id); + List findAllByChannelId(UUID channelId); + + List findAll(); + + boolean existsById(UUID id); + void deleteById(UUID id); + void deleteAllByChannel(UUID channelId); + Optional findLatestByChannelId(UUID channelId); +} diff --git a/discodeit/src/main/java/com/sprint/mission/discodeit/repository/UserRepository.java b/discodeit/src/main/java/com/sprint/mission/discodeit/repository/UserRepository.java new file mode 100644 index 00000000..99583217 --- /dev/null +++ b/discodeit/src/main/java/com/sprint/mission/discodeit/repository/UserRepository.java @@ -0,0 +1,18 @@ +package com.sprint.mission.discodeit.repository; + +import com.sprint.mission.discodeit.entity.User; + +import java.util.List; +import java.util.Optional; +import java.util.UUID; + +public interface UserRepository { + User save(User user); + Optional findById(UUID id); + List findAll(); + boolean existsById(UUID id); + void deleteById(UUID id); + Optional findByUsernameAndPassword(String username, String password); + boolean existsByUserName(String username); + boolean existsByEmail(String email); +} diff --git a/discodeit/src/main/java/com/sprint/mission/discodeit/repository/file/FileBinaryContentRepository.java b/discodeit/src/main/java/com/sprint/mission/discodeit/repository/file/FileBinaryContentRepository.java new file mode 100644 index 00000000..f7782dc9 --- /dev/null +++ b/discodeit/src/main/java/com/sprint/mission/discodeit/repository/file/FileBinaryContentRepository.java @@ -0,0 +1,67 @@ +package com.sprint.mission.discodeit.repository.file; + +import com.sprint.mission.discodeit.status.BinaryContentInterface; +import com.sprint.mission.discodeit.entity.BinaryContent; + +import java.io.*; +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; +import java.util.UUID; + +public class FileBinaryContentRepository implements BinaryContentInterface { + private final File file = new File("binary content"); + private List load() { + if (!file.exists()) { + return new ArrayList<>(); + } + try (ObjectInputStream objectInputStream = new ObjectInputStream(new FileInputStream(file))) { + return (List) objectInputStream.readObject(); + }catch (Exception e) { + throw new RuntimeException(e); + } + } + private void saveAll(List contents) { + try (ObjectOutputStream objectOutputStream = new ObjectOutputStream(new FileOutputStream(file))) { + objectOutputStream.writeObject(contents); + }catch (Exception e) { + throw new RuntimeException(e); + } + } + + + @Override + public void deleteById(UUID id) { + List contents = load(); + contents.removeIf(binaryContent -> binaryContent.getId().equals(id)); + saveAll(contents); + } + + @Override + public List findAllByIdIn(List ids) { + return load().stream() + .filter(binaryContent -> ids.contains(binaryContent.getId())) + .toList(); + } + + @Override + public Optional findById(UUID id) { + return load().stream() + .filter(binaryContent -> binaryContent.getId().equals(id)) + .findFirst(); + } + + @Override + public void save(BinaryContent binaryContent) { + List contents = load(); + contents.removeIf(content -> content.getId().equals(binaryContent.getId())); + contents.add(binaryContent); + } + + @Override + public void deleteByMessageId(UUID messageId) { + List contents = load(); + contents.removeIf(binaryContent -> binaryContent.getId().equals(messageId)); + saveAll(contents); + } +} diff --git a/discodeit/src/main/java/com/sprint/mission/discodeit/repository/file/FileChannelRepository.java b/discodeit/src/main/java/com/sprint/mission/discodeit/repository/file/FileChannelRepository.java new file mode 100644 index 00000000..958a5575 --- /dev/null +++ b/discodeit/src/main/java/com/sprint/mission/discodeit/repository/file/FileChannelRepository.java @@ -0,0 +1,111 @@ +package com.sprint.mission.discodeit.repository.file; + +import com.sprint.mission.discodeit.entity.Channel; +import com.sprint.mission.discodeit.repository.ChannelRepository; +import org.springframework.stereotype.Repository; + +import java.io.*; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.List; +import java.util.Optional; +import java.util.UUID; +@Repository +public class FileChannelRepository implements ChannelRepository { + private final Path DIRECTORY; + private final String EXTENSION = ".ser"; + + public FileChannelRepository() { + this.DIRECTORY = Paths.get(System.getProperty("user.dir"), "file-data-map", Channel.class.getSimpleName()); + if (Files.notExists(DIRECTORY)) { + try { + Files.createDirectories(DIRECTORY); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + } + + private Path resolvePath(UUID id) { + return DIRECTORY.resolve(id + EXTENSION); + } + + @Override + public Channel save(Channel channel) { + Path path = resolvePath(channel.getId()); + try ( + FileOutputStream fos = new FileOutputStream(path.toFile()); + ObjectOutputStream oos = new ObjectOutputStream(fos) + ) { + oos.writeObject(channel); + } catch (IOException e) { + throw new RuntimeException(e); + } + return channel; + } + + @Override + public Optional findById(UUID id) { + Channel channelNullable = null; + Path path = resolvePath(id); + if (Files.exists(path)) { + try ( + FileInputStream fis = new FileInputStream(path.toFile()); + ObjectInputStream ois = new ObjectInputStream(fis) + ) { + channelNullable = (Channel) ois.readObject(); + } catch (IOException | ClassNotFoundException e) { + throw new RuntimeException(e); + } + } + return Optional.ofNullable(channelNullable); + } + + @Override + public List findAll() { + try { + return Files.list(DIRECTORY) + .filter(path -> path.toString().endsWith(EXTENSION)) + .map(path -> { + try ( + FileInputStream fis = new FileInputStream(path.toFile()); + ObjectInputStream ois = new ObjectInputStream(fis) + ) { + return (Channel) ois.readObject(); + } catch (IOException | ClassNotFoundException e) { + throw new RuntimeException(e); + } + }) + .toList(); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + @Override + public boolean existsById(UUID id) { + Path path = resolvePath(id); + return Files.exists(path); + } + + @Override + public void deleteById(UUID id) { + Path path = resolvePath(id); + try { + Files.delete(path); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + @Override + public List findPrivateByUserId(UUID userId) { + return List.of(); + } + + @Override + public List findAllPublic() { + return List.of(); + } +} diff --git a/discodeit/src/main/java/com/sprint/mission/discodeit/repository/file/FileMessageRepository.java b/discodeit/src/main/java/com/sprint/mission/discodeit/repository/file/FileMessageRepository.java new file mode 100644 index 00000000..d0d217f0 --- /dev/null +++ b/discodeit/src/main/java/com/sprint/mission/discodeit/repository/file/FileMessageRepository.java @@ -0,0 +1,122 @@ +package com.sprint.mission.discodeit.repository.file; + +import com.sprint.mission.discodeit.entity.Message; +import com.sprint.mission.discodeit.repository.MessageRepository; +import org.springframework.stereotype.Repository; + +import java.io.*; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.Comparator; +import java.util.List; +import java.util.Optional; +import java.util.UUID; +@Repository +public class FileMessageRepository implements MessageRepository { + private final Path DIRECTORY; + private final String EXTENSION = ".ser"; + + public FileMessageRepository() { + this.DIRECTORY = Paths.get(System.getProperty("user.dir"), "file-data-map", Message.class.getSimpleName()); + if (Files.notExists(DIRECTORY)) { + try { + Files.createDirectories(DIRECTORY); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + } + + private Path resolvePath(UUID id) { + return DIRECTORY.resolve(id + EXTENSION); + } + + @Override + public Message save(Message message) { + Path path = resolvePath(message.getId()); + try ( + FileOutputStream fos = new FileOutputStream(path.toFile()); + ObjectOutputStream oos = new ObjectOutputStream(fos) + ) { + oos.writeObject(message); + } catch (IOException e) { + throw new RuntimeException(e); + } + return message; + } + + @Override + public Optional findById(UUID id) { + Message messageNullable = null; + Path path = resolvePath(id); + if (Files.exists(path)) { + try ( + FileInputStream fis = new FileInputStream(path.toFile()); + ObjectInputStream ois = new ObjectInputStream(fis) + ) { + messageNullable = (Message) ois.readObject(); + } catch (IOException | ClassNotFoundException e) { + throw new RuntimeException(e); + } + } + return Optional.ofNullable(messageNullable); + } + + @Override + public List findAll() { + try { + return Files.list(DIRECTORY) + .filter(path -> path.toString().endsWith(EXTENSION)) + .map(path -> { + try ( + FileInputStream fis = new FileInputStream(path.toFile()); + ObjectInputStream ois = new ObjectInputStream(fis) + ) { + return (Message) ois.readObject(); + } catch (IOException | ClassNotFoundException e) { + throw new RuntimeException(e); + } + }) + .toList(); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + @Override + public boolean existsById(UUID id) { + Path path = resolvePath(id); + return Files.exists(path); + } + + @Override + public void deleteById(UUID id) { + Path path = resolvePath(id); + try { + Files.delete(path); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + @Override + public List findAllByChannelId(UUID channelId) { + return findAll().stream() + .filter(message -> message.getChannelId().equals(channelId)) + .toList(); + } + + @Override + public void deleteAllByChannel(UUID channelId) { + findAll().stream() + .filter(message -> message.getChannelId().equals(channelId)) + .forEach(message -> deleteById(message.getId())); + } + + @Override + public Optional findLatestByChannelId(UUID channelId) { + return findAllByChannelId(channelId).stream() + .max(Comparator.comparing(Message::getCreatedAt)); + } +} diff --git a/discodeit/src/main/java/com/sprint/mission/discodeit/repository/file/FileUserRepository.java b/discodeit/src/main/java/com/sprint/mission/discodeit/repository/file/FileUserRepository.java new file mode 100644 index 00000000..a4eb1362 --- /dev/null +++ b/discodeit/src/main/java/com/sprint/mission/discodeit/repository/file/FileUserRepository.java @@ -0,0 +1,120 @@ +package com.sprint.mission.discodeit.repository.file; + +import com.sprint.mission.discodeit.entity.User; +import com.sprint.mission.discodeit.repository.UserRepository; +import org.springframework.stereotype.Repository; + +import java.io.*; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.List; +import java.util.Optional; +import java.util.UUID; + +@Repository +public class FileUserRepository implements UserRepository { + private final Path DIRECTORY; + private final String EXTENSION = ".ser"; + + public FileUserRepository() { + this.DIRECTORY = Paths.get(System.getProperty("user.dir"), "file-data-map", User.class.getSimpleName()); + if (Files.notExists(DIRECTORY)) { + try { + Files.createDirectories(DIRECTORY); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + } + + private Path resolvePath(UUID id) { + return DIRECTORY.resolve(id + EXTENSION); + } + + @Override + public User save(User user) { + + Path path = resolvePath(user.getId()); + try ( + FileOutputStream fos = new FileOutputStream(path.toFile()); + ObjectOutputStream oos = new ObjectOutputStream(fos) + ) { + oos.writeObject(user); + } catch (IOException e) { + throw new RuntimeException(e); + } + return user; + } + + @Override + public Optional findById(UUID id) { + User userNullable = null; + Path path = resolvePath(id); + if (Files.exists(path)) { + try ( + FileInputStream fis = new FileInputStream(path.toFile()); + ObjectInputStream ois = new ObjectInputStream(fis) + ) { + userNullable = (User) ois.readObject(); + } catch (IOException | ClassNotFoundException e) { + throw new RuntimeException(e); + } + } + return Optional.ofNullable(userNullable); + } + + @Override + public List findAll() { + try { + return Files.list(DIRECTORY) + .filter(path -> path.toString().endsWith(EXTENSION)) + .map(path -> { + try ( + FileInputStream fis = new FileInputStream(path.toFile()); + ObjectInputStream ois = new ObjectInputStream(fis) + ) { + return (User) ois.readObject(); + } catch (IOException | ClassNotFoundException e) { + throw new RuntimeException(e); + } + }) + .toList(); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + @Override + public boolean existsById(UUID id) { + Path path = resolvePath(id); + return Files.exists(path); + } + + @Override + public void deleteById(UUID id) { + Path path = resolvePath(id); + try { + Files.delete(path); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + @Override + public Optional findByUsernameAndPassword(String username, String password) { + return Optional.empty(); + } + + @Override + public boolean existsByEmail(String email) { + return findAll().stream() + .anyMatch(user -> user.getEmail().equals(email)); + } + + @Override + public boolean existsByUserName(String username) { + return findAll().stream() + .anyMatch(user -> user.getUsername().equals(username)); + } +} diff --git a/discodeit/src/main/java/com/sprint/mission/discodeit/repository/jcf/JCFBinaryContentRepository.java b/discodeit/src/main/java/com/sprint/mission/discodeit/repository/jcf/JCFBinaryContentRepository.java new file mode 100644 index 00000000..3b35a54e --- /dev/null +++ b/discodeit/src/main/java/com/sprint/mission/discodeit/repository/jcf/JCFBinaryContentRepository.java @@ -0,0 +1,39 @@ +package com.sprint.mission.discodeit.repository.jcf; + +import com.sprint.mission.discodeit.status.BinaryContentInterface; +import com.sprint.mission.discodeit.entity.BinaryContent; +import org.springframework.stereotype.Repository; + +import java.util.*; +@Repository +public class JCFBinaryContentRepository implements BinaryContentInterface { + private final Map store = new HashMap<>(); + + @Override + public void save(BinaryContent binaryContent) { + store.put(binaryContent.getId(), binaryContent); + } + + @Override + public Optional findById(UUID id) { + return Optional.ofNullable(store.get(id)); + } + + @Override + public List findAllByIdIn(List ids) { + return ids.stream() + .map(store::get) + .filter(Objects::nonNull) + .toList(); + } + + @Override + public void deleteById(UUID id) { + store.remove(id); + } + + @Override + public void deleteByMessageId(UUID messageId) { + store.remove(messageId); + } +} diff --git a/discodeit/src/main/java/com/sprint/mission/discodeit/repository/jcf/JCFChannelRepository.java b/discodeit/src/main/java/com/sprint/mission/discodeit/repository/jcf/JCFChannelRepository.java new file mode 100644 index 00000000..a8f089bc --- /dev/null +++ b/discodeit/src/main/java/com/sprint/mission/discodeit/repository/jcf/JCFChannelRepository.java @@ -0,0 +1,52 @@ +package com.sprint.mission.discodeit.repository.jcf; + +import com.sprint.mission.discodeit.entity.Channel; +import com.sprint.mission.discodeit.repository.ChannelRepository; +import org.springframework.stereotype.Repository; +import org.springframework.stereotype.Service; + +import java.util.*; + +public class JCFChannelRepository implements ChannelRepository { + private final Map data; + + public JCFChannelRepository() { + this.data = new HashMap<>(); + } + + @Override + public Channel save(Channel channel) { + this.data.put(channel.getId(), channel); + return channel; + } + + @Override + public Optional findById(UUID id) { + return Optional.ofNullable(this.data.get(id)); + } + + @Override + public List findAll() { + return this.data.values().stream().toList(); + } + + @Override + public boolean existsById(UUID id) { + return this.data.containsKey(id); + } + + @Override + public void deleteById(UUID id) { + this.data.remove(id); + } + + @Override + public List findAllPublic() { + return List.of(); + } + + @Override + public List findPrivateByUserId(UUID userId) { + return List.of(); + } +} diff --git a/discodeit/src/main/java/com/sprint/mission/discodeit/repository/jcf/JCFMessageRepository.java b/discodeit/src/main/java/com/sprint/mission/discodeit/repository/jcf/JCFMessageRepository.java new file mode 100644 index 00000000..1c2fc241 --- /dev/null +++ b/discodeit/src/main/java/com/sprint/mission/discodeit/repository/jcf/JCFMessageRepository.java @@ -0,0 +1,64 @@ +package com.sprint.mission.discodeit.repository.jcf; + +import com.sprint.mission.discodeit.entity.Message; +import com.sprint.mission.discodeit.repository.MessageRepository; +import org.springframework.stereotype.Repository; +import org.springframework.stereotype.Service; + +import java.util.*; + +public class JCFMessageRepository implements MessageRepository { + private final Map data; + + public JCFMessageRepository() { + this.data = new HashMap<>(); + } + + @Override + public Message save(Message message) { + this.data.put(message.getId(), message); + return message; + } + + @Override + public Optional findById(UUID id) { + return Optional.ofNullable(this.data.get(id)); + } + + @Override + public List findAll() { + return this.data.values().stream().toList(); + } + + @Override + public boolean existsById(UUID id) { + return this.data.containsKey(id); + } + + @Override + public void deleteById(UUID id) { + this.data.remove(id); + } + + @Override + public List findAllByChannelId(UUID channelId) { + return this.data.values().stream() + .filter(message -> message.getChannelId().equals(channelId)) + .toList(); + } + + @Override + public void deleteAllByChannel(UUID channelId) { + this.data.values().removeIf( + message -> message.getChannelId().equals(channelId) + ); + + } + + @Override + public Optional findLatestByChannelId(UUID channelId) { + return this.data.values().stream() + .filter(message -> message.getChannelId().equals(channelId)) + .max(Comparator.comparing(Message::getCreatedAt)); + } +} diff --git a/discodeit/src/main/java/com/sprint/mission/discodeit/repository/jcf/JCFReadStatusRepository.java b/discodeit/src/main/java/com/sprint/mission/discodeit/repository/jcf/JCFReadStatusRepository.java new file mode 100644 index 00000000..7bff9a17 --- /dev/null +++ b/discodeit/src/main/java/com/sprint/mission/discodeit/repository/jcf/JCFReadStatusRepository.java @@ -0,0 +1,63 @@ +package com.sprint.mission.discodeit.repository.jcf; + +import com.sprint.mission.discodeit.status.ReadStatusInterface; +import com.sprint.mission.discodeit.entity.ReadStatus; +import org.springframework.stereotype.Repository; + +import java.util.*; +@Repository +public class JCFReadStatusRepository implements ReadStatusInterface { + + private final Map store = new HashMap<>(); + + @Override + public void save(ReadStatus readStatus) { + store.put(readStatus.getId(), readStatus); + } + + @Override + public Optional findBy(UUID userId, UUID channelId) { + return store.values().stream() + .filter(readStatus -> readStatus.getUserId().equals(userId) + && readStatus.getChannelId().equals(channelId)) + .findFirst(); + } + + @Override + public List findAllByUserId(UUID userId) { + return store.values().stream() + .filter(readStatus -> readStatus.getUserId().equals(userId)) + .toList(); + } + + @Override + public Optional findById(UUID id) { + return Optional.ofNullable(store.get(id)); + } + + @Override + public void deleteById(UUID id) { + store.remove(id); + } + + @Override + public List findByChannel(UUID channelId) { + return store.values().stream() + .filter(readStatus -> readStatus.getChannelId().equals(channelId)) + .toList(); + } + + @Override + public void deleteAllByChannelId(UUID channelId) { + store.values().removeIf( + readStatus -> readStatus.getChannelId().equals(channelId) + ); + } + + @Override + public List findAllByChannelId(UUID channelId) { + return store.values().stream() + .filter(readStatus -> readStatus.getChannelId().equals(channelId)) + .toList(); + } +} diff --git a/discodeit/src/main/java/com/sprint/mission/discodeit/repository/jcf/JCFUserRepository.java b/discodeit/src/main/java/com/sprint/mission/discodeit/repository/jcf/JCFUserRepository.java new file mode 100644 index 00000000..9e5b0050 --- /dev/null +++ b/discodeit/src/main/java/com/sprint/mission/discodeit/repository/jcf/JCFUserRepository.java @@ -0,0 +1,58 @@ +package com.sprint.mission.discodeit.repository.jcf; + +import com.sprint.mission.discodeit.entity.User; +import com.sprint.mission.discodeit.repository.UserRepository; +import org.springframework.stereotype.Repository; +import org.springframework.stereotype.Service; + +import java.util.*; + + +public class JCFUserRepository implements UserRepository { + private final Map data; + + public JCFUserRepository() { + this.data = new HashMap<>(); + } + + @Override + public User save(User user) { + this.data.put(user.getId(), user); + return user; + } + + @Override + public Optional findById(UUID id) { + return Optional.ofNullable(this.data.get(id)); + } + + @Override + public List findAll() { + return this.data.values().stream().toList(); + } + + @Override + public boolean existsById(UUID id) { + return this.data.containsKey(id); + } + + @Override + public void deleteById(UUID id) { + this.data.remove(id); + } + + @Override + public Optional findByUsernameAndPassword(String username, String password) { + return Optional.empty(); + } + + @Override + public boolean existsByUserName(String username) { + return false; + } + + @Override + public boolean existsByEmail(String email) { + return false; + } +} diff --git a/discodeit/src/main/java/com/sprint/mission/discodeit/repository/jcf/JCFUserStatusRepository.java b/discodeit/src/main/java/com/sprint/mission/discodeit/repository/jcf/JCFUserStatusRepository.java new file mode 100644 index 00000000..7c3743ac --- /dev/null +++ b/discodeit/src/main/java/com/sprint/mission/discodeit/repository/jcf/JCFUserStatusRepository.java @@ -0,0 +1,36 @@ +package com.sprint.mission.discodeit.repository.jcf; + +import com.sprint.mission.discodeit.status.UserStatusInterface; +import com.sprint.mission.discodeit.entity.UserStatus; +import org.springframework.stereotype.Repository; + +import java.util.*; +@Repository +public class JCFUserStatusRepository implements UserStatusInterface { + private final Map store = new HashMap<>(); + + @Override + public void save(UserStatus userStatus) { + store.put(userStatus.getUserId(), userStatus); + } + + @Override + public Optional findById(UUID id) { + return store.values().stream().filter(userStatus -> userStatus.getId().equals(id)).findFirst(); + } + + @Override + public Optional findByUser(UUID userId) { + return store.values().stream().filter(userStatus -> userStatus.getUserId().equals(userId)).findFirst(); + } + + @Override + public List findAll() { + return new ArrayList<>(store.values()); + } + + @Override + public void deleteById(UUID id) { + store.values().removeIf(userStatus -> userStatus.getId().equals(id)); + } +} diff --git a/discodeit/src/main/java/com/sprint/mission/discodeit/service/AuthService.java b/discodeit/src/main/java/com/sprint/mission/discodeit/service/AuthService.java new file mode 100644 index 00000000..ff864fb9 --- /dev/null +++ b/discodeit/src/main/java/com/sprint/mission/discodeit/service/AuthService.java @@ -0,0 +1,8 @@ +package com.sprint.mission.discodeit.service; + +import com.sprint.mission.discodeit.service.DTO.LoginRequest; +import com.sprint.mission.discodeit.service.DTO.User.UserResponse; + +public interface AuthService { + UserResponse login(LoginRequest request); +} diff --git a/discodeit/src/main/java/com/sprint/mission/discodeit/service/BinaryContentService.java b/discodeit/src/main/java/com/sprint/mission/discodeit/service/BinaryContentService.java new file mode 100644 index 00000000..2501ba16 --- /dev/null +++ b/discodeit/src/main/java/com/sprint/mission/discodeit/service/BinaryContentService.java @@ -0,0 +1,14 @@ +package com.sprint.mission.discodeit.service; + +import com.sprint.mission.discodeit.service.DTO.BinaryContentCreateRequest; +import com.sprint.mission.discodeit.entity.BinaryContent; + +import java.util.List; +import java.util.UUID; + +public interface BinaryContentService { + BinaryContent create(BinaryContentCreateRequest request); + BinaryContent find(UUID id); + List findAllByIdIn(List ids); + void delete(UUID id); +} diff --git a/discodeit/src/main/java/com/sprint/mission/discodeit/service/ChannelService.java b/discodeit/src/main/java/com/sprint/mission/discodeit/service/ChannelService.java new file mode 100644 index 00000000..6bec5d06 --- /dev/null +++ b/discodeit/src/main/java/com/sprint/mission/discodeit/service/ChannelService.java @@ -0,0 +1,18 @@ +package com.sprint.mission.discodeit.service; + +import com.sprint.mission.discodeit.entity.Channel; +import com.sprint.mission.discodeit.entity.ChannelType; +import com.sprint.mission.discodeit.service.DTO.Channel.*; + +import java.util.List; +import java.util.UUID; + +public interface ChannelService { + Channel create(ChannelType type, String name, String description); + Channel createPublic(PublicChannelCreatRequest request); + Channel createPrivate(PrivateChannelCreatRequest request); + ChannelFindRespone find(UUID channelId); + List findAll(); + ChannelRespone update(ChannelUpdateRequest request); + void delete(UUID channelId); +} diff --git a/discodeit/src/main/java/com/sprint/mission/discodeit/service/DTO/AttachmentCreatRequest.java b/discodeit/src/main/java/com/sprint/mission/discodeit/service/DTO/AttachmentCreatRequest.java new file mode 100644 index 00000000..df246bf1 --- /dev/null +++ b/discodeit/src/main/java/com/sprint/mission/discodeit/service/DTO/AttachmentCreatRequest.java @@ -0,0 +1,6 @@ +package com.sprint.mission.discodeit.service.DTO; + +public record AttachmentCreatRequest( + String filename +) { +} diff --git a/discodeit/src/main/java/com/sprint/mission/discodeit/service/DTO/BinaryContentCreateRequest.java b/discodeit/src/main/java/com/sprint/mission/discodeit/service/DTO/BinaryContentCreateRequest.java new file mode 100644 index 00000000..7982158b --- /dev/null +++ b/discodeit/src/main/java/com/sprint/mission/discodeit/service/DTO/BinaryContentCreateRequest.java @@ -0,0 +1,8 @@ +package com.sprint.mission.discodeit.service.DTO; + +import java.util.UUID; + +public record BinaryContentCreateRequest( + UUID userId, + UUID messageId +) { } diff --git a/discodeit/src/main/java/com/sprint/mission/discodeit/service/DTO/Channel/ChannelFindRespone.java b/discodeit/src/main/java/com/sprint/mission/discodeit/service/DTO/Channel/ChannelFindRespone.java new file mode 100644 index 00000000..6b098fdd --- /dev/null +++ b/discodeit/src/main/java/com/sprint/mission/discodeit/service/DTO/Channel/ChannelFindRespone.java @@ -0,0 +1,17 @@ +package com.sprint.mission.discodeit.service.DTO.Channel; + +import com.sprint.mission.discodeit.entity.ChannelType; + +import java.time.Instant; +import java.util.List; +import java.util.UUID; + +public record ChannelFindRespone( + UUID channelId, + ChannelType type, + String name, + String description, + Instant lastMessageAt, + List participantUserIds +) { +} diff --git a/discodeit/src/main/java/com/sprint/mission/discodeit/service/DTO/Channel/ChannelRespone.java b/discodeit/src/main/java/com/sprint/mission/discodeit/service/DTO/Channel/ChannelRespone.java new file mode 100644 index 00000000..d608d6ac --- /dev/null +++ b/discodeit/src/main/java/com/sprint/mission/discodeit/service/DTO/Channel/ChannelRespone.java @@ -0,0 +1,17 @@ +package com.sprint.mission.discodeit.service.DTO.Channel; + +import com.sprint.mission.discodeit.entity.ChannelType; + +import java.time.Instant; +import java.util.List; +import java.util.UUID; + +public record ChannelRespone( + UUID id, + ChannelType type, + String name, + String description, + Instant lastMessageAt, + List participantUserIds +) { +} diff --git a/discodeit/src/main/java/com/sprint/mission/discodeit/service/DTO/Channel/ChannelUpdateRequest.java b/discodeit/src/main/java/com/sprint/mission/discodeit/service/DTO/Channel/ChannelUpdateRequest.java new file mode 100644 index 00000000..8ec5c8be --- /dev/null +++ b/discodeit/src/main/java/com/sprint/mission/discodeit/service/DTO/Channel/ChannelUpdateRequest.java @@ -0,0 +1,10 @@ +package com.sprint.mission.discodeit.service.DTO.Channel; + +import java.util.UUID; + +public record ChannelUpdateRequest( + UUID channelId, + String name, + String description +) { +} diff --git a/discodeit/src/main/java/com/sprint/mission/discodeit/service/DTO/Channel/PrivateChannelCreatRequest.java b/discodeit/src/main/java/com/sprint/mission/discodeit/service/DTO/Channel/PrivateChannelCreatRequest.java new file mode 100644 index 00000000..25c04f09 --- /dev/null +++ b/discodeit/src/main/java/com/sprint/mission/discodeit/service/DTO/Channel/PrivateChannelCreatRequest.java @@ -0,0 +1,12 @@ +package com.sprint.mission.discodeit.service.DTO.Channel; + +import com.sprint.mission.discodeit.entity.ChannelType; + +import java.util.List; +import java.util.UUID; + +public record PrivateChannelCreatRequest( + List userIds + +) { +} diff --git a/discodeit/src/main/java/com/sprint/mission/discodeit/service/DTO/Channel/PublicChannelCreatRequest.java b/discodeit/src/main/java/com/sprint/mission/discodeit/service/DTO/Channel/PublicChannelCreatRequest.java new file mode 100644 index 00000000..141fcf56 --- /dev/null +++ b/discodeit/src/main/java/com/sprint/mission/discodeit/service/DTO/Channel/PublicChannelCreatRequest.java @@ -0,0 +1,7 @@ +package com.sprint.mission.discodeit.service.DTO.Channel; + +public record PublicChannelCreatRequest( + String name, + String description +) { +} diff --git a/discodeit/src/main/java/com/sprint/mission/discodeit/service/DTO/LoginRequest.java b/discodeit/src/main/java/com/sprint/mission/discodeit/service/DTO/LoginRequest.java new file mode 100644 index 00000000..fa970567 --- /dev/null +++ b/discodeit/src/main/java/com/sprint/mission/discodeit/service/DTO/LoginRequest.java @@ -0,0 +1,6 @@ +package com.sprint.mission.discodeit.service.DTO; + +public record LoginRequest( + String username, + String password +) { } diff --git a/discodeit/src/main/java/com/sprint/mission/discodeit/service/DTO/Message/MessageCreateRequest.java b/discodeit/src/main/java/com/sprint/mission/discodeit/service/DTO/Message/MessageCreateRequest.java new file mode 100644 index 00000000..ecb971ce --- /dev/null +++ b/discodeit/src/main/java/com/sprint/mission/discodeit/service/DTO/Message/MessageCreateRequest.java @@ -0,0 +1,14 @@ +package com.sprint.mission.discodeit.service.DTO.Message; + +import com.sprint.mission.discodeit.service.DTO.AttachmentCreatRequest; + +import java.util.List; +import java.util.UUID; + +public record MessageCreateRequest( + String content, + UUID channelId, + UUID authorId, + List attachments +) { +} diff --git a/discodeit/src/main/java/com/sprint/mission/discodeit/service/DTO/Message/MessageResponse.java b/discodeit/src/main/java/com/sprint/mission/discodeit/service/DTO/Message/MessageResponse.java new file mode 100644 index 00000000..47dc97e2 --- /dev/null +++ b/discodeit/src/main/java/com/sprint/mission/discodeit/service/DTO/Message/MessageResponse.java @@ -0,0 +1,13 @@ +package com.sprint.mission.discodeit.service.DTO.Message; + +import java.time.Instant; +import java.util.UUID; + +public record MessageResponse( + UUID id, + UUID channelId, + UUID authorId, + String content, + Instant creatAt +) { +} diff --git a/discodeit/src/main/java/com/sprint/mission/discodeit/service/DTO/Message/MessageUpdateRequest.java b/discodeit/src/main/java/com/sprint/mission/discodeit/service/DTO/Message/MessageUpdateRequest.java new file mode 100644 index 00000000..df217ddf --- /dev/null +++ b/discodeit/src/main/java/com/sprint/mission/discodeit/service/DTO/Message/MessageUpdateRequest.java @@ -0,0 +1,8 @@ +package com.sprint.mission.discodeit.service.DTO.Message; + +import java.util.UUID; + +public record MessageUpdateRequest( + UUID messageId, + String newContent +) { } diff --git a/discodeit/src/main/java/com/sprint/mission/discodeit/service/DTO/ReadStatusCreateRequest.java b/discodeit/src/main/java/com/sprint/mission/discodeit/service/DTO/ReadStatusCreateRequest.java new file mode 100644 index 00000000..97e0ad81 --- /dev/null +++ b/discodeit/src/main/java/com/sprint/mission/discodeit/service/DTO/ReadStatusCreateRequest.java @@ -0,0 +1,9 @@ +package com.sprint.mission.discodeit.service.DTO; + +import java.util.UUID; + +public record ReadStatusCreateRequest( + UUID userId, + UUID channelId +) { +} diff --git a/discodeit/src/main/java/com/sprint/mission/discodeit/service/DTO/ReadStatusUpdateRequest.java b/discodeit/src/main/java/com/sprint/mission/discodeit/service/DTO/ReadStatusUpdateRequest.java new file mode 100644 index 00000000..b9c969b7 --- /dev/null +++ b/discodeit/src/main/java/com/sprint/mission/discodeit/service/DTO/ReadStatusUpdateRequest.java @@ -0,0 +1,10 @@ +package com.sprint.mission.discodeit.service.DTO; + +import java.time.Instant; +import java.util.UUID; + +public record ReadStatusUpdateRequest( + UUID readStatusId, + Instant lastRead +) { +} diff --git a/discodeit/src/main/java/com/sprint/mission/discodeit/service/DTO/User/UserCreatRequest.java b/discodeit/src/main/java/com/sprint/mission/discodeit/service/DTO/User/UserCreatRequest.java new file mode 100644 index 00000000..4a04a275 --- /dev/null +++ b/discodeit/src/main/java/com/sprint/mission/discodeit/service/DTO/User/UserCreatRequest.java @@ -0,0 +1,15 @@ +package com.sprint.mission.discodeit.service.DTO.User; + +import com.sprint.mission.discodeit.entity.BinaryContent; + +//record 사용시 final(불변),getter 제공-> DTO에 유용 +public record UserCreatRequest( + String username, + String email, + String password, + BinaryContent profileImage + +) { + + +} diff --git a/discodeit/src/main/java/com/sprint/mission/discodeit/service/DTO/User/UserResponse.java b/discodeit/src/main/java/com/sprint/mission/discodeit/service/DTO/User/UserResponse.java new file mode 100644 index 00000000..26338aa2 --- /dev/null +++ b/discodeit/src/main/java/com/sprint/mission/discodeit/service/DTO/User/UserResponse.java @@ -0,0 +1,10 @@ +package com.sprint.mission.discodeit.service.DTO.User; + +import java.util.UUID; + +public record UserResponse( + UUID userId, + String username, + String email, + boolean online +) { } diff --git a/discodeit/src/main/java/com/sprint/mission/discodeit/service/DTO/User/UserUpdateRequest.java b/discodeit/src/main/java/com/sprint/mission/discodeit/service/DTO/User/UserUpdateRequest.java new file mode 100644 index 00000000..d9957330 --- /dev/null +++ b/discodeit/src/main/java/com/sprint/mission/discodeit/service/DTO/User/UserUpdateRequest.java @@ -0,0 +1,13 @@ +package com.sprint.mission.discodeit.service.DTO.User; + +import com.sprint.mission.discodeit.entity.BinaryContent; + +import java.util.UUID; + +public record UserUpdateRequest( + UUID userId, + String username, + String email, + String password, + BinaryContent profileImage +) { } diff --git a/discodeit/src/main/java/com/sprint/mission/discodeit/service/DTO/UserStatus/UserStatusCreateRequest.java b/discodeit/src/main/java/com/sprint/mission/discodeit/service/DTO/UserStatus/UserStatusCreateRequest.java new file mode 100644 index 00000000..c54eab75 --- /dev/null +++ b/discodeit/src/main/java/com/sprint/mission/discodeit/service/DTO/UserStatus/UserStatusCreateRequest.java @@ -0,0 +1,8 @@ +package com.sprint.mission.discodeit.service.DTO.UserStatus; + +import java.util.UUID; + +public record UserStatusCreateRequest( + UUID userId +) { +} diff --git a/discodeit/src/main/java/com/sprint/mission/discodeit/service/DTO/UserStatus/UserStatusUpdateByUserIdRequest.java b/discodeit/src/main/java/com/sprint/mission/discodeit/service/DTO/UserStatus/UserStatusUpdateByUserIdRequest.java new file mode 100644 index 00000000..fc200b2f --- /dev/null +++ b/discodeit/src/main/java/com/sprint/mission/discodeit/service/DTO/UserStatus/UserStatusUpdateByUserIdRequest.java @@ -0,0 +1,10 @@ +package com.sprint.mission.discodeit.service.DTO.UserStatus; + +import java.time.Instant; +import java.util.UUID; + +public record UserStatusUpdateByUserIdRequest( + UUID userId, + Instant lastViewAt +) { +} diff --git a/discodeit/src/main/java/com/sprint/mission/discodeit/service/DTO/UserStatus/UserStatusUpdateRequest.java b/discodeit/src/main/java/com/sprint/mission/discodeit/service/DTO/UserStatus/UserStatusUpdateRequest.java new file mode 100644 index 00000000..4f96d375 --- /dev/null +++ b/discodeit/src/main/java/com/sprint/mission/discodeit/service/DTO/UserStatus/UserStatusUpdateRequest.java @@ -0,0 +1,10 @@ +package com.sprint.mission.discodeit.service.DTO.UserStatus; + +import java.time.Instant; +import java.util.UUID; + +public record UserStatusUpdateRequest( + UUID userStatusId, + Instant lastViewAt +) { +} diff --git a/discodeit/src/main/java/com/sprint/mission/discodeit/service/MessageService.java b/discodeit/src/main/java/com/sprint/mission/discodeit/service/MessageService.java new file mode 100644 index 00000000..6fd9be92 --- /dev/null +++ b/discodeit/src/main/java/com/sprint/mission/discodeit/service/MessageService.java @@ -0,0 +1,17 @@ +package com.sprint.mission.discodeit.service; + +import com.sprint.mission.discodeit.entity.Message; +import com.sprint.mission.discodeit.service.DTO.Message.MessageCreateRequest; +import com.sprint.mission.discodeit.service.DTO.Message.MessageUpdateRequest; +import com.sprint.mission.discodeit.service.DTO.Message.MessageResponse; + +import java.util.List; +import java.util.UUID; + +public interface MessageService { + Message create(MessageCreateRequest request); + Message find(UUID messageId); + List findAllByChannelId(UUID channelId); + Message update(MessageUpdateRequest request); + void delete(UUID messageId); +} diff --git a/discodeit/src/main/java/com/sprint/mission/discodeit/service/ReadStatusService.java b/discodeit/src/main/java/com/sprint/mission/discodeit/service/ReadStatusService.java new file mode 100644 index 00000000..358333bd --- /dev/null +++ b/discodeit/src/main/java/com/sprint/mission/discodeit/service/ReadStatusService.java @@ -0,0 +1,17 @@ +package com.sprint.mission.discodeit.service; + +import com.sprint.mission.discodeit.service.DTO.ReadStatusCreateRequest; +import com.sprint.mission.discodeit.entity.ReadStatus; + +import java.util.List; +import java.util.UUID; + +public interface ReadStatusService { + ReadStatus findByUserIdAndChannelId(UUID userId, UUID channelId); + + ReadStatus create(ReadStatusCreateRequest request); + ReadStatus findByUserId(UUID userId); + List findAllByUserId(UUID userId); + boolean existByUserIdAndChannelId(UUID userId, UUID channelId); + void deleteById(UUID id); +} \ No newline at end of file diff --git a/discodeit/src/main/java/com/sprint/mission/discodeit/service/UserService.java b/discodeit/src/main/java/com/sprint/mission/discodeit/service/UserService.java new file mode 100644 index 00000000..4e689851 --- /dev/null +++ b/discodeit/src/main/java/com/sprint/mission/discodeit/service/UserService.java @@ -0,0 +1,22 @@ +package com.sprint.mission.discodeit.service; + +import com.sprint.mission.discodeit.entity.User; +import com.sprint.mission.discodeit.service.DTO.User.UserCreatRequest; +import com.sprint.mission.discodeit.service.DTO.User.UserResponse; +import com.sprint.mission.discodeit.service.DTO.User.UserUpdateRequest; + +import java.util.List; +import java.util.UUID; + + +public interface UserService { + User create(UserCreatRequest request); + UserResponse find(UUID userId); + List findAll(); + UserResponse update(UserUpdateRequest request); + void delete(UUID userId); + + + + +} diff --git a/discodeit/src/main/java/com/sprint/mission/discodeit/service/UserStatusService.java b/discodeit/src/main/java/com/sprint/mission/discodeit/service/UserStatusService.java new file mode 100644 index 00000000..b4e1bb39 --- /dev/null +++ b/discodeit/src/main/java/com/sprint/mission/discodeit/service/UserStatusService.java @@ -0,0 +1,17 @@ +package com.sprint.mission.discodeit.service; + +import com.sprint.mission.discodeit.service.DTO.UserStatus.UserStatusCreateRequest; +import com.sprint.mission.discodeit.service.DTO.UserStatus.UserStatusUpdateByUserIdRequest; +import com.sprint.mission.discodeit.entity.UserStatus; + +import java.util.List; +import java.util.UUID; + +public interface UserStatusService { + UserStatus create(UserStatusCreateRequest request); + UserStatus find(UUID id); + List findAll(); + UserStatus update(UserStatusUpdateByUserIdRequest request); + UserStatus updateByUserId(UserStatusUpdateByUserIdRequest request); + void delete(UUID id); +} diff --git a/discodeit/src/main/java/com/sprint/mission/discodeit/service/basic/BasicAuthService.java b/discodeit/src/main/java/com/sprint/mission/discodeit/service/basic/BasicAuthService.java new file mode 100644 index 00000000..fb3faf91 --- /dev/null +++ b/discodeit/src/main/java/com/sprint/mission/discodeit/service/basic/BasicAuthService.java @@ -0,0 +1,39 @@ +package com.sprint.mission.discodeit.service.basic; + +import com.sprint.mission.discodeit.entity.User; +import com.sprint.mission.discodeit.repository.UserRepository; +import com.sprint.mission.discodeit.service.AuthService; +import com.sprint.mission.discodeit.service.DTO.LoginRequest; +import com.sprint.mission.discodeit.service.DTO.User.UserResponse; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + + +@Service +@RequiredArgsConstructor +public class BasicAuthService implements AuthService { + + private final UserRepository userRepository; + //private final UserStatusInterface userStatusInterface; + + public UserResponse login(LoginRequest request) { + User user = userRepository + .findByUsernameAndPassword( + request.username(), + request.password() + ) + .orElseThrow(() -> new RuntimeException("로그인 실패")); + +// UserStatus status = userStatusInterface +// .findByUser(user.getId()) +// .orElseThrow(); + + return new UserResponse( + user.getId(), + user.getUsername(), + user.getEmail(), + false + //status.online() + ); + } +} \ No newline at end of file diff --git a/discodeit/src/main/java/com/sprint/mission/discodeit/service/basic/BasicBinaryContentService.java b/discodeit/src/main/java/com/sprint/mission/discodeit/service/basic/BasicBinaryContentService.java new file mode 100644 index 00000000..b37dd472 --- /dev/null +++ b/discodeit/src/main/java/com/sprint/mission/discodeit/service/basic/BasicBinaryContentService.java @@ -0,0 +1,58 @@ +package com.sprint.mission.discodeit.service.basic; + +import com.sprint.mission.discodeit.repository.MessageRepository; +import com.sprint.mission.discodeit.repository.UserRepository; +import com.sprint.mission.discodeit.service.BinaryContentService; +import com.sprint.mission.discodeit.service.DTO.BinaryContentCreateRequest; +import com.sprint.mission.discodeit.status.BinaryContentInterface; +import com.sprint.mission.discodeit.entity.BinaryContent; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.time.Instant; +import java.util.List; +import java.util.NoSuchElementException; +import java.util.UUID; +@Service +@RequiredArgsConstructor +public class BasicBinaryContentService implements BinaryContentService { + + private final BinaryContentInterface binaryContentInterface; + private final UserRepository userRepository; + private final MessageRepository messageRepository; + + @Override + public void delete(UUID id) { + binaryContentInterface.deleteById(id); + } + + @Override + public List findAllByIdIn(List ids) { + return binaryContentInterface.findAllByIdIn(ids); + } + + @Override + public BinaryContent find(UUID id) { + return binaryContentInterface.findById(id) + .orElseThrow(() -> new NoSuchElementException("BinaryContent 없음")); + } + + @Override + public BinaryContent create(BinaryContentCreateRequest request) { + if (!userRepository.existsById(request.userId())) { + throw new NoSuchElementException("없는 유저"); + } + if (!messageRepository.existsById(request.messageId())) { + throw new NoSuchElementException("없는 메세지"); + } + + BinaryContent binaryContent = new BinaryContent( + UUID.randomUUID(), + request.userId(), + request.messageId(), + Instant.now() + ); + binaryContentInterface.save(binaryContent); + return binaryContent; + } +} diff --git a/discodeit/src/main/java/com/sprint/mission/discodeit/service/basic/BasicChannelService.java b/discodeit/src/main/java/com/sprint/mission/discodeit/service/basic/BasicChannelService.java new file mode 100644 index 00000000..5bc74c46 --- /dev/null +++ b/discodeit/src/main/java/com/sprint/mission/discodeit/service/basic/BasicChannelService.java @@ -0,0 +1,175 @@ +package com.sprint.mission.discodeit.service.basic; + +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.repository.ChannelRepository; +import com.sprint.mission.discodeit.repository.file.FileMessageRepository; +import com.sprint.mission.discodeit.service.ChannelService; +import com.sprint.mission.discodeit.service.DTO.Channel.*; +import com.sprint.mission.discodeit.status.ReadStatusInterface; +import com.sprint.mission.discodeit.entity.ReadStatus; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.time.Instant; +import java.util.List; +import java.util.NoSuchElementException; +import java.util.UUID; +import java.util.stream.Stream; + +@Service +@RequiredArgsConstructor +public class BasicChannelService implements ChannelService { + private final ChannelRepository channelRepository; + private final ReadStatusInterface readStatusInterface; + private final FileMessageRepository fileMessageRepository; + + @Override + public Channel create(ChannelType type, String name, String description) { + Channel channel = new Channel(type, name, description); + return channelRepository.save(channel); + } + + @Override + public Channel createPublic(PublicChannelCreatRequest request) { + Channel channel = new Channel( + ChannelType.PUBLIC, + request.name(), + request.description() + + ); + return channelRepository.save(channel); + } + + @Override + public Channel createPrivate(PrivateChannelCreatRequest request) { + + Channel channel = new Channel( + ChannelType.PRIVATE, + null, + null + ); + channelRepository.save(channel); + + for (UUID userId : request.userIds()) { + ReadStatus readStatus = new ReadStatus( + UUID.randomUUID(), + userId, + channel.getId(), + Instant.now(), + Instant.now(), + Instant.now() + ); + readStatusInterface.save(readStatus); + } + return channel; + } + + @Override + public ChannelFindRespone find(UUID channelId) { + Channel channel = channelRepository.findById(channelId) + .orElseThrow(() -> new NoSuchElementException("없는 채널")); + Instant lastMessageAt = fileMessageRepository + .findLatestByChannelId(channelId) + .map(Message::getCreatedAt) + .orElse(null); + + List participantUserIds = null; + if (channel.getType() == ChannelType.PRIVATE) { + participantUserIds = readStatusInterface + .findByChannel(channelId) + .stream() + .map(ReadStatus :: getUserId) + .toList(); + } + + return new ChannelFindRespone( + channel.getId(), + channel.getType(), + channel.getName(), + channel.getDescription(), + lastMessageAt, + participantUserIds + ); + } + + public List findByUserId(UUID userId){ + List publicChannels = channelRepository.findAllPublic(); + List privateChannels = channelRepository.findPrivateByUserId(userId); + + return Stream.concat(publicChannels.stream(), privateChannels.stream()) + .map(channel -> { + + Instant lastMessageAt = fileMessageRepository + .findLatestByChannelId(channel.getId()) + .map(Message::getCreatedAt) + .orElse(null); + + List participantUserIds = null; + if (channel.getType() == ChannelType.PRIVATE) { + participantUserIds = readStatusInterface + .findAllByChannelId(channel.getId()) + .stream() + .map(ReadStatus::getUserId) + .toList(); + } + + return new ChannelRespone( + channel.getId(), + channel.getType(), + channel.getName(), + channel.getDescription(), + lastMessageAt, + participantUserIds + ); + }) + .toList(); + } + + @Override + public List findAll() { + return channelRepository.findAll(); + } + + @Override + public ChannelRespone update(ChannelUpdateRequest request) { + Channel channel = channelRepository.findById(request.channelId()) + .orElseThrow(() -> new NoSuchElementException("채널 없음")); + if (channel.getType() == ChannelType.PRIVATE) { + throw new IllegalArgumentException("PRIVATE 채널은 수정할 수 없습니다"); + } + + channel.update( + request.name(), + request.description() + ); + Channel saved = channelRepository.save(channel); + + Instant lastMessageAt = fileMessageRepository + .findLatestByChannelId(saved.getId()) + .map(Message::getCreatedAt) + .orElse(null); + + return new ChannelRespone( + channel.getId(), + channel.getType(), + channel.getName(), + channel.getDescription(), + lastMessageAt, + null + ); + } + + @Override + public void delete(UUID channelId) { + if (!channelRepository.existsById(channelId)) { + throw new NoSuchElementException("없는 채널"); + } + fileMessageRepository.deleteAllByChannel(channelId); + + readStatusInterface.deleteAllByChannelId(channelId); + + channelRepository.deleteById(channelId); + } +} diff --git a/discodeit/src/main/java/com/sprint/mission/discodeit/service/basic/BasicMessageService.java b/discodeit/src/main/java/com/sprint/mission/discodeit/service/basic/BasicMessageService.java new file mode 100644 index 00000000..97e466c8 --- /dev/null +++ b/discodeit/src/main/java/com/sprint/mission/discodeit/service/basic/BasicMessageService.java @@ -0,0 +1,109 @@ +package com.sprint.mission.discodeit.service.basic; + +import com.sprint.mission.discodeit.entity.Message; +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.service.DTO.AttachmentCreatRequest; +import com.sprint.mission.discodeit.service.DTO.Message.MessageCreateRequest; +import com.sprint.mission.discodeit.service.DTO.Message.MessageUpdateRequest; +import com.sprint.mission.discodeit.service.DTO.Message.MessageResponse; +import com.sprint.mission.discodeit.service.MessageService; +import com.sprint.mission.discodeit.status.BinaryContentInterface; +import com.sprint.mission.discodeit.entity.BinaryContent; +//import com.sprint.mission.discodeit.status.adds.BinaryContentInterface; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.time.Instant; +import java.util.List; +import java.util.NoSuchElementException; +import java.util.UUID; +@Service +@RequiredArgsConstructor +public class BasicMessageService implements MessageService { + private final MessageRepository messageRepository; + private final ChannelRepository channelRepository; + private final UserRepository userRepository; + private final BinaryContentInterface binaryContentInterface; + //private final RequestAttributes requestAttributes; + //private MessageRepository binaryContentInterface; + + + @Override + public Message create(MessageCreateRequest request) { + if (!channelRepository.existsById(request.channelId())) { + throw new NoSuchElementException("Channel not found with id " + request.channelId()); + } + if (!userRepository.existsById(request.authorId())) { + throw new NoSuchElementException("Author not found with id " + request.authorId()); + } + + Message message = new Message( + request.content(), + request.channelId(), + request.authorId(), + request.attachments() + + ); + messageRepository.save(message); + + if (request.attachments() != null) { + for (AttachmentCreatRequest attachments : request.attachments()) { + BinaryContent binaryContent = new BinaryContent( + UUID.randomUUID(), + request.authorId(), + message.getId(), + Instant.now() + ); + binaryContentInterface.save(binaryContent); + } + } + + return message; + } + + @Override + public Message find(UUID messageId) { + return messageRepository.findById(messageId) + .orElseThrow(() -> new NoSuchElementException("Message with id " + messageId + " not found")); + } + + @Override + public List findAllByChannelId(UUID channelId) { + if (!channelRepository.existsById(channelId)) { + throw new NoSuchElementException("없는 채널"); + } + + return messageRepository.findAllByChannelId(channelId) + .stream() + .map(message -> new MessageResponse( + message.getId(), + message.getChannelId(), + message.getAuthorId(), + message.getContent(), + message.getCreatedAt() + )) + .toList(); + } + + @Override + public Message update(MessageUpdateRequest request) { + Message message = messageRepository.findById(request.messageId()) + .orElseThrow(() -> new NoSuchElementException("없는 메세지")); + message.update( + request.newContent() + ); + return messageRepository.save(message); + } + + @Override + public void delete(UUID messageId) { + if (!messageRepository.existsById(messageId)) { + throw new NoSuchElementException("없는 메세지"); + } + binaryContentInterface.deleteByMessageId(messageId); + + messageRepository.deleteById(messageId); + } +} diff --git a/discodeit/src/main/java/com/sprint/mission/discodeit/service/basic/BasicReadStatusService.java b/discodeit/src/main/java/com/sprint/mission/discodeit/service/basic/BasicReadStatusService.java new file mode 100644 index 00000000..54d49747 --- /dev/null +++ b/discodeit/src/main/java/com/sprint/mission/discodeit/service/basic/BasicReadStatusService.java @@ -0,0 +1,96 @@ +package com.sprint.mission.discodeit.service.basic; + +import com.sprint.mission.discodeit.repository.ChannelRepository; +import com.sprint.mission.discodeit.repository.UserRepository; +import com.sprint.mission.discodeit.service.DTO.ReadStatusCreateRequest; +import com.sprint.mission.discodeit.service.DTO.ReadStatusUpdateRequest; +import com.sprint.mission.discodeit.service.ReadStatusService; +import com.sprint.mission.discodeit.status.ReadStatusInterface; +import com.sprint.mission.discodeit.entity.ReadStatus; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.time.Instant; +import java.util.List; +import java.util.NoSuchElementException; +import java.util.UUID; +@Service +@RequiredArgsConstructor +public class BasicReadStatusService implements ReadStatusService { + + private final ReadStatusInterface readStatusInterface; + private final UserRepository userRepository; + private final ChannelRepository channelRepository; + + @Override + public void deleteById(UUID id) { + readStatusInterface.deleteById(id); + } + + @Override + public boolean existByUserIdAndChannelId(UUID userId, UUID channelId) { + return false; + } + + @Override + public List findAllByUserId(UUID userId) { + return readStatusInterface.findAllByUserId(userId); + } + + @Override + public ReadStatus findByUserIdAndChannelId(UUID userId, UUID channelId) { + return readStatusInterface.findBy(userId, channelId) + .orElseThrow(() -> new NoSuchElementException("읽지 않음")); + } + + @Override + public ReadStatus findByUserId(UUID id) { + return readStatusInterface.findById(id) + .orElseThrow(() -> new NoSuchElementException("ReadStatus 없음")); + } + + @Override + public ReadStatus create(ReadStatusCreateRequest request) { + + if (!userRepository.existsById(request.userId())) { + throw new NoSuchElementException("없는 유저"); + } + + if (!channelRepository.existsById(request.channelId())) { + throw new NoSuchElementException("없는 채널"); + } + + if (readStatusInterface + .findBy(request.userId(), request.channelId()) + .isPresent()) { + throw new IllegalStateException("이미 읽은 상태입니다."); + } + + ReadStatus readStatus = new ReadStatus( + UUID.randomUUID(), + request.userId(), + request.channelId(), + Instant.now(), + Instant.now(), + Instant.now() + ); + readStatusInterface.save(readStatus); + return readStatus; + } + + public ReadStatus update(ReadStatusUpdateRequest request){ + ReadStatus readStatus = readStatusInterface.findById(request.readStatusId()) + .orElseThrow(() -> new NoSuchElementException("이미 읽은 상태입니다")); + + readStatus.updateLastRead(request.lastRead()); + readStatusInterface.save(readStatus); + + return readStatus; + } + + public void delete(UUID id){ + readStatusInterface.deleteById(id); + } + + +} diff --git a/discodeit/src/main/java/com/sprint/mission/discodeit/service/basic/BasicUserService.java b/discodeit/src/main/java/com/sprint/mission/discodeit/service/basic/BasicUserService.java new file mode 100644 index 00000000..ac3881aa --- /dev/null +++ b/discodeit/src/main/java/com/sprint/mission/discodeit/service/basic/BasicUserService.java @@ -0,0 +1,140 @@ +package com.sprint.mission.discodeit.service.basic; + +import com.sprint.mission.discodeit.entity.User; +import com.sprint.mission.discodeit.repository.UserRepository; +import com.sprint.mission.discodeit.service.DTO.User.UserCreatRequest; +import com.sprint.mission.discodeit.service.DTO.User.UserResponse; +import com.sprint.mission.discodeit.service.DTO.User.UserUpdateRequest; +import com.sprint.mission.discodeit.service.UserService; +import com.sprint.mission.discodeit.status.BinaryContentInterface; +import com.sprint.mission.discodeit.status.UserStatusInterface; +import com.sprint.mission.discodeit.entity.BinaryContent; +import com.sprint.mission.discodeit.entity.UserStatus; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.time.Instant; +import java.util.List; +import java.util.NoSuchElementException; +import java.util.UUID; + +@Service +@RequiredArgsConstructor +public class BasicUserService implements UserService { + private final UserRepository userRepository; + private final UserStatusInterface userStatusInterface; + private final BinaryContentInterface binaryContentInterface; + + + public User create(UserCreatRequest request) { + + if (userRepository.existsByUserName(request.username())) { + throw new IllegalArgumentException("중복된 유저입니다."); + } + if (userRepository.existsByEmail(request.email())) { + throw new IllegalArgumentException("중복된 이메일립니다."); + } + + User user = new User( + request.username(), + request.email(), + request.password() + ); + + userRepository.save(user); + + UserStatus status = new UserStatus( + UUID.randomUUID(), + user.getId(), + Instant.now(), + Instant.now(), + Instant.now() + ); + userStatusInterface.save(status); + + if (request.profileImage() != null) { + BinaryContent profile = new BinaryContent( + UUID.randomUUID(), + user.getId(), + null, + Instant.now() + ); + binaryContentInterface.save(profile); + } + return user; + } + + + private UserResponse userResponse(User user, UserStatus status) { + return new UserResponse( + user.getId(), + user.getUsername(), + user.getEmail(), + status.online() + ); + } + + @Override + public UserResponse find(UUID userId) { + User user = userRepository.findById(userId) + .orElseThrow(() -> new NoSuchElementException()); + + UserStatus status = userStatusInterface.findByUser(userId) + .orElseThrow(); + + return userResponse(user, status); + } + + @Override + public List findAll() { + return userRepository.findAll().stream() + .map(user-> { + UserStatus status = userStatusInterface + .findByUser(user.getId()) + .orElseThrow(() -> new NoSuchElementException( + "없는 유저입니다" + user.getId() + )); + return userResponse(user, status); + }) + .toList(); + } + + + public UserResponse update(UserUpdateRequest request){ + User user = userRepository.findById(request.userId()) + .orElseThrow(() -> new NoSuchElementException("없는 유저")); + + user.update( + request.username(), + request.email(), + request.password() + ); + userRepository.save(user); + + if (request.profileImage() != null) { + BinaryContent profile = new BinaryContent( + UUID.randomUUID(), + user.getId(), + null, + Instant.now() + ); + binaryContentInterface.save(profile); + } + + UserStatus status = userStatusInterface.findByUser(user.getId()) + .orElseThrow(); + + return userResponse(user, status); + } + + public void delete(UUID userId) { + if (!userRepository.existsById(userId)) { + throw new NoSuchElementException("없는 유저"); + } + binaryContentInterface.deleteById(userId); + + userStatusInterface.deleteById(userId); + + userRepository.deleteById(userId); + } +} diff --git a/discodeit/src/main/java/com/sprint/mission/discodeit/service/basic/BasicUserStatusService.java b/discodeit/src/main/java/com/sprint/mission/discodeit/service/basic/BasicUserStatusService.java new file mode 100644 index 00000000..7f9e4dbf --- /dev/null +++ b/discodeit/src/main/java/com/sprint/mission/discodeit/service/basic/BasicUserStatusService.java @@ -0,0 +1,79 @@ +package com.sprint.mission.discodeit.service.basic; + +import com.sprint.mission.discodeit.repository.UserRepository; +import com.sprint.mission.discodeit.service.DTO.UserStatus.UserStatusCreateRequest; +import com.sprint.mission.discodeit.service.DTO.UserStatus.UserStatusUpdateByUserIdRequest; +import com.sprint.mission.discodeit.service.UserStatusService; +import com.sprint.mission.discodeit.status.UserStatusInterface; +import com.sprint.mission.discodeit.entity.UserStatus; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.time.Instant; +import java.util.List; +import java.util.NoSuchElementException; +import java.util.UUID; +@Service +@RequiredArgsConstructor +public class BasicUserStatusService implements UserStatusService { + + private final UserStatusInterface userStatusInterface; + private final UserRepository userRepository; + + @Override + public UserStatus create(UserStatusCreateRequest request) { + if(!userRepository.existsById(request.userId())) { + throw new NoSuchElementException("없는 유저"); + } + if(userStatusInterface.findByUser(request.userId()).isPresent()){ + throw new IllegalStateException("이미 읽은 상태입니다."); + } + UserStatus userStatus = new UserStatus( + UUID.randomUUID(), + request.userId(), + Instant.now(), + Instant.now(), + Instant.now() + ); + + userStatusInterface.save(userStatus); + return userStatus; + } + + @Override + public UserStatus find(UUID id) { + return userStatusInterface.findById(id) + .orElseThrow(() -> new NoSuchElementException("유저 없음")); + } + + + @Override + public List findAll() { + return userStatusInterface.findAll(); + } + + @Override + public UserStatus update(UserStatusUpdateByUserIdRequest request) { + UserStatus userStatus = userStatusInterface.findById(request.userId()) + .orElseThrow(() -> new NoSuchElementException("유저 없음")); + userStatus.updateLastView(request.lastViewAt()); + userStatusInterface.save(userStatus); + + return userStatus; + } + + @Override + public UserStatus updateByUserId(UserStatusUpdateByUserIdRequest request) { + UserStatus userStatus = userStatusInterface.findByUser(request.userId()) + .orElseThrow(()-> new NoSuchElementException("유저 없음")); + + userStatus.updateLastView(request.lastViewAt()); + userStatusInterface.save(userStatus); + return userStatus; + } + + @Override + public void delete(UUID id) { + userStatusInterface.deleteById(id); + } +} diff --git a/discodeit/src/main/java/com/sprint/mission/discodeit/status/BinaryContentInterface.java b/discodeit/src/main/java/com/sprint/mission/discodeit/status/BinaryContentInterface.java new file mode 100644 index 00000000..2adf308e --- /dev/null +++ b/discodeit/src/main/java/com/sprint/mission/discodeit/status/BinaryContentInterface.java @@ -0,0 +1,15 @@ +package com.sprint.mission.discodeit.status; + +import com.sprint.mission.discodeit.entity.BinaryContent; + +import java.util.List; +import java.util.Optional; +import java.util.UUID; + +public interface BinaryContentInterface { + void save(BinaryContent binaryContent); + Optional findById(UUID id); + List findAllByIdIn(List ids); + void deleteById(UUID id); + void deleteByMessageId(UUID messageId); +} diff --git a/discodeit/src/main/java/com/sprint/mission/discodeit/status/ReadStatusInterface.java b/discodeit/src/main/java/com/sprint/mission/discodeit/status/ReadStatusInterface.java new file mode 100644 index 00000000..363fdb21 --- /dev/null +++ b/discodeit/src/main/java/com/sprint/mission/discodeit/status/ReadStatusInterface.java @@ -0,0 +1,19 @@ +package com.sprint.mission.discodeit.status; + +import com.sprint.mission.discodeit.entity.ReadStatus; + +import java.util.List; +import java.util.Optional; +import java.util.UUID; + +public interface ReadStatusInterface { + void save(ReadStatus readStatus); + Optional findBy(UUID userId, UUID channelId); + List findAllByUserId(UUID userId); + List findAllByChannelId(UUID channelId); + Optional findById(UUID id); + void deleteById(UUID id); + void deleteAllByChannelId(UUID ChannelId); + List findByChannel(UUID channelId); + //Optinal : 있을수도있고 없을수도있는 상태를 둘 다 정상적인 상태로 만듬 -> null 방지 +} diff --git a/discodeit/src/main/java/com/sprint/mission/discodeit/status/UserStatusInterface.java b/discodeit/src/main/java/com/sprint/mission/discodeit/status/UserStatusInterface.java new file mode 100644 index 00000000..42b022b8 --- /dev/null +++ b/discodeit/src/main/java/com/sprint/mission/discodeit/status/UserStatusInterface.java @@ -0,0 +1,16 @@ +package com.sprint.mission.discodeit.status; + +import com.sprint.mission.discodeit.entity.UserStatus; +import org.springframework.stereotype.Repository; + +import java.util.List; +import java.util.Optional; +import java.util.UUID; +@Repository +public interface UserStatusInterface { + void save(UserStatus userStatus); + Optional findById(UUID id); + Optional findByUser(UUID userId); + List findAll(); + void deleteById(UUID id); +} diff --git a/discodeit/src/main/resources/application.yaml b/discodeit/src/main/resources/application.yaml new file mode 100644 index 00000000..67790ce5 --- /dev/null +++ b/discodeit/src/main/resources/application.yaml @@ -0,0 +1,3 @@ +spring: + application: + name: "disodeit" \ No newline at end of file diff --git a/discodeit/src/test/java/com/sprint/mission/discodeit/DiscodeitApplicationTests.java b/discodeit/src/test/java/com/sprint/mission/discodeit/DiscodeitApplicationTests.java new file mode 100644 index 00000000..3a987a21 --- /dev/null +++ b/discodeit/src/test/java/com/sprint/mission/discodeit/DiscodeitApplicationTests.java @@ -0,0 +1,13 @@ +package com.sprint.mission.discodeit; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class DiscodeitApplicationTests { + + @Test + void contextLoads() { + } + +} diff --git a/file-data-map/Channel/452ce9e8-d8a5-4430-8084-a88655e1f656.ser b/file-data-map/Channel/452ce9e8-d8a5-4430-8084-a88655e1f656.ser new file mode 100644 index 00000000..d36b799e Binary files /dev/null and b/file-data-map/Channel/452ce9e8-d8a5-4430-8084-a88655e1f656.ser differ diff --git a/file-data-map/Message/788364a5-360d-4c7d-bc72-e8e7d5393c1b.ser b/file-data-map/Message/788364a5-360d-4c7d-bc72-e8e7d5393c1b.ser new file mode 100644 index 00000000..89686c29 Binary files /dev/null and b/file-data-map/Message/788364a5-360d-4c7d-bc72-e8e7d5393c1b.ser differ diff --git a/file-data-map/User/f4de6b18-eeb8-47cf-9c8c-4a279bcd3735.ser b/file-data-map/User/f4de6b18-eeb8-47cf-9c8c-4a279bcd3735.ser new file mode 100644 index 00000000..d29597fc Binary files /dev/null and b/file-data-map/User/f4de6b18-eeb8-47cf-9c8c-4a279bcd3735.ser differ