From 0d39e779c41c0f3341338156b8091e6ba663a393 Mon Sep 17 00:00:00 2001 From: usbharu <64310155+usbharu@users.noreply.github.com> Date: Sat, 6 Jul 2024 18:30:02 +0900 Subject: [PATCH] =?UTF-8?q?refactor:=20=E3=82=BF=E3=82=A4=E3=83=A0?= =?UTF-8?q?=E3=83=A9=E3=82=A4=E3=83=B3=E3=81=AE=E5=AE=9F=E8=A3=85=E6=96=B9?= =?UTF-8?q?=E5=BC=8F=E3=82=92=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../relationship/RelationshipRepository.kt | 6 +++++- .../ExposedRelationshipRepository.kt | 12 +++++++++-- .../timeline/AbstractTimelineStore.kt | 13 ++++-------- .../timeline/DefaultTimelineStore.kt | 20 +++++++++++++++++++ 4 files changed, 39 insertions(+), 12 deletions(-) create mode 100644 hideout-core/src/main/kotlin/dev/usbharu/hideout/core/infrastructure/timeline/DefaultTimelineStore.kt diff --git a/hideout-core/src/main/kotlin/dev/usbharu/hideout/core/domain/model/relationship/RelationshipRepository.kt b/hideout-core/src/main/kotlin/dev/usbharu/hideout/core/domain/model/relationship/RelationshipRepository.kt index e147222f..e21f588a 100644 --- a/hideout-core/src/main/kotlin/dev/usbharu/hideout/core/domain/model/relationship/RelationshipRepository.kt +++ b/hideout-core/src/main/kotlin/dev/usbharu/hideout/core/domain/model/relationship/RelationshipRepository.kt @@ -22,7 +22,11 @@ interface RelationshipRepository { suspend fun save(relationship: Relationship): Relationship suspend fun delete(relationship: Relationship) suspend fun findByActorIdAndTargetId(actorId: ActorId, targetId: ActorId): Relationship? - suspend fun findByTargetId(targetId: ActorId, option: FindRelationshipOption? = null): List + suspend fun findByTargetId( + targetId: ActorId, + option: FindRelationshipOption? = null, + inverseOption: FindRelationshipOption? = null + ): List } diff --git a/hideout-core/src/main/kotlin/dev/usbharu/hideout/core/infrastructure/exposedrepository/ExposedRelationshipRepository.kt b/hideout-core/src/main/kotlin/dev/usbharu/hideout/core/infrastructure/exposedrepository/ExposedRelationshipRepository.kt index ab1349f6..bd811773 100644 --- a/hideout-core/src/main/kotlin/dev/usbharu/hideout/core/infrastructure/exposedrepository/ExposedRelationshipRepository.kt +++ b/hideout-core/src/main/kotlin/dev/usbharu/hideout/core/infrastructure/exposedrepository/ExposedRelationshipRepository.kt @@ -67,11 +67,19 @@ class ExposedRelationshipRepository(override val domainEventPublisher: DomainEve }.singleOrNull()?.toRelationships() } - override suspend fun findByTargetId(targetId: ActorId, option: FindRelationshipOption?): List { - val query = Relationships.selectAll().where { + override suspend fun findByTargetId( + targetId: ActorId, + option: FindRelationshipOption?, + inverseOption: FindRelationshipOption? + ): List { + val query1 = Relationships.selectAll().where { Relationships.actorId eq targetId.id } + inverseOption.apply(query1) + //todo 逆のほうがいいかも + val query = query1.alias("INV").selectAll().where { Relationships.targetActorId eq targetId.id } option.apply(query) + return query.map(ResultRow::toRelationships) } diff --git a/hideout-core/src/main/kotlin/dev/usbharu/hideout/core/infrastructure/timeline/AbstractTimelineStore.kt b/hideout-core/src/main/kotlin/dev/usbharu/hideout/core/infrastructure/timeline/AbstractTimelineStore.kt index f9ff780c..43db5447 100644 --- a/hideout-core/src/main/kotlin/dev/usbharu/hideout/core/infrastructure/timeline/AbstractTimelineStore.kt +++ b/hideout-core/src/main/kotlin/dev/usbharu/hideout/core/infrastructure/timeline/AbstractTimelineStore.kt @@ -1,19 +1,14 @@ package dev.usbharu.hideout.core.infrastructure.timeline +import dev.usbharu.hideout.core.domain.model.actor.ActorId import dev.usbharu.hideout.core.domain.model.post.Post -import dev.usbharu.hideout.core.domain.model.relationship.FindRelationshipOption -import dev.usbharu.hideout.core.domain.model.relationship.RelationshipRepository -import dev.usbharu.hideout.core.domain.model.timeline.TimelineRepository import dev.usbharu.hideout.core.external.timeline.TimelineStore -abstract class AbstractTimelineStore( - private val timelineRepository: TimelineRepository, - private val relationshipRepository: RelationshipRepository -) : - TimelineStore { +abstract class AbstractTimelineStore() : TimelineStore { override suspend fun newPost(post: Post) { - relationshipRepository.findByTargetId(post.actorId, FindRelationshipOption(follow = true, mute = false)) + getFollowers(post.actorId) } + protected abstract suspend fun getFollowers(actorId: ActorId): List } \ No newline at end of file diff --git a/hideout-core/src/main/kotlin/dev/usbharu/hideout/core/infrastructure/timeline/DefaultTimelineStore.kt b/hideout-core/src/main/kotlin/dev/usbharu/hideout/core/infrastructure/timeline/DefaultTimelineStore.kt new file mode 100644 index 00000000..fd5779a5 --- /dev/null +++ b/hideout-core/src/main/kotlin/dev/usbharu/hideout/core/infrastructure/timeline/DefaultTimelineStore.kt @@ -0,0 +1,20 @@ +package dev.usbharu.hideout.core.infrastructure.timeline + +import dev.usbharu.hideout.core.domain.model.actor.ActorId +import dev.usbharu.hideout.core.domain.model.relationship.FindRelationshipOption +import dev.usbharu.hideout.core.domain.model.relationship.RelationshipRepository +import dev.usbharu.hideout.core.domain.model.timeline.TimelineRepository + +open class DefaultTimelineStore( + private val timelineRepository: TimelineRepository, + private val relationshipRepository: RelationshipRepository +) : AbstractTimelineStore() { + override suspend fun getFollowers(actorId: ActorId): List { + return relationshipRepository + .findByTargetId( + actorId, FindRelationshipOption(follow = true, mute = false), + FindRelationshipOption(block = false) + ) + .map { it.actorId } + } +} \ No newline at end of file