From a5dad657605b58f8b580836ae0fb0e91f8dffd75 Mon Sep 17 00:00:00 2001 From: hyun98 Date: Sun, 20 Aug 2023 20:14:05 +0900 Subject: [PATCH 1/7] create chat service base code #2 --- sns_service/build.gradle.kts | 1 + .../chat/config/ChatRedisConfig.kt | 17 ++++++++++ .../chat/controller/ChatController.kt | 32 +++++++++++++++++++ .../chat/dto/request/NewMessageRequest.kt | 5 +++ .../dto/response/ChatMessageAllResponse.kt | 17 ++++++++++ .../chat/dto/response/ChatMessageResponse.kt | 12 +++++++ .../sns_service/chat/entity/ChatMessage.kt | 20 ++++++++++++ .../chat/repository/ChatRepository.kt | 8 +++++ .../sns_service/chat/service/ChatService.kt | 25 +++++++++++++++ 9 files changed, 137 insertions(+) create mode 100644 sns_service/src/main/kotlin/joryu/sns_service/chat/config/ChatRedisConfig.kt create mode 100644 sns_service/src/main/kotlin/joryu/sns_service/chat/controller/ChatController.kt create mode 100644 sns_service/src/main/kotlin/joryu/sns_service/chat/dto/request/NewMessageRequest.kt create mode 100644 sns_service/src/main/kotlin/joryu/sns_service/chat/dto/response/ChatMessageAllResponse.kt create mode 100644 sns_service/src/main/kotlin/joryu/sns_service/chat/dto/response/ChatMessageResponse.kt create mode 100644 sns_service/src/main/kotlin/joryu/sns_service/chat/entity/ChatMessage.kt create mode 100644 sns_service/src/main/kotlin/joryu/sns_service/chat/repository/ChatRepository.kt create mode 100644 sns_service/src/main/kotlin/joryu/sns_service/chat/service/ChatService.kt diff --git a/sns_service/build.gradle.kts b/sns_service/build.gradle.kts index a47a8a4..a532a59 100644 --- a/sns_service/build.gradle.kts +++ b/sns_service/build.gradle.kts @@ -29,6 +29,7 @@ dependencies { implementation("com.fasterxml.jackson.module:jackson-module-kotlin") implementation("org.jetbrains.kotlin:kotlin-reflect") implementation("org.springframework.boot:spring-boot-starter-data-jpa") + implementation ("org.springframework.boot:spring-boot-starter-data-redis") implementation("org.springframework.boot:spring-boot-starter-actuator") implementation("io.micrometer:micrometer-registry-prometheus") implementation ("net.logstash.logback:logstash-logback-encoder:7.3") diff --git a/sns_service/src/main/kotlin/joryu/sns_service/chat/config/ChatRedisConfig.kt b/sns_service/src/main/kotlin/joryu/sns_service/chat/config/ChatRedisConfig.kt new file mode 100644 index 0000000..2f1f169 --- /dev/null +++ b/sns_service/src/main/kotlin/joryu/sns_service/chat/config/ChatRedisConfig.kt @@ -0,0 +1,17 @@ +package joryu.sns_service.chat.config + +import org.springframework.context.annotation.Bean +import org.springframework.context.annotation.Configuration +import org.springframework.data.redis.connection.RedisConnectionFactory +import org.springframework.data.redis.core.RedisTemplate + +@Configuration +class ChatRedisConfig { + + @Bean + fun redisTemplate(redisConnectionFactory: RedisConnectionFactory): RedisTemplate { + val template = RedisTemplate() + template.connectionFactory = redisConnectionFactory + return template + } +} \ No newline at end of file diff --git a/sns_service/src/main/kotlin/joryu/sns_service/chat/controller/ChatController.kt b/sns_service/src/main/kotlin/joryu/sns_service/chat/controller/ChatController.kt new file mode 100644 index 0000000..f214941 --- /dev/null +++ b/sns_service/src/main/kotlin/joryu/sns_service/chat/controller/ChatController.kt @@ -0,0 +1,32 @@ +package joryu.sns_service.chat.controller + +import joryu.sns_service.chat.dto.request.NewMessageRequest +import joryu.sns_service.chat.dto.response.ChatMessageAllResponse +import joryu.sns_service.chat.service.ChatService +import lombok.RequiredArgsConstructor +import org.springframework.http.ResponseEntity +import org.springframework.stereotype.Controller +import org.springframework.web.bind.annotation.GetMapping +import org.springframework.web.bind.annotation.PostMapping +import org.springframework.web.bind.annotation.RequestBody + +@Controller +@RequiredArgsConstructor +class ChatController( + val chatService: ChatService +) { + @PostMapping("/api/chat") + fun createMessage(@RequestBody newMessage: NewMessageRequest): ResponseEntity { + if (newMessage.message.isEmpty()) { + return ResponseEntity.badRequest().body("Empty Message now Allow") + } + chatService.create(newMessage) + return ResponseEntity.ok().build() + } + + @GetMapping("api/chat") + fun getAllMessage(): ResponseEntity { + val findAll = chatService.findAll() + return ResponseEntity.ok(ChatMessageAllResponse(findAll)) + } +} \ No newline at end of file diff --git a/sns_service/src/main/kotlin/joryu/sns_service/chat/dto/request/NewMessageRequest.kt b/sns_service/src/main/kotlin/joryu/sns_service/chat/dto/request/NewMessageRequest.kt new file mode 100644 index 0000000..41e71d1 --- /dev/null +++ b/sns_service/src/main/kotlin/joryu/sns_service/chat/dto/request/NewMessageRequest.kt @@ -0,0 +1,5 @@ +package joryu.sns_service.chat.dto.request + +class NewMessageRequest(val message: String){ + +} \ No newline at end of file diff --git a/sns_service/src/main/kotlin/joryu/sns_service/chat/dto/response/ChatMessageAllResponse.kt b/sns_service/src/main/kotlin/joryu/sns_service/chat/dto/response/ChatMessageAllResponse.kt new file mode 100644 index 0000000..18e6aa8 --- /dev/null +++ b/sns_service/src/main/kotlin/joryu/sns_service/chat/dto/response/ChatMessageAllResponse.kt @@ -0,0 +1,17 @@ +package joryu.sns_service.chat.dto.response + +import joryu.sns_service.chat.entity.ChatMessage + +class ChatMessageAllResponse(chatMessages: List) { + private val chatMessages = chatMessages.map { m -> m?.toDto() }.toList() + + private fun ChatMessage.toDto(): ChatMessageResponse { + return ChatMessageResponse( + this.id, + this.message, + 1L, + "user", + this.postDateTime + ) + } +} \ No newline at end of file diff --git a/sns_service/src/main/kotlin/joryu/sns_service/chat/dto/response/ChatMessageResponse.kt b/sns_service/src/main/kotlin/joryu/sns_service/chat/dto/response/ChatMessageResponse.kt new file mode 100644 index 0000000..0cd7db2 --- /dev/null +++ b/sns_service/src/main/kotlin/joryu/sns_service/chat/dto/response/ChatMessageResponse.kt @@ -0,0 +1,12 @@ +package joryu.sns_service.chat.dto.response + +import org.joda.time.DateTime + +class ChatMessageResponse( + id: String, + message: String, + profileId: Long, + profileName: String, + postDateTime: String +){ +} \ No newline at end of file diff --git a/sns_service/src/main/kotlin/joryu/sns_service/chat/entity/ChatMessage.kt b/sns_service/src/main/kotlin/joryu/sns_service/chat/entity/ChatMessage.kt new file mode 100644 index 0000000..f9a5dda --- /dev/null +++ b/sns_service/src/main/kotlin/joryu/sns_service/chat/entity/ChatMessage.kt @@ -0,0 +1,20 @@ +package joryu.sns_service.chat.entity + +import jakarta.persistence.Column +import jakarta.persistence.Entity +import jakarta.persistence.Id +import jakarta.persistence.Table +import org.joda.time.DateTime +import java.util.* + +@Table(name = "chat_message") +@Entity +class ChatMessage( + val message: String = "", + val profileId: Long? = null, + + @Id + val id: String = UUID.randomUUID().toString(), + val postDateTime: String = DateTime.now().toString() +) { +} diff --git a/sns_service/src/main/kotlin/joryu/sns_service/chat/repository/ChatRepository.kt b/sns_service/src/main/kotlin/joryu/sns_service/chat/repository/ChatRepository.kt new file mode 100644 index 0000000..480f07f --- /dev/null +++ b/sns_service/src/main/kotlin/joryu/sns_service/chat/repository/ChatRepository.kt @@ -0,0 +1,8 @@ +package joryu.sns_service.chat.repository + +import joryu.sns_service.chat.entity.ChatMessage +import org.springframework.data.jpa.repository.JpaRepository + +interface ChatRepository : JpaRepository { + +} \ No newline at end of file diff --git a/sns_service/src/main/kotlin/joryu/sns_service/chat/service/ChatService.kt b/sns_service/src/main/kotlin/joryu/sns_service/chat/service/ChatService.kt new file mode 100644 index 0000000..0071ba0 --- /dev/null +++ b/sns_service/src/main/kotlin/joryu/sns_service/chat/service/ChatService.kt @@ -0,0 +1,25 @@ +package joryu.sns_service.chat.service + +import joryu.sns_service.chat.dto.request.NewMessageRequest +import joryu.sns_service.chat.entity.ChatMessage +import joryu.sns_service.chat.repository.ChatRepository +import joryu.sns_service.profile.repository.ProfileRepository +import lombok.RequiredArgsConstructor +import org.springframework.stereotype.Service + +@Service +@RequiredArgsConstructor +class ChatService( + private val chatRepository: ChatRepository, + private val profileRepository: ProfileRepository +){ + + fun findAll(): List { + return chatRepository.findAll() + } + + fun create(newMessage: NewMessageRequest) { + val chatMessage = ChatMessage(newMessage.message, 1) + chatRepository.save(chatMessage) + } +} \ No newline at end of file From aa765bc82ec27ae2743d3a45cf0381421ceadda8 Mon Sep 17 00:00:00 2001 From: hyun98 Date: Sun, 20 Aug 2023 20:55:44 +0900 Subject: [PATCH 2/7] fix error code 1. add service transactional annotation 2. add typo ChatMessage 'val' 3. fix nullable field request message --- .../sns_service/chat/controller/ChatController.kt | 5 +---- .../sns_service/chat/dto/request/NewMessageRequest.kt | 2 +- .../chat/dto/response/ChatMessageAllResponse.kt | 2 +- .../chat/dto/response/ChatMessageResponse.kt | 10 +++++----- .../joryu/sns_service/chat/entity/ChatMessage.kt | 2 +- .../joryu/sns_service/chat/service/ChatService.kt | 3 +++ 6 files changed, 12 insertions(+), 12 deletions(-) diff --git a/sns_service/src/main/kotlin/joryu/sns_service/chat/controller/ChatController.kt b/sns_service/src/main/kotlin/joryu/sns_service/chat/controller/ChatController.kt index f214941..7dcc311 100644 --- a/sns_service/src/main/kotlin/joryu/sns_service/chat/controller/ChatController.kt +++ b/sns_service/src/main/kotlin/joryu/sns_service/chat/controller/ChatController.kt @@ -17,14 +17,11 @@ class ChatController( ) { @PostMapping("/api/chat") fun createMessage(@RequestBody newMessage: NewMessageRequest): ResponseEntity { - if (newMessage.message.isEmpty()) { - return ResponseEntity.badRequest().body("Empty Message now Allow") - } chatService.create(newMessage) return ResponseEntity.ok().build() } - @GetMapping("api/chat") + @GetMapping("/api/chat") fun getAllMessage(): ResponseEntity { val findAll = chatService.findAll() return ResponseEntity.ok(ChatMessageAllResponse(findAll)) diff --git a/sns_service/src/main/kotlin/joryu/sns_service/chat/dto/request/NewMessageRequest.kt b/sns_service/src/main/kotlin/joryu/sns_service/chat/dto/request/NewMessageRequest.kt index 41e71d1..4072d9b 100644 --- a/sns_service/src/main/kotlin/joryu/sns_service/chat/dto/request/NewMessageRequest.kt +++ b/sns_service/src/main/kotlin/joryu/sns_service/chat/dto/request/NewMessageRequest.kt @@ -1,5 +1,5 @@ package joryu.sns_service.chat.dto.request -class NewMessageRequest(val message: String){ +class NewMessageRequest(val message: String?){ } \ No newline at end of file diff --git a/sns_service/src/main/kotlin/joryu/sns_service/chat/dto/response/ChatMessageAllResponse.kt b/sns_service/src/main/kotlin/joryu/sns_service/chat/dto/response/ChatMessageAllResponse.kt index 18e6aa8..7605c2d 100644 --- a/sns_service/src/main/kotlin/joryu/sns_service/chat/dto/response/ChatMessageAllResponse.kt +++ b/sns_service/src/main/kotlin/joryu/sns_service/chat/dto/response/ChatMessageAllResponse.kt @@ -3,7 +3,7 @@ package joryu.sns_service.chat.dto.response import joryu.sns_service.chat.entity.ChatMessage class ChatMessageAllResponse(chatMessages: List) { - private val chatMessages = chatMessages.map { m -> m?.toDto() }.toList() + val chatMessages = chatMessages.map { m -> m?.toDto() }.toList() private fun ChatMessage.toDto(): ChatMessageResponse { return ChatMessageResponse( diff --git a/sns_service/src/main/kotlin/joryu/sns_service/chat/dto/response/ChatMessageResponse.kt b/sns_service/src/main/kotlin/joryu/sns_service/chat/dto/response/ChatMessageResponse.kt index 0cd7db2..c7907d4 100644 --- a/sns_service/src/main/kotlin/joryu/sns_service/chat/dto/response/ChatMessageResponse.kt +++ b/sns_service/src/main/kotlin/joryu/sns_service/chat/dto/response/ChatMessageResponse.kt @@ -3,10 +3,10 @@ package joryu.sns_service.chat.dto.response import org.joda.time.DateTime class ChatMessageResponse( - id: String, - message: String, - profileId: Long, - profileName: String, - postDateTime: String + val id: String, + val message: String?, + val profileId: Long, + val profileName: String, + val postDateTime: String ){ } \ No newline at end of file diff --git a/sns_service/src/main/kotlin/joryu/sns_service/chat/entity/ChatMessage.kt b/sns_service/src/main/kotlin/joryu/sns_service/chat/entity/ChatMessage.kt index f9a5dda..e7bf2f8 100644 --- a/sns_service/src/main/kotlin/joryu/sns_service/chat/entity/ChatMessage.kt +++ b/sns_service/src/main/kotlin/joryu/sns_service/chat/entity/ChatMessage.kt @@ -10,7 +10,7 @@ import java.util.* @Table(name = "chat_message") @Entity class ChatMessage( - val message: String = "", + val message: String? = "", val profileId: Long? = null, @Id diff --git a/sns_service/src/main/kotlin/joryu/sns_service/chat/service/ChatService.kt b/sns_service/src/main/kotlin/joryu/sns_service/chat/service/ChatService.kt index 0071ba0..e1b22ed 100644 --- a/sns_service/src/main/kotlin/joryu/sns_service/chat/service/ChatService.kt +++ b/sns_service/src/main/kotlin/joryu/sns_service/chat/service/ChatService.kt @@ -6,6 +6,7 @@ import joryu.sns_service.chat.repository.ChatRepository import joryu.sns_service.profile.repository.ProfileRepository import lombok.RequiredArgsConstructor import org.springframework.stereotype.Service +import org.springframework.transaction.annotation.Transactional @Service @RequiredArgsConstructor @@ -14,10 +15,12 @@ class ChatService( private val profileRepository: ProfileRepository ){ + @Transactional(readOnly = true) fun findAll(): List { return chatRepository.findAll() } + @Transactional fun create(newMessage: NewMessageRequest) { val chatMessage = ChatMessage(newMessage.message, 1) chatRepository.save(chatMessage) From 127403bbe9dd55621d4ea0093676bbb60d986c68 Mon Sep 17 00:00:00 2001 From: hyun98 Date: Sun, 17 Sep 2023 15:59:37 +0900 Subject: [PATCH 3/7] feat: set WebsocketConfig and front-test-bed --- front-test-bed/README.md | 13 ++++ front-test-bed/app.js | 60 ++++++++++++++++++ front-test-bed/editConfig.png | Bin 0 -> 56754 bytes front-test-bed/index.html | 52 +++++++++++++++ front-test-bed/setProfile.png | Bin 0 -> 248461 bytes .../chat/config/WebSocketConfig.kt | 24 +++++++ .../chat/controller/GreetingController.kt | 18 ++++++ .../chat/message/GreetingMessage.kt | 5 ++ .../sns_service/chat/message/HelloMessage.kt | 5 ++ .../src/main/resources/application.yaml | 29 ++++++++- 10 files changed, 205 insertions(+), 1 deletion(-) create mode 100644 front-test-bed/README.md create mode 100644 front-test-bed/app.js create mode 100644 front-test-bed/editConfig.png create mode 100644 front-test-bed/index.html create mode 100644 front-test-bed/setProfile.png create mode 100644 sns_service/src/main/kotlin/joryu/sns_service/chat/config/WebSocketConfig.kt create mode 100644 sns_service/src/main/kotlin/joryu/sns_service/chat/controller/GreetingController.kt create mode 100644 sns_service/src/main/kotlin/joryu/sns_service/chat/message/GreetingMessage.kt create mode 100644 sns_service/src/main/kotlin/joryu/sns_service/chat/message/HelloMessage.kt diff --git a/front-test-bed/README.md b/front-test-bed/README.md new file mode 100644 index 0000000..eb6da1f --- /dev/null +++ b/front-test-bed/README.md @@ -0,0 +1,13 @@ +# Websocket Simple Test + +1. ## Click `Edit Configurations...` +![Edit-Configurations](editConfig.png) + +2. ## Input `dev` in 'Active profiles' +![Alt text](setProfile.png) + +> dev 프로필로 실행하면 h2 db를 사용해 MySQL의 실행 없이 간단한 테스트가 가능합니다. + +3. ## Run! + +4. ## Open `front-test-bed/index.html` \ No newline at end of file diff --git a/front-test-bed/app.js b/front-test-bed/app.js new file mode 100644 index 0000000..0b94849 --- /dev/null +++ b/front-test-bed/app.js @@ -0,0 +1,60 @@ +const stompClient = new StompJs.Client({ + brokerURL: 'ws://localhost:8080/ws-stomp' +}); + +stompClient.onConnect = (frame) => { + setConnected(true); + console.log('Connected: ' + frame); + stompClient.subscribe('/sub/greetings', (greeting) => { + showGreeting(JSON.parse(greeting.body).content); + }); +}; + +stompClient.onWebSocketError = (error) => { + console.error('Error with websocket', error); +}; + +stompClient.onStompError = (frame) => { + console.error('Broker reported error: ' + frame.headers['message']); + console.error('Additional details: ' + frame.body); +}; + +function setConnected(connected) { + $("#connect").prop("disabled", connected); + $("#disconnect").prop("disabled", !connected); + if (connected) { + $("#conversation").show(); + } + else { + $("#conversation").hide(); + } + $("#greetings").html(""); +} + +function connect() { + stompClient.activate(); +} + +function disconnect() { + stompClient.deactivate(); + setConnected(false); + console.log("Disconnected"); +} + +function sendName() { + stompClient.publish({ + destination: "/pub/hello", + body: JSON.stringify({'name': $("#name").val()}) + }); +} + +function showGreeting(message) { + $("#greetings").append("" + message + ""); +} + +$(function () { + $("form").on('submit', (e) => e.preventDefault()); + $( "#connect" ).click(() => connect()); + $( "#disconnect" ).click(() => disconnect()); + $( "#send" ).click(() => sendName()); +}); \ No newline at end of file diff --git a/front-test-bed/editConfig.png b/front-test-bed/editConfig.png new file mode 100644 index 0000000000000000000000000000000000000000..078abf7ad448540a62e2255fbd8c0a1d92042b78 GIT binary patch literal 56754 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ξ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 yL-_mP`qu^cAKg~>CZ-qgbnn4gt_JbBo*Q^nP + + + Hello WebSocket + + + + + + + + +
+
+
+
+
+ + + +
+
+
+
+
+
+ + +
+ +
+
+
+
+
+ + + + + + + + +
Greetings
+
+
+
+ + \ No newline at end of file diff --git a/front-test-bed/setProfile.png b/front-test-bed/setProfile.png new file mode 100644 index 0000000000000000000000000000000000000000..53d34b9d8cdbf8ab41266686039af9a6b62556e0 GIT binary patch literal 248461 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
dmbjfe9z%N)E5C%xJ!8(0BN)n=W#FbKv}wS@c3 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 Date: Sun, 17 Sep 2023 17:21:53 +0900 Subject: [PATCH 4/7] =?UTF-8?q?chore:=20WebSocketConfig=20=EC=A3=BC?= =?UTF-8?q?=EC=84=9D=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../joryu/sns_service/chat/config/WebSocketConfig.kt | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/sns_service/src/main/kotlin/joryu/sns_service/chat/config/WebSocketConfig.kt b/sns_service/src/main/kotlin/joryu/sns_service/chat/config/WebSocketConfig.kt index 81b75fc..b23d260 100644 --- a/sns_service/src/main/kotlin/joryu/sns_service/chat/config/WebSocketConfig.kt +++ b/sns_service/src/main/kotlin/joryu/sns_service/chat/config/WebSocketConfig.kt @@ -7,15 +7,25 @@ import org.springframework.web.socket.config.annotation.StompEndpointRegistry import org.springframework.web.socket.config.annotation.WebSocketMessageBrokerConfigurer +/** + * WebSocket 설정을 관리하는 클래스 + */ @Configuration @EnableWebSocketMessageBroker class WebSocketConfig : WebSocketMessageBrokerConfigurer { + /** + * 목적지 prefix 가 "/sub" 인 메시지를 필터링합니다. (outbound) + * 도착지 prefix 가 "/pub" 인 메시지를 필터링합니다. (inbound) + */ override fun configureMessageBroker(config: MessageBrokerRegistry) { config.enableSimpleBroker("/sub") config.setApplicationDestinationPrefixes("/pub") } + /** + * STOMP endpoint 를 설정합니다. + */ override fun registerStompEndpoints(registry: StompEndpointRegistry) { registry .addEndpoint("/ws-stomp") From 5bf92800f56decd56952ccf492b754db22067fa8 Mon Sep 17 00:00:00 2001 From: hyun98 Date: Sun, 15 Oct 2023 20:09:50 +0900 Subject: [PATCH 5/7] feature: configure redis with chat service --- front-test-bed/README.md | 4 +- front-test-bed/app.js | 19 ++-- front-test-bed/index.html | 16 ++++ sns_service/build.gradle.kts | 5 ++ .../sns_service/SnsServiceApplication.kt | 0 .../sns_service/channel/entity/Channel.kt | 34 ++++++++ .../channel/entity/ChannelProfile.kt | 21 +++++ .../sns_service/channel/enums/ChannelType.kt | 5 ++ .../repository/ChannelProfileRepository.kt | 7 ++ .../channel/repository/ChannelRepository.kt | 7 ++ .../chat/config/ChatRedisConfig.kt | 17 ---- .../chat/config/EmbeddedRedisConfig.kt | 30 +++++++ .../sns_service/chat/config/RedisConfig.kt | 86 +++++++++++++++++++ .../chat/config/WebSocketConfig.kt | 0 .../chat/controller/ChatController.kt | 29 ------- .../chat/controller/ChatMessageController.kt | 21 +++++ .../chat/controller/GreetingController.kt | 18 ---- .../joryu/sns_service/chat/dto/ChatMessage.kt | 7 ++ .../chat/dto/request/NewMessageRequest.kt | 5 -- .../dto/response/ChatMessageAllResponse.kt | 17 ---- .../chat/dto/response/ChatMessageResponse.kt | 12 --- .../sns_service/chat/entity/ChatMessage.kt | 20 ----- .../chat/message/GreetingMessage.kt | 5 -- .../sns_service/chat/message/HelloMessage.kt | 5 -- .../chat/repository/ChatRepository.kt | 8 -- .../sns_service/chat/service/ChatListener.kt | 31 +++++++ .../sns_service/chat/service/ChatPublisher.kt | 16 ++++ .../sns_service/chat/service/ChatService.kt | 28 ------ .../comment/controller/CommentController.kt | 0 .../dto/request/CommentCreateRequest.kt | 0 .../dto/request/CommentUpdateRequest.kt | 0 .../comment/dto/response/CommentResponse.kt | 0 .../sns_service/comment/entity/Comment.kt | 0 .../sns_service/comment/entity/CommentLike.kt | 0 .../repository/CommentLikeRepository.kt | 0 .../comment/repository/CommentRepository.kt | 0 .../comment/service/CommentService.kt | 0 .../common/dto/response/CommonResponseBody.kt | 0 .../sns_service/common/entity/BaseEntity.kt | 0 .../follow/controller/FollowController.kt | 0 .../follow/dto/request/FollowRequest.kt | 0 .../follow/dto/request/UnFollowRequest.kt | 0 .../joryu/sns_service/follow/entity/Follow.kt | 0 .../follow/repository/FollowRepository.kt | 0 .../follow/service/FollowService.kt | 0 .../post/controller/PostController.kt | 0 .../post/controller/PostLikeController.kt | 0 .../post/controller/ShareController.kt | 0 .../post/dto/request/PostCreateRequest.kt | 0 .../post/dto/request/PostUpdateRequest.kt | 0 .../dto/response/PostLikeCountResponse.kt | 0 .../post/dto/response/PostResponse.kt | 0 .../joryu/sns_service/post/entity/Post.kt | 0 .../joryu/sns_service/post/entity/PostLike.kt | 0 .../joryu/sns_service/post/entity/PostView.kt | 0 .../joryu/sns_service/post/entity/Share.kt | 0 .../post/repository/PostLikeRepository.kt | 0 .../post/repository/PostRepository.kt | 0 .../post/repository/PostViewRepository.kt | 0 .../post/repository/ShareRepository.kt | 0 .../post/service/PostLikeService.kt | 0 .../sns_service/post/service/PostService.kt | 0 .../sns_service/post/service/ShareService.kt | 0 .../controller/ProfileApiController.kt | 0 .../dto/request/ProfileCreateRequest.kt | 0 .../dto/request/ProfileUpdateRequest.kt | 0 .../response/AllFollowerProfileResponse.kt | 0 .../dto/response/ProfileInfoResponse.kt | 0 .../sns_service/profile/entity/Profile.kt | 9 ++ .../profile/exception/ProfileBaseException.kt | 0 .../exception/ProfileExceptionEnums.kt | 0 .../exception/ProfileExceptionHandler.kt | 0 .../profile/repository/ProfileRepository.kt | 1 + .../profile/service/ProfileService.kt | 6 ++ .../kotlin/joryu/sns_service/utils/IpUtils.kt | 0 75 files changed, 318 insertions(+), 171 deletions(-) mode change 100644 => 100755 sns_service/src/main/kotlin/joryu/sns_service/SnsServiceApplication.kt create mode 100755 sns_service/src/main/kotlin/joryu/sns_service/channel/entity/Channel.kt create mode 100755 sns_service/src/main/kotlin/joryu/sns_service/channel/entity/ChannelProfile.kt create mode 100644 sns_service/src/main/kotlin/joryu/sns_service/channel/enums/ChannelType.kt create mode 100644 sns_service/src/main/kotlin/joryu/sns_service/channel/repository/ChannelProfileRepository.kt create mode 100644 sns_service/src/main/kotlin/joryu/sns_service/channel/repository/ChannelRepository.kt delete mode 100644 sns_service/src/main/kotlin/joryu/sns_service/chat/config/ChatRedisConfig.kt create mode 100644 sns_service/src/main/kotlin/joryu/sns_service/chat/config/EmbeddedRedisConfig.kt create mode 100755 sns_service/src/main/kotlin/joryu/sns_service/chat/config/RedisConfig.kt mode change 100644 => 100755 sns_service/src/main/kotlin/joryu/sns_service/chat/config/WebSocketConfig.kt delete mode 100644 sns_service/src/main/kotlin/joryu/sns_service/chat/controller/ChatController.kt create mode 100644 sns_service/src/main/kotlin/joryu/sns_service/chat/controller/ChatMessageController.kt delete mode 100644 sns_service/src/main/kotlin/joryu/sns_service/chat/controller/GreetingController.kt create mode 100644 sns_service/src/main/kotlin/joryu/sns_service/chat/dto/ChatMessage.kt delete mode 100644 sns_service/src/main/kotlin/joryu/sns_service/chat/dto/request/NewMessageRequest.kt delete mode 100644 sns_service/src/main/kotlin/joryu/sns_service/chat/dto/response/ChatMessageAllResponse.kt delete mode 100644 sns_service/src/main/kotlin/joryu/sns_service/chat/dto/response/ChatMessageResponse.kt delete mode 100644 sns_service/src/main/kotlin/joryu/sns_service/chat/entity/ChatMessage.kt delete mode 100644 sns_service/src/main/kotlin/joryu/sns_service/chat/message/GreetingMessage.kt delete mode 100644 sns_service/src/main/kotlin/joryu/sns_service/chat/message/HelloMessage.kt delete mode 100644 sns_service/src/main/kotlin/joryu/sns_service/chat/repository/ChatRepository.kt create mode 100644 sns_service/src/main/kotlin/joryu/sns_service/chat/service/ChatListener.kt create mode 100644 sns_service/src/main/kotlin/joryu/sns_service/chat/service/ChatPublisher.kt delete mode 100644 sns_service/src/main/kotlin/joryu/sns_service/chat/service/ChatService.kt mode change 100644 => 100755 sns_service/src/main/kotlin/joryu/sns_service/comment/controller/CommentController.kt mode change 100644 => 100755 sns_service/src/main/kotlin/joryu/sns_service/comment/dto/request/CommentCreateRequest.kt mode change 100644 => 100755 sns_service/src/main/kotlin/joryu/sns_service/comment/dto/request/CommentUpdateRequest.kt mode change 100644 => 100755 sns_service/src/main/kotlin/joryu/sns_service/comment/dto/response/CommentResponse.kt mode change 100644 => 100755 sns_service/src/main/kotlin/joryu/sns_service/comment/entity/Comment.kt mode change 100644 => 100755 sns_service/src/main/kotlin/joryu/sns_service/comment/entity/CommentLike.kt mode change 100644 => 100755 sns_service/src/main/kotlin/joryu/sns_service/comment/repository/CommentLikeRepository.kt mode change 100644 => 100755 sns_service/src/main/kotlin/joryu/sns_service/comment/repository/CommentRepository.kt mode change 100644 => 100755 sns_service/src/main/kotlin/joryu/sns_service/comment/service/CommentService.kt mode change 100644 => 100755 sns_service/src/main/kotlin/joryu/sns_service/common/dto/response/CommonResponseBody.kt mode change 100644 => 100755 sns_service/src/main/kotlin/joryu/sns_service/common/entity/BaseEntity.kt mode change 100644 => 100755 sns_service/src/main/kotlin/joryu/sns_service/follow/controller/FollowController.kt mode change 100644 => 100755 sns_service/src/main/kotlin/joryu/sns_service/follow/dto/request/FollowRequest.kt mode change 100644 => 100755 sns_service/src/main/kotlin/joryu/sns_service/follow/dto/request/UnFollowRequest.kt mode change 100644 => 100755 sns_service/src/main/kotlin/joryu/sns_service/follow/entity/Follow.kt mode change 100644 => 100755 sns_service/src/main/kotlin/joryu/sns_service/follow/repository/FollowRepository.kt mode change 100644 => 100755 sns_service/src/main/kotlin/joryu/sns_service/follow/service/FollowService.kt mode change 100644 => 100755 sns_service/src/main/kotlin/joryu/sns_service/post/controller/PostController.kt mode change 100644 => 100755 sns_service/src/main/kotlin/joryu/sns_service/post/controller/PostLikeController.kt mode change 100644 => 100755 sns_service/src/main/kotlin/joryu/sns_service/post/controller/ShareController.kt mode change 100644 => 100755 sns_service/src/main/kotlin/joryu/sns_service/post/dto/request/PostCreateRequest.kt mode change 100644 => 100755 sns_service/src/main/kotlin/joryu/sns_service/post/dto/request/PostUpdateRequest.kt mode change 100644 => 100755 sns_service/src/main/kotlin/joryu/sns_service/post/dto/response/PostLikeCountResponse.kt mode change 100644 => 100755 sns_service/src/main/kotlin/joryu/sns_service/post/dto/response/PostResponse.kt mode change 100644 => 100755 sns_service/src/main/kotlin/joryu/sns_service/post/entity/Post.kt mode change 100644 => 100755 sns_service/src/main/kotlin/joryu/sns_service/post/entity/PostLike.kt mode change 100644 => 100755 sns_service/src/main/kotlin/joryu/sns_service/post/entity/PostView.kt mode change 100644 => 100755 sns_service/src/main/kotlin/joryu/sns_service/post/entity/Share.kt mode change 100644 => 100755 sns_service/src/main/kotlin/joryu/sns_service/post/repository/PostLikeRepository.kt mode change 100644 => 100755 sns_service/src/main/kotlin/joryu/sns_service/post/repository/PostRepository.kt mode change 100644 => 100755 sns_service/src/main/kotlin/joryu/sns_service/post/repository/PostViewRepository.kt mode change 100644 => 100755 sns_service/src/main/kotlin/joryu/sns_service/post/repository/ShareRepository.kt mode change 100644 => 100755 sns_service/src/main/kotlin/joryu/sns_service/post/service/PostLikeService.kt mode change 100644 => 100755 sns_service/src/main/kotlin/joryu/sns_service/post/service/PostService.kt mode change 100644 => 100755 sns_service/src/main/kotlin/joryu/sns_service/post/service/ShareService.kt mode change 100644 => 100755 sns_service/src/main/kotlin/joryu/sns_service/profile/controller/ProfileApiController.kt mode change 100644 => 100755 sns_service/src/main/kotlin/joryu/sns_service/profile/dto/request/ProfileCreateRequest.kt mode change 100644 => 100755 sns_service/src/main/kotlin/joryu/sns_service/profile/dto/request/ProfileUpdateRequest.kt mode change 100644 => 100755 sns_service/src/main/kotlin/joryu/sns_service/profile/dto/response/AllFollowerProfileResponse.kt mode change 100644 => 100755 sns_service/src/main/kotlin/joryu/sns_service/profile/dto/response/ProfileInfoResponse.kt mode change 100644 => 100755 sns_service/src/main/kotlin/joryu/sns_service/profile/entity/Profile.kt mode change 100644 => 100755 sns_service/src/main/kotlin/joryu/sns_service/profile/exception/ProfileBaseException.kt mode change 100644 => 100755 sns_service/src/main/kotlin/joryu/sns_service/profile/exception/ProfileExceptionEnums.kt mode change 100644 => 100755 sns_service/src/main/kotlin/joryu/sns_service/profile/exception/ProfileExceptionHandler.kt mode change 100644 => 100755 sns_service/src/main/kotlin/joryu/sns_service/profile/repository/ProfileRepository.kt mode change 100644 => 100755 sns_service/src/main/kotlin/joryu/sns_service/profile/service/ProfileService.kt mode change 100644 => 100755 sns_service/src/main/kotlin/joryu/sns_service/utils/IpUtils.kt diff --git a/front-test-bed/README.md b/front-test-bed/README.md index eb6da1f..be2c42e 100644 --- a/front-test-bed/README.md +++ b/front-test-bed/README.md @@ -3,10 +3,10 @@ 1. ## Click `Edit Configurations...` ![Edit-Configurations](editConfig.png) -2. ## Input `dev` in 'Active profiles' +2. ## Input `local` in 'Active profiles' ![Alt text](setProfile.png) -> dev 프로필로 실행하면 h2 db를 사용해 MySQL의 실행 없이 간단한 테스트가 가능합니다. +> local 프로필로 실행하면 h2 db를 사용해 MySQL의 실행 없이 간단한 테스트가 가능합니다. 3. ## Run! diff --git a/front-test-bed/app.js b/front-test-bed/app.js index 0b94849..6bd06a5 100644 --- a/front-test-bed/app.js +++ b/front-test-bed/app.js @@ -2,11 +2,14 @@ const stompClient = new StompJs.Client({ brokerURL: 'ws://localhost:8080/ws-stomp' }); +// var channelId = "" + stompClient.onConnect = (frame) => { setConnected(true); console.log('Connected: ' + frame); - stompClient.subscribe('/sub/greetings', (greeting) => { - showGreeting(JSON.parse(greeting.body).content); + stompClient.subscribe('/sub/chat/channel/' + $("#channelId").val(), (message) => { + console.log(JSON.parse(message.body)) + showMessage(JSON.parse(message.body).content); }); }; @@ -43,12 +46,18 @@ function disconnect() { function sendName() { stompClient.publish({ - destination: "/pub/hello", - body: JSON.stringify({'name': $("#name").val()}) + destination: "/pub/chat/message", + body: JSON.stringify( + { + "channelId": $("#channelId").val(), + "sender" : $("#name").val(), + "content" : $("#content").val() + } + ) }); } -function showGreeting(message) { +function showMessage(message) { $("#greetings").append("" + message + ""); } diff --git a/front-test-bed/index.html b/front-test-bed/index.html index 6b4f0be..a32f8ad 100644 --- a/front-test-bed/index.html +++ b/front-test-bed/index.html @@ -30,9 +30,25 @@ + + +

