doc: ドキュメントを追加

This commit is contained in:
usbharu 2023-12-08 12:59:43 +09:00
parent 2c1da54a77
commit 1a7cec5c7b
7 changed files with 74 additions and 0 deletions

View File

@ -8,6 +8,9 @@ import dev.usbharu.hideout.core.external.job.DeliverBlockJobParam
import dev.usbharu.hideout.core.service.job.JobProcessor import dev.usbharu.hideout.core.service.job.JobProcessor
import org.springframework.stereotype.Service import org.springframework.stereotype.Service
/**
* ブロックアクティビティ配送を処理します
*/
@Service @Service
class APDeliverBlockJobProcessor( class APDeliverBlockJobProcessor(
private val apRequestService: APRequestService, private val apRequestService: APRequestService,

View File

@ -10,6 +10,9 @@ import dev.usbharu.hideout.core.service.block.BlockService
import org.springframework.stereotype.Service import org.springframework.stereotype.Service
/**
* ブロックアクティビティを処理します
*/
@Service @Service
class BlockActivityPubProcessor( class BlockActivityPubProcessor(
private val blockService: BlockService, private val blockService: BlockService,

View File

@ -1,5 +1,11 @@
package dev.usbharu.hideout.core.domain.model.block package dev.usbharu.hideout.core.domain.model.block
/**
* ブロック関係を表します
*
* @property userId ブロックの動作を行ったユーザーid
* @property target ブロックの対象のユーザーid
*/
data class Block( data class Block(
val userId: Long, val userId: Long,
val target: Long val target: Long

View File

@ -1,7 +1,31 @@
package dev.usbharu.hideout.core.domain.model.block package dev.usbharu.hideout.core.domain.model.block
/**
* ブロックの状態を永続化します
*
*/
interface BlockRepository { interface BlockRepository {
/**
* ブロックの状態を永続化します
*
* @param block 永続化するブロック
* @return 永続化されたブロック
*/
suspend fun save(block: Block): Block suspend fun save(block: Block): Block
/**
* ブロックの状態を削除します
*
* @param block 削除する永続化されたブロック
*/
suspend fun delete(block: Block) suspend fun delete(block: Block)
/**
*
*
* @param userId
* @param target
* @return
*/
suspend fun findByUserIdAndTarget(userId: Long, target: Long): Block suspend fun findByUserIdAndTarget(userId: Long, target: Long): Block
} }

View File

@ -9,6 +9,14 @@ import kjob.core.job.JobProps
import org.springframework.beans.factory.annotation.Qualifier import org.springframework.beans.factory.annotation.Qualifier
import org.springframework.stereotype.Component import org.springframework.stereotype.Component
/**
* ブロックアクティビティ配送のジョブパラメーター
*
* @property signer ブロック操作を行ったユーザーid
* @property block 配送するブロックアクティビティ
* @property reject 配送するフォロー解除アクティビティ
* @property inbox 配送先url
*/
data class DeliverBlockJobParam( data class DeliverBlockJobParam(
val signer: Long, val signer: Long,
val block: Block, val block: Block,
@ -16,6 +24,9 @@ data class DeliverBlockJobParam(
val inbox: String val inbox: String
) )
/**
* ブロックアクティビティ配送のジョブ
*/
@Component @Component
class DeliverBlockJob(@Qualifier("activitypub") private val objectMapper: ObjectMapper) : class DeliverBlockJob(@Qualifier("activitypub") private val objectMapper: ObjectMapper) :
HideoutJob<DeliverBlockJobParam, DeliverBlockJob>("DeliverBlockJob") { HideoutJob<DeliverBlockJobParam, DeliverBlockJob>("DeliverBlockJob") {

View File

@ -1,6 +1,25 @@
package dev.usbharu.hideout.core.service.block package dev.usbharu.hideout.core.service.block
/**
* ブロックに関する処理を行います
*
*/
interface BlockService { interface BlockService {
/**
* ブロックします
* 実装はリモートユーザーへのブロックの場合ブロックアクティビティを配送するべきです
*
* @param userId ブロックの動作を行ったユーザーid
* @param target ブロック対象のユーザーid
*/
suspend fun block(userId: Long, target: Long) suspend fun block(userId: Long, target: Long)
/**
* ブロックを解除します
* 実装はリモートユーザーへのブロック解除の場合Undo Blockアクティビティを配送するべきです
*
* @param userId ブロック解除の動作を行ったユーザーid
* @param target ブロック解除の対象のユーザーid
*/
suspend fun unblock(userId: Long, target: Long) suspend fun unblock(userId: Long, target: Long)
} }

View File

@ -35,6 +35,14 @@ interface AccountApiService {
suspend fun follow(userid: Long, followeeId: Long): Relationship suspend fun follow(userid: Long, followeeId: Long): Relationship
suspend fun account(id: Long): Account suspend fun account(id: Long): Account
suspend fun relationships(userid: Long, id: List<Long>, withSuspended: Boolean): List<Relationship> suspend fun relationships(userid: Long, id: List<Long>, withSuspended: Boolean): List<Relationship>
/**
* ブロック操作を行う
*
* @param userid ブロック操作を行ったユーザーid
* @param target ブロック対象のユーザーid
* @return ブロック後のブロック対象ユーザーとの[Relationship]
*/
suspend fun block(userid: Long, target: Long): Relationship suspend fun block(userid: Long, target: Long): Relationship
} }