mirror of https://github.com/usbharu/Hideout.git
feat: リアクション情報を配送するinterfaceを定義
This commit is contained in:
parent
20fbcbf72e
commit
88f8b405e3
|
@ -15,3 +15,10 @@ object DeliverPostJob : HideoutJob("DeliverPostJob") {
|
||||||
val actor = string("actor")
|
val actor = string("actor")
|
||||||
val inbox = string("inbox")
|
val inbox = string("inbox")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
object DeliverReactionJob : HideoutJob("DeliverReactionJob") {
|
||||||
|
val reaction = string("reaction")
|
||||||
|
val postUrl = string("postUrl")
|
||||||
|
val actor = string("actor")
|
||||||
|
val inbox = string("inbox")
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
package dev.usbharu.hideout.service.activitypub
|
||||||
|
|
||||||
|
import dev.usbharu.hideout.domain.model.hideout.entity.Reaction
|
||||||
|
import dev.usbharu.hideout.domain.model.job.DeliverReactionJob
|
||||||
|
import kjob.core.job.JobProps
|
||||||
|
|
||||||
|
interface ActivityPubReactionService {
|
||||||
|
suspend fun reaction(like: Reaction)
|
||||||
|
suspend fun reactionJob(props: JobProps<DeliverReactionJob>)
|
||||||
|
}
|
|
@ -2,4 +2,5 @@ package dev.usbharu.hideout.service.reaction
|
||||||
|
|
||||||
interface IReactionService {
|
interface IReactionService {
|
||||||
suspend fun receiveReaction(name: String, domain: String, userId: Long, postId: Long)
|
suspend fun receiveReaction(name: String, domain: String, userId: Long, postId: Long)
|
||||||
|
suspend fun sendReaction(name: String, userId: Long, postId: Long)
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,10 +2,14 @@ package dev.usbharu.hideout.service.reaction
|
||||||
|
|
||||||
import dev.usbharu.hideout.domain.model.hideout.entity.Reaction
|
import dev.usbharu.hideout.domain.model.hideout.entity.Reaction
|
||||||
import dev.usbharu.hideout.repository.ReactionRepository
|
import dev.usbharu.hideout.repository.ReactionRepository
|
||||||
|
import dev.usbharu.hideout.service.activitypub.ActivityPubReactionService
|
||||||
import org.koin.core.annotation.Single
|
import org.koin.core.annotation.Single
|
||||||
|
|
||||||
@Single
|
@Single
|
||||||
class ReactionServiceImpl(private val reactionRepository: ReactionRepository) : IReactionService {
|
class ReactionServiceImpl(
|
||||||
|
private val reactionRepository: ReactionRepository,
|
||||||
|
private val activityPubReactionService: ActivityPubReactionService
|
||||||
|
) : IReactionService {
|
||||||
override suspend fun receiveReaction(name: String, domain: String, userId: Long, postId: Long) {
|
override suspend fun receiveReaction(name: String, domain: String, userId: Long, postId: Long) {
|
||||||
if (reactionRepository.reactionAlreadyExist(postId, userId, 0).not()) {
|
if (reactionRepository.reactionAlreadyExist(postId, userId, 0).not()) {
|
||||||
reactionRepository.save(
|
reactionRepository.save(
|
||||||
|
@ -13,4 +17,14 @@ class ReactionServiceImpl(private val reactionRepository: ReactionRepository) :
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override suspend fun sendReaction(name: String, userId: Long, postId: Long) {
|
||||||
|
if (reactionRepository.reactionAlreadyExist(postId, userId, 0)) {
|
||||||
|
//delete
|
||||||
|
} else {
|
||||||
|
val reaction = Reaction(reactionRepository.generateId(), 0, postId, userId)
|
||||||
|
reactionRepository.save(reaction)
|
||||||
|
activityPubReactionService.reaction(reaction)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue