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): List suspend fun usernameAlreadyUse(username: String): Boolean