+
+
+ + +
+
+
+
+ + +
+
+
diff --git a/sns_service/build.gradle.kts b/sns_service/build.gradle.kts index a532a59..bd196c6 100644 --- a/sns_service/build.gradle.kts +++ b/sns_service/build.gradle.kts @@ -26,6 +26,7 @@ repositories { dependencies { implementation("org.springframework.boot:spring-boot-starter-web") + implementation("org.springframework.boot:spring-boot-starter-websocket") implementation("com.fasterxml.jackson.module:jackson-module-kotlin") implementation("org.jetbrains.kotlin:kotlin-reflect") implementation("org.springframework.boot:spring-boot-starter-data-jpa") @@ -34,11 +35,15 @@ dependencies { implementation("io.micrometer:micrometer-registry-prometheus") implementation ("net.logstash.logback:logstash-logback-encoder:7.3") implementation ("io.github.microutils:kotlin-logging:3.0.5") + + //embedded-redis + implementation("it.ozimov:embedded-redis:0.7.2") compileOnly("org.projectlombok:lombok") annotationProcessor("org.projectlombok:lombok") testImplementation("org.springframework.boot:spring-boot-starter-test") runtimeOnly("com.mysql:mysql-connector-j") + runtimeOnly("com.h2database:h2") } tasks.withType { diff --git a/sns_service/src/main/kotlin/joryu/sns_service/SnsServiceApplication.kt b/sns_service/src/main/kotlin/joryu/sns_service/SnsServiceApplication.kt old mode 100644 new mode 100755 diff --git a/sns_service/src/main/kotlin/joryu/sns_service/channel/entity/Channel.kt b/sns_service/src/main/kotlin/joryu/sns_service/channel/entity/Channel.kt new file mode 100755 index 0000000..a92a539 --- /dev/null +++ b/sns_service/src/main/kotlin/joryu/sns_service/channel/entity/Channel.kt @@ -0,0 +1,34 @@ +package joryu.sns_service.channel.entity + +import jakarta.persistence.* +import joryu.sns_service.channel.enums.ChannelType +import java.io.Serializable +import java.util.* + + +@Table(name = "channel") +@Entity +class Channel( + channelName: String = "", + + @Column(name = "channel_type") + val channelType: ChannelType = ChannelType.PERSONAL +) : Serializable { + @Id + val id: String = UUID.randomUUID().toString() + + @OneToMany(mappedBy = "channel") + val channelUsers: MutableList = mutableListOf() + + @Column(name = "channel_name") + var channelName: String = channelName + private set + + fun changeChannelName(newName: String) { + channelName = newName + } + + fun addUserToChannel(user: ChannelProfile) { + channelUsers.add(user) + } +} \ No newline at end of file diff --git a/sns_service/src/main/kotlin/joryu/sns_service/channel/entity/ChannelProfile.kt b/sns_service/src/main/kotlin/joryu/sns_service/channel/entity/ChannelProfile.kt new file mode 100755 index 0000000..821ef17 --- /dev/null +++ b/sns_service/src/main/kotlin/joryu/sns_service/channel/entity/ChannelProfile.kt @@ -0,0 +1,21 @@ +package joryu.sns_service.channel.entity + +import jakarta.persistence.* +import joryu.sns_service.profile.entity.Profile +import java.io.Serializable + +@Table(name = "channel_profile") +@Entity +class ChannelProfile( + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "channel_id") + var channel: Channel? = null, + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "profile_id") + var profile: Profile? = null +): Serializable { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + val id: Long = 0 +} \ No newline at end of file diff --git a/sns_service/src/main/kotlin/joryu/sns_service/channel/enums/ChannelType.kt b/sns_service/src/main/kotlin/joryu/sns_service/channel/enums/ChannelType.kt new file mode 100644 index 0000000..c505b36 --- /dev/null +++ b/sns_service/src/main/kotlin/joryu/sns_service/channel/enums/ChannelType.kt @@ -0,0 +1,5 @@ +package joryu.sns_service.channel.enums + +enum class ChannelType { + PERSONAL, GROUP +} \ No newline at end of file diff --git a/sns_service/src/main/kotlin/joryu/sns_service/channel/repository/ChannelProfileRepository.kt b/sns_service/src/main/kotlin/joryu/sns_service/channel/repository/ChannelProfileRepository.kt new file mode 100644 index 0000000..c5e3f72 --- /dev/null +++ b/sns_service/src/main/kotlin/joryu/sns_service/channel/repository/ChannelProfileRepository.kt @@ -0,0 +1,7 @@ +package joryu.sns_service.channel.repository + +import joryu.sns_service.channel.entity.ChannelProfile +import org.springframework.data.jpa.repository.JpaRepository + +interface ChannelProfileRepository: JpaRepository { +} \ No newline at end of file diff --git a/sns_service/src/main/kotlin/joryu/sns_service/channel/repository/ChannelRepository.kt b/sns_service/src/main/kotlin/joryu/sns_service/channel/repository/ChannelRepository.kt new file mode 100644 index 0000000..823686e --- /dev/null +++ b/sns_service/src/main/kotlin/joryu/sns_service/channel/repository/ChannelRepository.kt @@ -0,0 +1,7 @@ +package joryu.sns_service.channel.repository + +import joryu.sns_service.channel.entity.Channel +import org.springframework.data.jpa.repository.JpaRepository + +interface ChannelRepository: JpaRepository { +} \ No newline at end of file diff --git a/sns_service/src/main/kotlin/joryu/sns_service/chat/config/ChatRedisConfig.kt b/sns_service/src/main/kotlin/joryu/sns_service/chat/config/ChatRedisConfig.kt deleted file mode 100644 index 2f1f169..0000000 --- a/sns_service/src/main/kotlin/joryu/sns_service/chat/config/ChatRedisConfig.kt +++ /dev/null @@ -1,17 +0,0 @@ -package joryu.sns_service.chat.config - -import org.springframework.context.annotation.Bean -import org.springframework.context.annotation.Configuration -import org.springframework.data.redis.connection.RedisConnectionFactory -import org.springframework.data.redis.core.RedisTemplate - -@Configuration -class ChatRedisConfig { - - @Bean - fun redisTemplate(redisConnectionFactory: RedisConnectionFactory): RedisTemplate { - val template = RedisTemplate() - template.connectionFactory = redisConnectionFactory - return template - } -} \ No newline at end of file diff --git a/sns_service/src/main/kotlin/joryu/sns_service/chat/config/EmbeddedRedisConfig.kt b/sns_service/src/main/kotlin/joryu/sns_service/chat/config/EmbeddedRedisConfig.kt new file mode 100644 index 0000000..e790868 --- /dev/null +++ b/sns_service/src/main/kotlin/joryu/sns_service/chat/config/EmbeddedRedisConfig.kt @@ -0,0 +1,30 @@ +package joryu.sns_service.chat.config + +import jakarta.annotation.PostConstruct +import jakarta.annotation.PreDestroy +import org.springframework.beans.factory.annotation.Value +import org.springframework.context.annotation.Configuration +import org.springframework.context.annotation.Profile +import redis.embedded.RedisServer + + +@Profile("local") // profile이 local일때만 활성화 +@Configuration +class EmbeddedRedisConfig { + + @Value("\${spring.data.redis.port}") + private val redisPort = 6379 + + private var redisServer: RedisServer? = null + + @PostConstruct + fun redisServer() { + redisServer = RedisServer(redisPort) + redisServer?.start() + } + + @PreDestroy + fun stopRedis() { + redisServer?.stop() + } +} \ No newline at end of file diff --git a/sns_service/src/main/kotlin/joryu/sns_service/chat/config/RedisConfig.kt b/sns_service/src/main/kotlin/joryu/sns_service/chat/config/RedisConfig.kt new file mode 100755 index 0000000..7ec6a56 --- /dev/null +++ b/sns_service/src/main/kotlin/joryu/sns_service/chat/config/RedisConfig.kt @@ -0,0 +1,86 @@ +package joryu.sns_service.chat.config + +import org.springframework.beans.factory.annotation.Qualifier +import org.springframework.beans.factory.annotation.Value +import org.springframework.context.annotation.Bean +import org.springframework.context.annotation.Configuration +import org.springframework.context.annotation.Primary +import org.springframework.data.redis.connection.MessageListener +import org.springframework.data.redis.connection.RedisConnectionFactory +import org.springframework.data.redis.connection.RedisStandaloneConfiguration +import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory +import org.springframework.data.redis.core.RedisTemplate +import org.springframework.data.redis.listener.ChannelTopic +import org.springframework.data.redis.listener.RedisMessageListenerContainer +import org.springframework.data.redis.listener.adapter.MessageListenerAdapter +import org.springframework.data.redis.repository.configuration.EnableRedisRepositories +import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer +import org.springframework.data.redis.serializer.StringRedisSerializer + + +/** + * 채팅에 사용되는 redis 설정 관리 + */ +@Configuration +@EnableRedisRepositories +class RedisConfig( + @Value("\${spring.data.redis.port:6379}") + private val port: Int, + + @Value("\${spring.data.redis.host:localhost}") + private val host: String +) { + + /** + * ChannelTopic 에 발행된 메시지를 처리하는 Listner 들을 설정한다. + */ + @Bean + @Primary + fun redisMessageListenerContainer( + redisConnectionFactory: RedisConnectionFactory, + chatMessageListenerAdapter: MessageListenerAdapter, + @Qualifier("chatChannelTopic") chatChannelTopic: ChannelTopic + ): RedisMessageListenerContainer { + val container = RedisMessageListenerContainer() + container.setConnectionFactory(redisConnectionFactory) + container.addMessageListener(chatMessageListenerAdapter, chatChannelTopic) + return container + } + + @Bean + fun redisConnectionFactory(): RedisConnectionFactory { + val redisStandaloneConfiguration = RedisStandaloneConfiguration() + redisStandaloneConfiguration.hostName = host + redisStandaloneConfiguration.port = port + return LettuceConnectionFactory(redisStandaloneConfiguration) + } + + /** + * RedisMessageListenerContainer 로부터 메시지를 전달받는다. + * 메시지 처리 비즈니스 로직을 담은 Subscriber Bean 을 추가해준다. + */ + @Bean + fun chatMessageListenerAdapter(listener: MessageListener): MessageListenerAdapter { + return MessageListenerAdapter(listener, "onMessage") + } + + /** + * 채팅 채널 토픽을 반환한다. + */ + @Bean(value = ["chatChannelTopic"]) + fun chatChannelTopic(): ChannelTopic { + return ChannelTopic("chat") + } + + /** + * Redis 데이터에 접근하는 redisTemplate 를 반환한다. + */ + @Bean + fun redisTemplate(connectionFactory: RedisConnectionFactory): RedisTemplate { + val redisTemplate = RedisTemplate() + redisTemplate.connectionFactory = connectionFactory + redisTemplate.keySerializer = StringRedisSerializer() + redisTemplate.valueSerializer = Jackson2JsonRedisSerializer(String::class.java) + return redisTemplate + } +} \ No newline at end of file diff --git a/sns_service/src/main/kotlin/joryu/sns_service/chat/config/WebSocketConfig.kt b/sns_service/src/main/kotlin/joryu/sns_service/chat/config/WebSocketConfig.kt old mode 100644 new mode 100755 diff --git a/sns_service/src/main/kotlin/joryu/sns_service/chat/controller/ChatController.kt b/sns_service/src/main/kotlin/joryu/sns_service/chat/controller/ChatController.kt deleted file mode 100644 index 7dcc311..0000000 --- a/sns_service/src/main/kotlin/joryu/sns_service/chat/controller/ChatController.kt +++ /dev/null @@ -1,29 +0,0 @@ -package joryu.sns_service.chat.controller - -import joryu.sns_service.chat.dto.request.NewMessageRequest -import joryu.sns_service.chat.dto.response.ChatMessageAllResponse -import joryu.sns_service.chat.service.ChatService -import lombok.RequiredArgsConstructor -import org.springframework.http.ResponseEntity -import org.springframework.stereotype.Controller -import org.springframework.web.bind.annotation.GetMapping -import org.springframework.web.bind.annotation.PostMapping -import org.springframework.web.bind.annotation.RequestBody - -@Controller -@RequiredArgsConstructor -class ChatController( - val chatService: ChatService -) { - @PostMapping("/api/chat") - fun createMessage(@RequestBody newMessage: NewMessageRequest): ResponseEntity { - chatService.create(newMessage) - return ResponseEntity.ok().build() - } - - @GetMapping("/api/chat") - fun getAllMessage(): ResponseEntity { - val findAll = chatService.findAll() - return ResponseEntity.ok(ChatMessageAllResponse(findAll)) - } -} \ No newline at end of file diff --git a/sns_service/src/main/kotlin/joryu/sns_service/chat/controller/ChatMessageController.kt b/sns_service/src/main/kotlin/joryu/sns_service/chat/controller/ChatMessageController.kt new file mode 100644 index 0000000..469f8bf --- /dev/null +++ b/sns_service/src/main/kotlin/joryu/sns_service/chat/controller/ChatMessageController.kt @@ -0,0 +1,21 @@ +package joryu.sns_service.chat.controller + +import joryu.sns_service.chat.dto.ChatMessage +import joryu.sns_service.chat.service.ChatPublisher +import org.springframework.messaging.handler.annotation.MessageMapping +import org.springframework.stereotype.Controller + +@Controller +class ChatMessageController( + private val chatPublisher: ChatPublisher +) { + + /** + * /pub/chat/message 로 들어오는 메시징을 처리한다. + */ + @MessageMapping("/chat/message") + fun sendMessage(message: ChatMessage) { + + chatPublisher.publish(message) + } +} \ No newline at end of file diff --git a/sns_service/src/main/kotlin/joryu/sns_service/chat/controller/GreetingController.kt b/sns_service/src/main/kotlin/joryu/sns_service/chat/controller/GreetingController.kt deleted file mode 100644 index 00ea398..0000000 --- a/sns_service/src/main/kotlin/joryu/sns_service/chat/controller/GreetingController.kt +++ /dev/null @@ -1,18 +0,0 @@ -package joryu.sns_service.chat.controller - -import joryu.sns_service.chat.message.GreetingMessage -import joryu.sns_service.chat.message.HelloMessage -import org.springframework.messaging.handler.annotation.MessageMapping -import org.springframework.messaging.handler.annotation.SendTo -import org.springframework.stereotype.Controller - -@Controller -class GreetingController { - - @MessageMapping("/hello") - @SendTo("/sub/greetings") - fun greeting(message: HelloMessage): GreetingMessage { - Thread.sleep(100) - return GreetingMessage("Hello, " + message.name + "!"); - } -} \ No newline at end of file diff --git a/sns_service/src/main/kotlin/joryu/sns_service/chat/dto/ChatMessage.kt b/sns_service/src/main/kotlin/joryu/sns_service/chat/dto/ChatMessage.kt new file mode 100644 index 0000000..ca0baea --- /dev/null +++ b/sns_service/src/main/kotlin/joryu/sns_service/chat/dto/ChatMessage.kt @@ -0,0 +1,7 @@ +package joryu.sns_service.chat.dto + +data class ChatMessage( + val channelId: String, + val sender: String, + val content: String = "", +) diff --git a/sns_service/src/main/kotlin/joryu/sns_service/chat/dto/request/NewMessageRequest.kt b/sns_service/src/main/kotlin/joryu/sns_service/chat/dto/request/NewMessageRequest.kt deleted file mode 100644 index 4072d9b..0000000 --- a/sns_service/src/main/kotlin/joryu/sns_service/chat/dto/request/NewMessageRequest.kt +++ /dev/null @@ -1,5 +0,0 @@ -package joryu.sns_service.chat.dto.request - -class NewMessageRequest(val message: String?){ - -} \ No newline at end of file diff --git a/sns_service/src/main/kotlin/joryu/sns_service/chat/dto/response/ChatMessageAllResponse.kt b/sns_service/src/main/kotlin/joryu/sns_service/chat/dto/response/ChatMessageAllResponse.kt deleted file mode 100644 index 7605c2d..0000000 --- a/sns_service/src/main/kotlin/joryu/sns_service/chat/dto/response/ChatMessageAllResponse.kt +++ /dev/null @@ -1,17 +0,0 @@ -package joryu.sns_service.chat.dto.response - -import joryu.sns_service.chat.entity.ChatMessage - -class ChatMessageAllResponse(chatMessages: List) { - val chatMessages = chatMessages.map { m -> m?.toDto() }.toList() - - private fun ChatMessage.toDto(): ChatMessageResponse { - return ChatMessageResponse( - this.id, - this.message, - 1L, - "user", - this.postDateTime - ) - } -} \ No newline at end of file diff --git a/sns_service/src/main/kotlin/joryu/sns_service/chat/dto/response/ChatMessageResponse.kt b/sns_service/src/main/kotlin/joryu/sns_service/chat/dto/response/ChatMessageResponse.kt deleted file mode 100644 index c7907d4..0000000 --- a/sns_service/src/main/kotlin/joryu/sns_service/chat/dto/response/ChatMessageResponse.kt +++ /dev/null @@ -1,12 +0,0 @@ -package joryu.sns_service.chat.dto.response - -import org.joda.time.DateTime - -class ChatMessageResponse( - val id: String, - val message: String?, - val profileId: Long, - val profileName: String, - val postDateTime: String -){ -} \ No newline at end of file diff --git a/sns_service/src/main/kotlin/joryu/sns_service/chat/entity/ChatMessage.kt b/sns_service/src/main/kotlin/joryu/sns_service/chat/entity/ChatMessage.kt deleted file mode 100644 index e7bf2f8..0000000 --- a/sns_service/src/main/kotlin/joryu/sns_service/chat/entity/ChatMessage.kt +++ /dev/null @@ -1,20 +0,0 @@ -package joryu.sns_service.chat.entity - -import jakarta.persistence.Column -import jakarta.persistence.Entity -import jakarta.persistence.Id -import jakarta.persistence.Table -import org.joda.time.DateTime -import java.util.* - -@Table(name = "chat_message") -@Entity -class ChatMessage( - val message: String? = "", - val profileId: Long? = null, - - @Id - val id: String = UUID.randomUUID().toString(), - val postDateTime: String = DateTime.now().toString() -) { -} diff --git a/sns_service/src/main/kotlin/joryu/sns_service/chat/message/GreetingMessage.kt b/sns_service/src/main/kotlin/joryu/sns_service/chat/message/GreetingMessage.kt deleted file mode 100644 index 2eda2bb..0000000 --- a/sns_service/src/main/kotlin/joryu/sns_service/chat/message/GreetingMessage.kt +++ /dev/null @@ -1,5 +0,0 @@ -package joryu.sns_service.chat.message - -data class GreetingMessage ( - val content: String -) \ No newline at end of file diff --git a/sns_service/src/main/kotlin/joryu/sns_service/chat/message/HelloMessage.kt b/sns_service/src/main/kotlin/joryu/sns_service/chat/message/HelloMessage.kt deleted file mode 100644 index 0b284fe..0000000 --- a/sns_service/src/main/kotlin/joryu/sns_service/chat/message/HelloMessage.kt +++ /dev/null @@ -1,5 +0,0 @@ -package joryu.sns_service.chat.message - -data class HelloMessage ( - val name: String -) \ No newline at end of file diff --git a/sns_service/src/main/kotlin/joryu/sns_service/chat/repository/ChatRepository.kt b/sns_service/src/main/kotlin/joryu/sns_service/chat/repository/ChatRepository.kt deleted file mode 100644 index 480f07f..0000000 --- a/sns_service/src/main/kotlin/joryu/sns_service/chat/repository/ChatRepository.kt +++ /dev/null @@ -1,8 +0,0 @@ -package joryu.sns_service.chat.repository - -import joryu.sns_service.chat.entity.ChatMessage -import org.springframework.data.jpa.repository.JpaRepository - -interface ChatRepository : JpaRepository { - -} \ No newline at end of file diff --git a/sns_service/src/main/kotlin/joryu/sns_service/chat/service/ChatListener.kt b/sns_service/src/main/kotlin/joryu/sns_service/chat/service/ChatListener.kt new file mode 100644 index 0000000..c69ec48 --- /dev/null +++ b/sns_service/src/main/kotlin/joryu/sns_service/chat/service/ChatListener.kt @@ -0,0 +1,31 @@ +package joryu.sns_service.chat.service + +import com.fasterxml.jackson.databind.ObjectMapper +import joryu.sns_service.chat.dto.ChatMessage +import mu.KLogger +import mu.KotlinLogging +import org.springframework.data.redis.connection.Message +import org.springframework.data.redis.connection.MessageListener +import org.springframework.data.redis.core.RedisTemplate +import org.springframework.messaging.simp.SimpMessageSendingOperations +import org.springframework.stereotype.Service + +@Service +class ChatListener( + private val objectMapper: ObjectMapper, + private val redisTemplate: RedisTemplate, + private val messagingTemplate: SimpMessageSendingOperations, +): MessageListener { + val log: KLogger = KotlinLogging.logger {} + + override fun onMessage(message: Message, pattern: ByteArray?) { + try { + val publishMessage = redisTemplate.stringSerializer.deserialize(message.body) + val chatMessage = objectMapper.readValue(publishMessage, ChatMessage::class.java) + + messagingTemplate.convertAndSend("/sub/chat/channel/" + chatMessage.channelId, chatMessage) + } catch (e: Exception) { + log.error { e.stackTraceToString() } + } + } +} \ No newline at end of file diff --git a/sns_service/src/main/kotlin/joryu/sns_service/chat/service/ChatPublisher.kt b/sns_service/src/main/kotlin/joryu/sns_service/chat/service/ChatPublisher.kt new file mode 100644 index 0000000..8893756 --- /dev/null +++ b/sns_service/src/main/kotlin/joryu/sns_service/chat/service/ChatPublisher.kt @@ -0,0 +1,16 @@ +package joryu.sns_service.chat.service + +import joryu.sns_service.chat.dto.ChatMessage +import org.springframework.data.redis.core.RedisTemplate +import org.springframework.data.redis.listener.ChannelTopic +import org.springframework.stereotype.Service + +@Service +class ChatPublisher( + private val channelTopic: ChannelTopic, + private val redisTemplate: RedisTemplate, +) { + fun publish(message: ChatMessage) { + redisTemplate.convertAndSend(channelTopic.topic, message) + } +} \ No newline at end of file diff --git a/sns_service/src/main/kotlin/joryu/sns_service/chat/service/ChatService.kt b/sns_service/src/main/kotlin/joryu/sns_service/chat/service/ChatService.kt deleted file mode 100644 index e1b22ed..0000000 --- a/sns_service/src/main/kotlin/joryu/sns_service/chat/service/ChatService.kt +++ /dev/null @@ -1,28 +0,0 @@ -package joryu.sns_service.chat.service - -import joryu.sns_service.chat.dto.request.NewMessageRequest -import joryu.sns_service.chat.entity.ChatMessage -import joryu.sns_service.chat.repository.ChatRepository -import joryu.sns_service.profile.repository.ProfileRepository -import lombok.RequiredArgsConstructor -import org.springframework.stereotype.Service -import org.springframework.transaction.annotation.Transactional - -@Service -@RequiredArgsConstructor -class ChatService( - private val chatRepository: ChatRepository, - private val profileRepository: ProfileRepository -){ - - @Transactional(readOnly = true) - fun findAll(): List { - return chatRepository.findAll() - } - - @Transactional - fun create(newMessage: NewMessageRequest) { - val chatMessage = ChatMessage(newMessage.message, 1) - chatRepository.save(chatMessage) - } -} \ No newline at end of file diff --git a/sns_service/src/main/kotlin/joryu/sns_service/comment/controller/CommentController.kt b/sns_service/src/main/kotlin/joryu/sns_service/comment/controller/CommentController.kt old mode 100644 new mode 100755 diff --git a/sns_service/src/main/kotlin/joryu/sns_service/comment/dto/request/CommentCreateRequest.kt b/sns_service/src/main/kotlin/joryu/sns_service/comment/dto/request/CommentCreateRequest.kt old mode 100644 new mode 100755 diff --git a/sns_service/src/main/kotlin/joryu/sns_service/comment/dto/request/CommentUpdateRequest.kt b/sns_service/src/main/kotlin/joryu/sns_service/comment/dto/request/CommentUpdateRequest.kt old mode 100644 new mode 100755 diff --git a/sns_service/src/main/kotlin/joryu/sns_service/comment/dto/response/CommentResponse.kt b/sns_service/src/main/kotlin/joryu/sns_service/comment/dto/response/CommentResponse.kt old mode 100644 new mode 100755 diff --git a/sns_service/src/main/kotlin/joryu/sns_service/comment/entity/Comment.kt b/sns_service/src/main/kotlin/joryu/sns_service/comment/entity/Comment.kt old mode 100644 new mode 100755 diff --git a/sns_service/src/main/kotlin/joryu/sns_service/comment/entity/CommentLike.kt b/sns_service/src/main/kotlin/joryu/sns_service/comment/entity/CommentLike.kt old mode 100644 new mode 100755 diff --git a/sns_service/src/main/kotlin/joryu/sns_service/comment/repository/CommentLikeRepository.kt b/sns_service/src/main/kotlin/joryu/sns_service/comment/repository/CommentLikeRepository.kt old mode 100644 new mode 100755 diff --git a/sns_service/src/main/kotlin/joryu/sns_service/comment/repository/CommentRepository.kt b/sns_service/src/main/kotlin/joryu/sns_service/comment/repository/CommentRepository.kt old mode 100644 new mode 100755 diff --git a/sns_service/src/main/kotlin/joryu/sns_service/comment/service/CommentService.kt b/sns_service/src/main/kotlin/joryu/sns_service/comment/service/CommentService.kt old mode 100644 new mode 100755 diff --git a/sns_service/src/main/kotlin/joryu/sns_service/common/dto/response/CommonResponseBody.kt b/sns_service/src/main/kotlin/joryu/sns_service/common/dto/response/CommonResponseBody.kt old mode 100644 new mode 100755 diff --git a/sns_service/src/main/kotlin/joryu/sns_service/common/entity/BaseEntity.kt b/sns_service/src/main/kotlin/joryu/sns_service/common/entity/BaseEntity.kt old mode 100644 new mode 100755 diff --git a/sns_service/src/main/kotlin/joryu/sns_service/follow/controller/FollowController.kt b/sns_service/src/main/kotlin/joryu/sns_service/follow/controller/FollowController.kt old mode 100644 new mode 100755 diff --git a/sns_service/src/main/kotlin/joryu/sns_service/follow/dto/request/FollowRequest.kt b/sns_service/src/main/kotlin/joryu/sns_service/follow/dto/request/FollowRequest.kt old mode 100644 new mode 100755 diff --git a/sns_service/src/main/kotlin/joryu/sns_service/follow/dto/request/UnFollowRequest.kt b/sns_service/src/main/kotlin/joryu/sns_service/follow/dto/request/UnFollowRequest.kt old mode 100644 new mode 100755 diff --git a/sns_service/src/main/kotlin/joryu/sns_service/follow/entity/Follow.kt b/sns_service/src/main/kotlin/joryu/sns_service/follow/entity/Follow.kt old mode 100644 new mode 100755 diff --git a/sns_service/src/main/kotlin/joryu/sns_service/follow/repository/FollowRepository.kt b/sns_service/src/main/kotlin/joryu/sns_service/follow/repository/FollowRepository.kt old mode 100644 new mode 100755 diff --git a/sns_service/src/main/kotlin/joryu/sns_service/follow/service/FollowService.kt b/sns_service/src/main/kotlin/joryu/sns_service/follow/service/FollowService.kt old mode 100644 new mode 100755 diff --git a/sns_service/src/main/kotlin/joryu/sns_service/post/controller/PostController.kt b/sns_service/src/main/kotlin/joryu/sns_service/post/controller/PostController.kt old mode 100644 new mode 100755 diff --git a/sns_service/src/main/kotlin/joryu/sns_service/post/controller/PostLikeController.kt b/sns_service/src/main/kotlin/joryu/sns_service/post/controller/PostLikeController.kt old mode 100644 new mode 100755 diff --git a/sns_service/src/main/kotlin/joryu/sns_service/post/controller/ShareController.kt b/sns_service/src/main/kotlin/joryu/sns_service/post/controller/ShareController.kt old mode 100644 new mode 100755 diff --git a/sns_service/src/main/kotlin/joryu/sns_service/post/dto/request/PostCreateRequest.kt b/sns_service/src/main/kotlin/joryu/sns_service/post/dto/request/PostCreateRequest.kt old mode 100644 new mode 100755 diff --git a/sns_service/src/main/kotlin/joryu/sns_service/post/dto/request/PostUpdateRequest.kt b/sns_service/src/main/kotlin/joryu/sns_service/post/dto/request/PostUpdateRequest.kt old mode 100644 new mode 100755 diff --git a/sns_service/src/main/kotlin/joryu/sns_service/post/dto/response/PostLikeCountResponse.kt b/sns_service/src/main/kotlin/joryu/sns_service/post/dto/response/PostLikeCountResponse.kt old mode 100644 new mode 100755 diff --git a/sns_service/src/main/kotlin/joryu/sns_service/post/dto/response/PostResponse.kt b/sns_service/src/main/kotlin/joryu/sns_service/post/dto/response/PostResponse.kt old mode 100644 new mode 100755 diff --git a/sns_service/src/main/kotlin/joryu/sns_service/post/entity/Post.kt b/sns_service/src/main/kotlin/joryu/sns_service/post/entity/Post.kt old mode 100644 new mode 100755 diff --git a/sns_service/src/main/kotlin/joryu/sns_service/post/entity/PostLike.kt b/sns_service/src/main/kotlin/joryu/sns_service/post/entity/PostLike.kt old mode 100644 new mode 100755 diff --git a/sns_service/src/main/kotlin/joryu/sns_service/post/entity/PostView.kt b/sns_service/src/main/kotlin/joryu/sns_service/post/entity/PostView.kt old mode 100644 new mode 100755 diff --git a/sns_service/src/main/kotlin/joryu/sns_service/post/entity/Share.kt b/sns_service/src/main/kotlin/joryu/sns_service/post/entity/Share.kt old mode 100644 new mode 100755 diff --git a/sns_service/src/main/kotlin/joryu/sns_service/post/repository/PostLikeRepository.kt b/sns_service/src/main/kotlin/joryu/sns_service/post/repository/PostLikeRepository.kt old mode 100644 new mode 100755 diff --git a/sns_service/src/main/kotlin/joryu/sns_service/post/repository/PostRepository.kt b/sns_service/src/main/kotlin/joryu/sns_service/post/repository/PostRepository.kt old mode 100644 new mode 100755 diff --git a/sns_service/src/main/kotlin/joryu/sns_service/post/repository/PostViewRepository.kt b/sns_service/src/main/kotlin/joryu/sns_service/post/repository/PostViewRepository.kt old mode 100644 new mode 100755 diff --git a/sns_service/src/main/kotlin/joryu/sns_service/post/repository/ShareRepository.kt b/sns_service/src/main/kotlin/joryu/sns_service/post/repository/ShareRepository.kt old mode 100644 new mode 100755 diff --git a/sns_service/src/main/kotlin/joryu/sns_service/post/service/PostLikeService.kt b/sns_service/src/main/kotlin/joryu/sns_service/post/service/PostLikeService.kt old mode 100644 new mode 100755 diff --git a/sns_service/src/main/kotlin/joryu/sns_service/post/service/PostService.kt b/sns_service/src/main/kotlin/joryu/sns_service/post/service/PostService.kt old mode 100644 new mode 100755 diff --git a/sns_service/src/main/kotlin/joryu/sns_service/post/service/ShareService.kt b/sns_service/src/main/kotlin/joryu/sns_service/post/service/ShareService.kt old mode 100644 new mode 100755 diff --git a/sns_service/src/main/kotlin/joryu/sns_service/profile/controller/ProfileApiController.kt b/sns_service/src/main/kotlin/joryu/sns_service/profile/controller/ProfileApiController.kt old mode 100644 new mode 100755 diff --git a/sns_service/src/main/kotlin/joryu/sns_service/profile/dto/request/ProfileCreateRequest.kt b/sns_service/src/main/kotlin/joryu/sns_service/profile/dto/request/ProfileCreateRequest.kt old mode 100644 new mode 100755 diff --git a/sns_service/src/main/kotlin/joryu/sns_service/profile/dto/request/ProfileUpdateRequest.kt b/sns_service/src/main/kotlin/joryu/sns_service/profile/dto/request/ProfileUpdateRequest.kt old mode 100644 new mode 100755 diff --git a/sns_service/src/main/kotlin/joryu/sns_service/profile/dto/response/AllFollowerProfileResponse.kt b/sns_service/src/main/kotlin/joryu/sns_service/profile/dto/response/AllFollowerProfileResponse.kt old mode 100644 new mode 100755 diff --git a/sns_service/src/main/kotlin/joryu/sns_service/profile/dto/response/ProfileInfoResponse.kt b/sns_service/src/main/kotlin/joryu/sns_service/profile/dto/response/ProfileInfoResponse.kt old mode 100644 new mode 100755 diff --git a/sns_service/src/main/kotlin/joryu/sns_service/profile/entity/Profile.kt b/sns_service/src/main/kotlin/joryu/sns_service/profile/entity/Profile.kt old mode 100644 new mode 100755 index 97de07c..4c7fec2 --- a/sns_service/src/main/kotlin/joryu/sns_service/profile/entity/Profile.kt +++ b/sns_service/src/main/kotlin/joryu/sns_service/profile/entity/Profile.kt @@ -1,10 +1,12 @@ package joryu.sns_service.profile.entity import jakarta.persistence.* +import joryu.sns_service.channel.entity.ChannelProfile import joryu.sns_service.common.entity.BaseEntity import joryu.sns_service.follow.entity.Follow import joryu.sns_service.profile.dto.request.ProfileUpdateRequest + @Table(name = "profile") @Entity class Profile( @@ -28,6 +30,9 @@ class Profile( constructor() : this(0, "", 0, 0) constructor(name: String) : this(0, name, 0, 0) + @OneToMany(mappedBy = "profile") + val channelProfiles: MutableList = mutableListOf() + fun update(profileUpdateRequest: ProfileUpdateRequest) { this.name = profileUpdateRequest.name } @@ -38,5 +43,9 @@ class Profile( fun addFollowing(following: Follow) { this.followingNumber++ } + + fun addChannel(channelProfile: ChannelProfile) { + channelProfiles.add(channelProfile) + } } diff --git a/sns_service/src/main/kotlin/joryu/sns_service/profile/exception/ProfileBaseException.kt b/sns_service/src/main/kotlin/joryu/sns_service/profile/exception/ProfileBaseException.kt old mode 100644 new mode 100755 diff --git a/sns_service/src/main/kotlin/joryu/sns_service/profile/exception/ProfileExceptionEnums.kt b/sns_service/src/main/kotlin/joryu/sns_service/profile/exception/ProfileExceptionEnums.kt old mode 100644 new mode 100755 diff --git a/sns_service/src/main/kotlin/joryu/sns_service/profile/exception/ProfileExceptionHandler.kt b/sns_service/src/main/kotlin/joryu/sns_service/profile/exception/ProfileExceptionHandler.kt old mode 100644 new mode 100755 diff --git a/sns_service/src/main/kotlin/joryu/sns_service/profile/repository/ProfileRepository.kt b/sns_service/src/main/kotlin/joryu/sns_service/profile/repository/ProfileRepository.kt old mode 100644 new mode 100755 index c9deb84..560e571 --- a/sns_service/src/main/kotlin/joryu/sns_service/profile/repository/ProfileRepository.kt +++ b/sns_service/src/main/kotlin/joryu/sns_service/profile/repository/ProfileRepository.kt @@ -4,4 +4,5 @@ import joryu.sns_service.profile.entity.Profile import org.springframework.data.jpa.repository.JpaRepository interface ProfileRepository : JpaRepository { + fun findAllByIdIn(ids: List): List } \ No newline at end of file diff --git a/sns_service/src/main/kotlin/joryu/sns_service/profile/service/ProfileService.kt b/sns_service/src/main/kotlin/joryu/sns_service/profile/service/ProfileService.kt old mode 100644 new mode 100755 index 4a88b38..7b838d9 --- a/sns_service/src/main/kotlin/joryu/sns_service/profile/service/ProfileService.kt +++ b/sns_service/src/main/kotlin/joryu/sns_service/profile/service/ProfileService.kt @@ -38,6 +38,12 @@ class ProfileService( return ProfileInfoResponse(profile) } + @Transactional(readOnly = true) + fun findAllByIdIn(ids: List): List { + return profileRepository.findAllByIdIn(ids) + .map { p -> ProfileInfoResponse(p) } + } + @Transactional fun update(id: Long, profileUpdateRequest: ProfileUpdateRequest): ProfileInfoResponse { val profile = profileRepository.findById(id) diff --git a/sns_service/src/main/kotlin/joryu/sns_service/utils/IpUtils.kt b/sns_service/src/main/kotlin/joryu/sns_service/utils/IpUtils.kt old mode 100644 new mode 100755 From 6ee662b6418a75dd2302c372772468ae6cba3cbd Mon Sep 17 00:00:00 2001 From: hyun98 Date: Sat, 18 Nov 2023 19:54:13 +0900 Subject: [PATCH 6/7] fix: add new line --- front-test-bed/app.js | 2 +- front-test-bed/index.html | 2 +- sns_service/build.gradle.kts | 3 --- .../kotlin/joryu/sns_service/channel/entity/ChannelProfile.kt | 2 +- 4 files changed, 3 insertions(+), 6 deletions(-) diff --git a/front-test-bed/app.js b/front-test-bed/app.js index 6bd06a5..8515dcb 100644 --- a/front-test-bed/app.js +++ b/front-test-bed/app.js @@ -66,4 +66,4 @@ $(function () { $( "#connect" ).click(() => connect()); $( "#disconnect" ).click(() => disconnect()); $( "#send" ).click(() => sendName()); -}); \ No newline at end of file +}); diff --git a/front-test-bed/index.html b/front-test-bed/index.html index a32f8ad..00c7909 100644 --- a/front-test-bed/index.html +++ b/front-test-bed/index.html @@ -65,4 +65,4 @@
- \ No newline at end of file + diff --git a/sns_service/build.gradle.kts b/sns_service/build.gradle.kts index bd196c6..399e9e9 100644 --- a/sns_service/build.gradle.kts +++ b/sns_service/build.gradle.kts @@ -35,10 +35,7 @@ dependencies { implementation("io.micrometer:micrometer-registry-prometheus") implementation ("net.logstash.logback:logstash-logback-encoder:7.3") implementation ("io.github.microutils:kotlin-logging:3.0.5") - - //embedded-redis implementation("it.ozimov:embedded-redis:0.7.2") - compileOnly("org.projectlombok:lombok") annotationProcessor("org.projectlombok:lombok") testImplementation("org.springframework.boot:spring-boot-starter-test") diff --git a/sns_service/src/main/kotlin/joryu/sns_service/channel/entity/ChannelProfile.kt b/sns_service/src/main/kotlin/joryu/sns_service/channel/entity/ChannelProfile.kt index 821ef17..ec7a38f 100755 --- a/sns_service/src/main/kotlin/joryu/sns_service/channel/entity/ChannelProfile.kt +++ b/sns_service/src/main/kotlin/joryu/sns_service/channel/entity/ChannelProfile.kt @@ -18,4 +18,4 @@ class ChannelProfile( @Id @GeneratedValue(strategy = GenerationType.IDENTITY) val id: Long = 0 -} \ No newline at end of file +} From 1a1374591921adac895f064972feb29362f61594 Mon Sep 17 00:00:00 2001 From: hyun98 Date: Sat, 18 Nov 2023 20:19:19 +0900 Subject: [PATCH 7/7] fix: apply pr's comments --- .../kotlin/joryu/sns_service/channel/entity/Channel.kt | 9 +++++---- .../joryu/sns_service/channel/entity/ChannelProfile.kt | 5 +++-- .../sns_service/chat/controller/ChatMessageController.kt | 1 - .../kotlin/joryu/sns_service/chat/dto/ChatMessage.kt | 2 +- .../kotlin/joryu/sns_service/profile/entity/Profile.kt | 5 +++-- .../joryu/sns_service/profile/service/ProfileService.kt | 2 +- 6 files changed, 13 insertions(+), 11 deletions(-) diff --git a/sns_service/src/main/kotlin/joryu/sns_service/channel/entity/Channel.kt b/sns_service/src/main/kotlin/joryu/sns_service/channel/entity/Channel.kt index a92a539..d4f8daf 100755 --- a/sns_service/src/main/kotlin/joryu/sns_service/channel/entity/Channel.kt +++ b/sns_service/src/main/kotlin/joryu/sns_service/channel/entity/Channel.kt @@ -15,20 +15,21 @@ class Channel( val channelType: ChannelType = ChannelType.PERSONAL ) : Serializable { @Id + @Column(name = "channel_id") val id: String = UUID.randomUUID().toString() @OneToMany(mappedBy = "channel") - val channelUsers: MutableList = mutableListOf() + val channelProfiles: MutableList = mutableListOf() @Column(name = "channel_name") var channelName: String = channelName private set - fun changeChannelName(newName: String) { + fun updateChannelName(newName: String) { channelName = newName } - fun addUserToChannel(user: ChannelProfile) { - channelUsers.add(user) + fun addProfileToChannel(profile: ChannelProfile) { + channelProfiles.add(profile) } } \ No newline at end of file diff --git a/sns_service/src/main/kotlin/joryu/sns_service/channel/entity/ChannelProfile.kt b/sns_service/src/main/kotlin/joryu/sns_service/channel/entity/ChannelProfile.kt index ec7a38f..2679b9c 100755 --- a/sns_service/src/main/kotlin/joryu/sns_service/channel/entity/ChannelProfile.kt +++ b/sns_service/src/main/kotlin/joryu/sns_service/channel/entity/ChannelProfile.kt @@ -9,13 +9,14 @@ import java.io.Serializable class ChannelProfile( @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "channel_id") - var channel: Channel? = null, + val channel: Channel = Channel(), @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "profile_id") - var profile: Profile? = null + val profile: Profile = Profile() ): Serializable { @Id + @Column(name = "channel_profile_id") @GeneratedValue(strategy = GenerationType.IDENTITY) val id: Long = 0 } diff --git a/sns_service/src/main/kotlin/joryu/sns_service/chat/controller/ChatMessageController.kt b/sns_service/src/main/kotlin/joryu/sns_service/chat/controller/ChatMessageController.kt index 469f8bf..b21909d 100644 --- a/sns_service/src/main/kotlin/joryu/sns_service/chat/controller/ChatMessageController.kt +++ b/sns_service/src/main/kotlin/joryu/sns_service/chat/controller/ChatMessageController.kt @@ -9,7 +9,6 @@ import org.springframework.stereotype.Controller class ChatMessageController( private val chatPublisher: ChatPublisher ) { - /** * /pub/chat/message 로 들어오는 메시징을 처리한다. */ diff --git a/sns_service/src/main/kotlin/joryu/sns_service/chat/dto/ChatMessage.kt b/sns_service/src/main/kotlin/joryu/sns_service/chat/dto/ChatMessage.kt index ca0baea..176ba33 100644 --- a/sns_service/src/main/kotlin/joryu/sns_service/chat/dto/ChatMessage.kt +++ b/sns_service/src/main/kotlin/joryu/sns_service/chat/dto/ChatMessage.kt @@ -2,6 +2,6 @@ package joryu.sns_service.chat.dto data class ChatMessage( val channelId: String, - val sender: String, + val senderProfileId: String, val content: String = "", ) diff --git a/sns_service/src/main/kotlin/joryu/sns_service/profile/entity/Profile.kt b/sns_service/src/main/kotlin/joryu/sns_service/profile/entity/Profile.kt index 4c7fec2..bd8cbcc 100755 --- a/sns_service/src/main/kotlin/joryu/sns_service/profile/entity/Profile.kt +++ b/sns_service/src/main/kotlin/joryu/sns_service/profile/entity/Profile.kt @@ -1,6 +1,7 @@ package joryu.sns_service.profile.entity import jakarta.persistence.* +import joryu.sns_service.channel.entity.Channel import joryu.sns_service.channel.entity.ChannelProfile import joryu.sns_service.common.entity.BaseEntity import joryu.sns_service.follow.entity.Follow @@ -44,8 +45,8 @@ class Profile( this.followingNumber++ } - fun addChannel(channelProfile: ChannelProfile) { - channelProfiles.add(channelProfile) + fun addChannel(channel: Channel) { + channelProfiles.add(ChannelProfile(channel, this)) } } diff --git a/sns_service/src/main/kotlin/joryu/sns_service/profile/service/ProfileService.kt b/sns_service/src/main/kotlin/joryu/sns_service/profile/service/ProfileService.kt index 7b838d9..3409a2e 100755 --- a/sns_service/src/main/kotlin/joryu/sns_service/profile/service/ProfileService.kt +++ b/sns_service/src/main/kotlin/joryu/sns_service/profile/service/ProfileService.kt @@ -41,7 +41,7 @@ class ProfileService( @Transactional(readOnly = true) fun findAllByIdIn(ids: List): List { return profileRepository.findAllByIdIn(ids) - .map { p -> ProfileInfoResponse(p) } + .map { profile -> ProfileInfoResponse(profile) } } @Transactional