From b64e983caec7c8c48655ce2c92ad83ac5910256e Mon Sep 17 00:00:00 2001
From: usbharu <64310155+usbharu@users.noreply.github.com>
Date: Thu, 10 Aug 2023 19:17:07 +0900
Subject: [PATCH] =?UTF-8?q?refactor:=20=E4=B8=8D=E8=A6=81=E3=81=AA?=
 =?UTF-8?q?=E9=96=A2=E6=95=B0=E3=82=92=E5=89=8A=E9=99=A4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../activitypub/ActivityPubAcceptServiceImpl.kt        | 10 +++++++---
 .../service/activitypub/ActivityPubLikeServiceImpl.kt  |  8 ++++----
 .../service/activitypub/ActivityPubUndoServiceImpl.kt  |  8 +++++---
 .../dev/usbharu/hideout/service/user/IUserService.kt   |  4 ----
 4 files changed, 16 insertions(+), 14 deletions(-)

diff --git a/src/main/kotlin/dev/usbharu/hideout/service/activitypub/ActivityPubAcceptServiceImpl.kt b/src/main/kotlin/dev/usbharu/hideout/service/activitypub/ActivityPubAcceptServiceImpl.kt
index 2e4b212a..19df2c97 100644
--- a/src/main/kotlin/dev/usbharu/hideout/service/activitypub/ActivityPubAcceptServiceImpl.kt
+++ b/src/main/kotlin/dev/usbharu/hideout/service/activitypub/ActivityPubAcceptServiceImpl.kt
@@ -5,12 +5,16 @@ import dev.usbharu.hideout.domain.model.ActivityPubStringResponse
 import dev.usbharu.hideout.domain.model.ap.Accept
 import dev.usbharu.hideout.domain.model.ap.Follow
 import dev.usbharu.hideout.exception.ap.IllegalActivityPubObjectException
+import dev.usbharu.hideout.query.UserQueryService
 import dev.usbharu.hideout.service.user.IUserService
 import io.ktor.http.*
 import org.koin.core.annotation.Single
 
 @Single
-class ActivityPubAcceptServiceImpl(private val userService: IUserService) : ActivityPubAcceptService {
+class ActivityPubAcceptServiceImpl(
+    private val userService: IUserService,
+    private val userQueryService: UserQueryService
+) : ActivityPubAcceptService {
     override suspend fun receiveAccept(accept: Accept): ActivityPubResponse {
         val value = accept.`object` ?: throw IllegalActivityPubObjectException("object is null")
         if (value.type.contains("Follow").not()) {
@@ -20,8 +24,8 @@ class ActivityPubAcceptServiceImpl(private val userService: IUserService) : Acti
         val follow = value as Follow
         val userUrl = follow.`object` ?: throw IllegalActivityPubObjectException("object is null")
         val followerUrl = follow.actor ?: throw IllegalActivityPubObjectException("actor is null")
-        val user = userService.findByUrl(userUrl)
-        val follower = userService.findByUrl(followerUrl)
+        val user = userQueryService.findByUrl(userUrl)
+        val follower = userQueryService.findByUrl(followerUrl)
         userService.follow(user.id, follower.id)
         return ActivityPubStringResponse(HttpStatusCode.OK, "accepted")
     }
diff --git a/src/main/kotlin/dev/usbharu/hideout/service/activitypub/ActivityPubLikeServiceImpl.kt b/src/main/kotlin/dev/usbharu/hideout/service/activitypub/ActivityPubLikeServiceImpl.kt
index 4d946e2e..72a50f8a 100644
--- a/src/main/kotlin/dev/usbharu/hideout/service/activitypub/ActivityPubLikeServiceImpl.kt
+++ b/src/main/kotlin/dev/usbharu/hideout/service/activitypub/ActivityPubLikeServiceImpl.kt
@@ -5,9 +5,9 @@ import dev.usbharu.hideout.domain.model.ActivityPubStringResponse
 import dev.usbharu.hideout.domain.model.ap.Like
 import dev.usbharu.hideout.exception.PostNotFoundException
 import dev.usbharu.hideout.exception.ap.IllegalActivityPubObjectException
+import dev.usbharu.hideout.query.UserQueryService
 import dev.usbharu.hideout.repository.IPostRepository
 import dev.usbharu.hideout.service.reaction.IReactionService
-import dev.usbharu.hideout.service.user.IUserService
 import io.ktor.http.*
 import org.koin.core.annotation.Single
 
@@ -15,9 +15,9 @@ import org.koin.core.annotation.Single
 class ActivityPubLikeServiceImpl(
     private val reactionService: IReactionService,
     private val activityPubUserService: ActivityPubUserService,
-    private val userService: IUserService,
     private val postService: IPostRepository,
-    private val activityPubNoteService: ActivityPubNoteService
+    private val activityPubNoteService: ActivityPubNoteService,
+    private val userQueryService: UserQueryService
 ) : ActivityPubLikeService {
     override suspend fun receiveLike(like: Like): ActivityPubResponse {
         val actor = like.actor ?: throw IllegalActivityPubObjectException("actor is null")
@@ -26,7 +26,7 @@ class ActivityPubLikeServiceImpl(
         val person = activityPubUserService.fetchPerson(actor)
         activityPubNoteService.fetchNote(like.`object`!!)
 
-        val user = userService.findByUrl(
+        val user = userQueryService.findByUrl(
             person.url
                 ?: throw IllegalActivityPubObjectException("actor is not found")
         )
diff --git a/src/main/kotlin/dev/usbharu/hideout/service/activitypub/ActivityPubUndoServiceImpl.kt b/src/main/kotlin/dev/usbharu/hideout/service/activitypub/ActivityPubUndoServiceImpl.kt
index 03daa340..16a8ecec 100644
--- a/src/main/kotlin/dev/usbharu/hideout/service/activitypub/ActivityPubUndoServiceImpl.kt
+++ b/src/main/kotlin/dev/usbharu/hideout/service/activitypub/ActivityPubUndoServiceImpl.kt
@@ -4,6 +4,7 @@ import dev.usbharu.hideout.domain.model.ActivityPubResponse
 import dev.usbharu.hideout.domain.model.ActivityPubStringResponse
 import dev.usbharu.hideout.domain.model.ap.Follow
 import dev.usbharu.hideout.domain.model.ap.Undo
+import dev.usbharu.hideout.query.UserQueryService
 import dev.usbharu.hideout.service.user.IUserService
 import io.ktor.http.*
 import org.koin.core.annotation.Single
@@ -12,7 +13,8 @@ import org.koin.core.annotation.Single
 @Suppress("UnsafeCallOnNullableType")
 class ActivityPubUndoServiceImpl(
     private val userService: IUserService,
-    private val activityPubUserService: ActivityPubUserService
+    private val activityPubUserService: ActivityPubUserService,
+    private val userQueryService: UserQueryService
 ) : ActivityPubUndoService {
     override suspend fun receiveUndo(undo: Undo): ActivityPubResponse {
         if (undo.actor == null) {
@@ -33,8 +35,8 @@ class ActivityPubUndoServiceImpl(
                 }
 
                 activityPubUserService.fetchPerson(undo.actor!!, follow.`object`)
-                val follower = userService.findByUrl(undo.actor!!)
-                val target = userService.findByUrl(follow.`object`!!)
+                val follower = userQueryService.findByUrl(undo.actor!!)
+                val target = userQueryService.findByUrl(follow.`object`!!)
                 userService.unfollow(target.id, follower.id)
             }
 
diff --git a/src/main/kotlin/dev/usbharu/hideout/service/user/IUserService.kt b/src/main/kotlin/dev/usbharu/hideout/service/user/IUserService.kt
index 1df65bf9..730b4c09 100644
--- a/src/main/kotlin/dev/usbharu/hideout/service/user/IUserService.kt
+++ b/src/main/kotlin/dev/usbharu/hideout/service/user/IUserService.kt
@@ -7,10 +7,6 @@ import dev.usbharu.hideout.domain.model.hideout.entity.User
 @Suppress("TooManyFunctions")
 interface IUserService {
 
-    suspend fun findByNameLocalUser(name: String): User
-
-    suspend fun findByUrl(url: String): User
-
     suspend fun findByUrls(urls: List<String>): List<User>
 
     suspend fun usernameAlreadyUse(username: String): Boolean