diff --git a/server/src/main/kotlin/kpring/server/controller/RestApiServerController.kt b/server/src/main/kotlin/kpring/server/controller/RestApiServerController.kt index 226530f1..623228bf 100644 --- a/server/src/main/kotlin/kpring/server/controller/RestApiServerController.kt +++ b/server/src/main/kotlin/kpring/server/controller/RestApiServerController.kt @@ -120,4 +120,14 @@ class RestApiServerController( serverService.updateServerHost(serverId, userInfo.userId, otherUser) return ResponseEntity.ok().build() } + + @PatchMapping("/{serverId}/bookmark") + fun updateServerBookmarkStatus( + @PathVariable serverId: String, + @RequestHeader("Authorization") token: String, + ): ResponseEntity { + val userInfo = authClient.getTokenInfo(token).data!! + val result = serverService.updateServerBookmarkStatus(serverId, userInfo.userId) + return ResponseEntity.ok().body(ApiResponse(data = result)) + } } diff --git a/server/src/main/kotlin/kpring/server/domain/ServerProfile.kt b/server/src/main/kotlin/kpring/server/domain/ServerProfile.kt index ce11ebf1..ec3f8c13 100644 --- a/server/src/main/kotlin/kpring/server/domain/ServerProfile.kt +++ b/server/src/main/kotlin/kpring/server/domain/ServerProfile.kt @@ -7,7 +7,7 @@ class ServerProfile( val imagePath: String, val server: Server, var role: ServerRole = ServerRole.MEMBER, - val bookmarked: Boolean = false, + var bookmarked: Boolean = false, ) { /** * @param authority 확인할 권한 @@ -30,4 +30,8 @@ class ServerProfile( serverProfile.role = ServerRole.OWNER } } + + fun updateBookmarkStatus(serverProfile: ServerProfile) { + serverProfile.bookmarked = !serverProfile.bookmarked + } } diff --git a/server/src/main/kotlin/kpring/server/repository/ServerProfileCustomRepository.kt b/server/src/main/kotlin/kpring/server/repository/ServerProfileCustomRepository.kt index 76d477ed..6d6201de 100644 --- a/server/src/main/kotlin/kpring/server/repository/ServerProfileCustomRepository.kt +++ b/server/src/main/kotlin/kpring/server/repository/ServerProfileCustomRepository.kt @@ -19,4 +19,6 @@ interface ServerProfileCustomRepository { fun getOwnedProfiles(userId: String): List fun getAll(serverId: String): List + + fun updateBookmarkStatus(serverProfile: ServerProfile) } diff --git a/server/src/main/kotlin/kpring/server/repository/ServerProfileCustomRepositoryImpl.kt b/server/src/main/kotlin/kpring/server/repository/ServerProfileCustomRepositoryImpl.kt index 369a464a..3338751b 100644 --- a/server/src/main/kotlin/kpring/server/repository/ServerProfileCustomRepositoryImpl.kt +++ b/server/src/main/kotlin/kpring/server/repository/ServerProfileCustomRepositoryImpl.kt @@ -171,6 +171,21 @@ class ServerProfileCustomRepositoryImpl( } } + override fun updateBookmarkStatus(serverProfile: ServerProfile) { + val newBookmarkStatus = !serverProfile.bookmarked + val result = + template.updateFirst( + Query.query( + Criteria.where("_id").`is`(serverProfile.id), + ), + Update().set("bookmarked", newBookmarkStatus), + ServerProfileEntity::class.java, + ) + println("@@@Check : ${result.matchedCount} modified ${result.modifiedCount}") + + serverProfileRepository.save(ServerProfileEntity(serverProfile)) + } + /** * serverIds 목록 중에서 condition에 포함되는 serverId만 검색한다. * 만약 condition이 없는 경우에는 serverIds 목록 전체를 검색한다. diff --git a/server/src/main/kotlin/kpring/server/service/ServerService.kt b/server/src/main/kotlin/kpring/server/service/ServerService.kt index 945e895f..64de86ab 100644 --- a/server/src/main/kotlin/kpring/server/service/ServerService.kt +++ b/server/src/main/kotlin/kpring/server/service/ServerService.kt @@ -51,4 +51,9 @@ interface ServerService { fun delete(serverId: String) fun get(id: String): Server + + fun updateServerBookmarkStatus( + serverId: String, + userId: String, + ): Boolean } diff --git a/server/src/main/kotlin/kpring/server/service/ServerServiceImpl.kt b/server/src/main/kotlin/kpring/server/service/ServerServiceImpl.kt index f3c5dcaa..d1115019 100644 --- a/server/src/main/kotlin/kpring/server/service/ServerServiceImpl.kt +++ b/server/src/main/kotlin/kpring/server/service/ServerServiceImpl.kt @@ -183,4 +183,16 @@ class ServerServiceImpl( return serverEntity.toDomain() } + + override fun updateServerBookmarkStatus( + serverId: String, + userId: String, + ): Boolean { + val serverProfile = serverProfileCustomRepository.get(serverId, userId) + + serverProfile.updateBookmarkStatus(serverProfile) + serverProfileCustomRepository.updateBookmarkStatus(serverProfile) + + return serverProfile.bookmarked + } }