diff --git a/src/main/kotlin/dev/usbharu/hideout/activitypub/service/activity/block/APDeliverBlockJobProcessor.kt b/src/main/kotlin/dev/usbharu/hideout/activitypub/service/activity/block/APDeliverBlockJobProcessor.kt index 0b56ac8c..37236c0f 100644 --- a/src/main/kotlin/dev/usbharu/hideout/activitypub/service/activity/block/APDeliverBlockJobProcessor.kt +++ b/src/main/kotlin/dev/usbharu/hideout/activitypub/service/activity/block/APDeliverBlockJobProcessor.kt @@ -8,6 +8,9 @@ import dev.usbharu.hideout.core.external.job.DeliverBlockJobParam import dev.usbharu.hideout.core.service.job.JobProcessor import org.springframework.stereotype.Service +/** + * ブロックアクティビティ配送を処理します + */ @Service class APDeliverBlockJobProcessor( private val apRequestService: APRequestService, diff --git a/src/main/kotlin/dev/usbharu/hideout/activitypub/service/activity/block/BlockActivityPubProcessor.kt b/src/main/kotlin/dev/usbharu/hideout/activitypub/service/activity/block/BlockActivityPubProcessor.kt index 9dd2276d..1bb40c19 100644 --- a/src/main/kotlin/dev/usbharu/hideout/activitypub/service/activity/block/BlockActivityPubProcessor.kt +++ b/src/main/kotlin/dev/usbharu/hideout/activitypub/service/activity/block/BlockActivityPubProcessor.kt @@ -10,6 +10,9 @@ import dev.usbharu.hideout.core.service.block.BlockService import org.springframework.stereotype.Service +/** + * ブロックアクティビティを処理します + */ @Service class BlockActivityPubProcessor( private val blockService: BlockService, diff --git a/src/main/kotlin/dev/usbharu/hideout/core/domain/model/block/Block.kt b/src/main/kotlin/dev/usbharu/hideout/core/domain/model/block/Block.kt index a2ddf940..7435183e 100644 --- a/src/main/kotlin/dev/usbharu/hideout/core/domain/model/block/Block.kt +++ b/src/main/kotlin/dev/usbharu/hideout/core/domain/model/block/Block.kt @@ -1,5 +1,11 @@ package dev.usbharu.hideout.core.domain.model.block +/** + * ブロック関係を表します + * + * @property userId ブロックの動作を行ったユーザーid + * @property target ブロックの対象のユーザーid + */ data class Block( val userId: Long, val target: Long diff --git a/src/main/kotlin/dev/usbharu/hideout/core/domain/model/block/BlockRepository.kt b/src/main/kotlin/dev/usbharu/hideout/core/domain/model/block/BlockRepository.kt index a847bb4a..3504ffea 100644 --- a/src/main/kotlin/dev/usbharu/hideout/core/domain/model/block/BlockRepository.kt +++ b/src/main/kotlin/dev/usbharu/hideout/core/domain/model/block/BlockRepository.kt @@ -1,7 +1,31 @@ package dev.usbharu.hideout.core.domain.model.block +/** + * ブロックの状態を永続化します + * + */ interface BlockRepository { + /** + * ブロックの状態を永続化します + * + * @param block 永続化するブロック + * @return 永続化されたブロック + */ suspend fun save(block: Block): Block + + /** + * ブロックの状態を削除します + * + * @param block 削除する永続化されたブロック + */ suspend fun delete(block: Block) + + /** + * + * + * @param userId + * @param target + * @return + */ suspend fun findByUserIdAndTarget(userId: Long, target: Long): Block } diff --git a/src/main/kotlin/dev/usbharu/hideout/core/external/job/DeliverBlockJob.kt b/src/main/kotlin/dev/usbharu/hideout/core/external/job/DeliverBlockJob.kt index 8f55831e..3e8688b9 100644 --- a/src/main/kotlin/dev/usbharu/hideout/core/external/job/DeliverBlockJob.kt +++ b/src/main/kotlin/dev/usbharu/hideout/core/external/job/DeliverBlockJob.kt @@ -9,6 +9,14 @@ import kjob.core.job.JobProps import org.springframework.beans.factory.annotation.Qualifier import org.springframework.stereotype.Component +/** + * ブロックアクティビティ配送のジョブパラメーター + * + * @property signer ブロック操作を行ったユーザーid + * @property block 配送するブロックアクティビティ + * @property reject 配送するフォロー解除アクティビティ + * @property inbox 配送先url + */ data class DeliverBlockJobParam( val signer: Long, val block: Block, @@ -16,6 +24,9 @@ data class DeliverBlockJobParam( val inbox: String ) +/** + * ブロックアクティビティ配送のジョブ + */ @Component class DeliverBlockJob(@Qualifier("activitypub") private val objectMapper: ObjectMapper) : HideoutJob("DeliverBlockJob") { diff --git a/src/main/kotlin/dev/usbharu/hideout/core/service/block/BlockService.kt b/src/main/kotlin/dev/usbharu/hideout/core/service/block/BlockService.kt index 8988a15d..83d1512c 100644 --- a/src/main/kotlin/dev/usbharu/hideout/core/service/block/BlockService.kt +++ b/src/main/kotlin/dev/usbharu/hideout/core/service/block/BlockService.kt @@ -1,6 +1,25 @@ package dev.usbharu.hideout.core.service.block +/** + * ブロックに関する処理を行います + * + */ interface BlockService { + /** + * ブロックします + * 実装はリモートユーザーへのブロックの場合ブロックアクティビティを配送するべきです。 + * + * @param userId ブロックの動作を行ったユーザーid + * @param target ブロック対象のユーザーid + */ suspend fun block(userId: Long, target: Long) + + /** + * ブロックを解除します + * 実装はリモートユーザーへのブロック解除の場合Undo Blockアクティビティを配送するべきです + * + * @param userId ブロック解除の動作を行ったユーザーid + * @param target ブロック解除の対象のユーザーid + */ suspend fun unblock(userId: Long, target: Long) } diff --git a/src/main/kotlin/dev/usbharu/hideout/mastodon/service/account/AccountApiService.kt b/src/main/kotlin/dev/usbharu/hideout/mastodon/service/account/AccountApiService.kt index 2e9f76f4..15d7f308 100644 --- a/src/main/kotlin/dev/usbharu/hideout/mastodon/service/account/AccountApiService.kt +++ b/src/main/kotlin/dev/usbharu/hideout/mastodon/service/account/AccountApiService.kt @@ -35,6 +35,14 @@ interface AccountApiService { suspend fun follow(userid: Long, followeeId: Long): Relationship suspend fun account(id: Long): Account suspend fun relationships(userid: Long, id: List, withSuspended: Boolean): List + + /** + * ブロック操作を行う + * + * @param userid ブロック操作を行ったユーザーid + * @param target ブロック対象のユーザーid + * @return ブロック後のブロック対象ユーザーとの[Relationship] + */ suspend fun block(userid: Long, target: Long): Relationship }