mirror of https://github.com/usbharu/Hideout.git
wip
This commit is contained in:
parent
e728b0f990
commit
e70f104b5c
|
@ -2,6 +2,7 @@ package dev.usbharu.hideout.core.domain.model.support.timelineobjectdetail
|
|||
|
||||
import dev.usbharu.hideout.core.domain.model.actor.Actor
|
||||
import dev.usbharu.hideout.core.domain.model.post.Post
|
||||
import dev.usbharu.hideout.core.domain.model.post.PostId
|
||||
import dev.usbharu.hideout.core.domain.model.timelineobject.TimelineObject
|
||||
import dev.usbharu.hideout.core.domain.model.timelineobject.TimelineObjectId
|
||||
import dev.usbharu.hideout.core.domain.model.timelineobject.TimelineObjectWarnFilter
|
||||
|
@ -10,6 +11,7 @@ import java.time.Instant
|
|||
|
||||
data class TimelineObjectDetail(
|
||||
val id: TimelineObjectId,
|
||||
val postId: PostId,
|
||||
val timelineUserDetail: UserDetail,
|
||||
val post: Post,
|
||||
val postActor: Actor,
|
||||
|
@ -36,6 +38,7 @@ data class TimelineObjectDetail(
|
|||
): TimelineObjectDetail {
|
||||
return TimelineObjectDetail(
|
||||
timelineObject.id,
|
||||
post.id,
|
||||
timelineUserDetail,
|
||||
post,
|
||||
postActor,
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
package dev.usbharu.hideout.core.external.timeline
|
||||
|
||||
data class ReadTimelineOption(
|
||||
val mediaOnly: Boolean = false,
|
||||
val local: Boolean = false,
|
||||
val remote: Boolean = false,
|
||||
)
|
|
@ -1,6 +1,7 @@
|
|||
package dev.usbharu.hideout.core.external.timeline
|
||||
|
||||
import dev.usbharu.hideout.core.domain.model.post.Post
|
||||
import dev.usbharu.hideout.core.domain.model.support.page.Page
|
||||
import dev.usbharu.hideout.core.domain.model.support.timelineobjectdetail.TimelineObjectDetail
|
||||
import dev.usbharu.hideout.core.domain.model.timeline.Timeline
|
||||
import dev.usbharu.hideout.core.domain.model.timelinerelationship.TimelineRelationship
|
||||
|
@ -16,5 +17,9 @@ interface TimelineStore {
|
|||
suspend fun addTimeline(timeline: Timeline, timelineRelationshipList: List<TimelineRelationship>)
|
||||
suspend fun removeTimeline(timeline: Timeline)
|
||||
|
||||
suspend fun readTimeline(timeline: Timeline): List<TimelineObjectDetail>
|
||||
suspend fun readTimeline(
|
||||
timeline: Timeline,
|
||||
option: ReadTimelineOption? = null,
|
||||
page: Page? = null
|
||||
): List<TimelineObjectDetail>
|
||||
}
|
||||
|
|
|
@ -7,6 +7,7 @@ import dev.usbharu.hideout.core.domain.model.filter.FilteredPost
|
|||
import dev.usbharu.hideout.core.domain.model.post.Post
|
||||
import dev.usbharu.hideout.core.domain.model.post.PostId
|
||||
import dev.usbharu.hideout.core.domain.model.post.Visibility
|
||||
import dev.usbharu.hideout.core.domain.model.support.page.Page
|
||||
import dev.usbharu.hideout.core.domain.model.support.timelineobjectdetail.TimelineObjectDetail
|
||||
import dev.usbharu.hideout.core.domain.model.timeline.Timeline
|
||||
import dev.usbharu.hideout.core.domain.model.timeline.TimelineId
|
||||
|
@ -19,6 +20,7 @@ import dev.usbharu.hideout.core.domain.model.timelinerelationship.Visible
|
|||
import dev.usbharu.hideout.core.domain.model.userdetails.UserDetail
|
||||
import dev.usbharu.hideout.core.domain.model.userdetails.UserDetailId
|
||||
import dev.usbharu.hideout.core.domain.shared.id.IdGenerateService
|
||||
import dev.usbharu.hideout.core.external.timeline.ReadTimelineOption
|
||||
import dev.usbharu.hideout.core.external.timeline.TimelineStore
|
||||
import java.time.Instant
|
||||
|
||||
|
@ -104,7 +106,11 @@ abstract class AbstractTimelineStore(private val idGenerateService: IdGenerateSe
|
|||
|
||||
protected abstract suspend fun getPostsByPostId(postIds: List<PostId>): List<Post>
|
||||
|
||||
protected abstract suspend fun getTimelineObject(timelineId: TimelineId): List<TimelineObject>
|
||||
protected abstract suspend fun getTimelineObject(
|
||||
timelineId: TimelineId,
|
||||
readTimelineOption: ReadTimelineOption?,
|
||||
page: Page?
|
||||
): List<TimelineObject>
|
||||
|
||||
override suspend fun updatePost(post: Post) {
|
||||
val timelineObjectByPostId = getTimelineObjectByPostId(post.id)
|
||||
|
@ -195,8 +201,12 @@ abstract class AbstractTimelineStore(private val idGenerateService: IdGenerateSe
|
|||
removeTimelineObject(timeline.id)
|
||||
}
|
||||
|
||||
override suspend fun readTimeline(timeline: Timeline): List<TimelineObjectDetail> {
|
||||
val timelineObjectList = getTimelineObject(timeline.id)
|
||||
override suspend fun readTimeline(
|
||||
timeline: Timeline,
|
||||
option: ReadTimelineOption?,
|
||||
page: Page?
|
||||
): List<TimelineObjectDetail> {
|
||||
val timelineObjectList = getTimelineObject(timeline.id, option, page)
|
||||
val lastUpdatedAt = timelineObjectList.minBy { it.lastUpdatedAt }.lastUpdatedAt
|
||||
|
||||
val newerFilters = getNewerFilters(timeline.userDetailId, lastUpdatedAt)
|
||||
|
|
|
@ -24,6 +24,7 @@ import dev.usbharu.hideout.core.domain.model.userdetails.UserDetailId
|
|||
import dev.usbharu.hideout.core.domain.model.userdetails.UserDetailRepository
|
||||
import dev.usbharu.hideout.core.domain.service.filter.FilterDomainService
|
||||
import dev.usbharu.hideout.core.domain.shared.id.IdGenerateService
|
||||
import dev.usbharu.hideout.core.external.timeline.ReadTimelineOption
|
||||
import org.springframework.stereotype.Component
|
||||
import java.time.Instant
|
||||
|
||||
|
@ -101,8 +102,20 @@ open class DefaultTimelineStore(
|
|||
return postRepository.findAllById(postIds)
|
||||
}
|
||||
|
||||
override suspend fun getTimelineObject(timelineId: TimelineId): List<TimelineObject> {
|
||||
return internalTimelineObjectRepository.findByTimelineId(timelineId)
|
||||
override suspend fun getTimelineObject(
|
||||
timelineId: TimelineId,
|
||||
readTimelineOption: ReadTimelineOption?,
|
||||
page: Page?
|
||||
): List<TimelineObject> {
|
||||
return internalTimelineObjectRepository.findByTimelineId(
|
||||
timelineId,
|
||||
InternalTimelineObjectOption(
|
||||
readTimelineOption?.local,
|
||||
readTimelineOption?.remote,
|
||||
readTimelineOption?.mediaOnly
|
||||
),
|
||||
page
|
||||
)
|
||||
}
|
||||
|
||||
override suspend fun getActorPost(actorId: ActorId, visibilityList: List<Visibility>): List<Post> {
|
||||
|
|
|
@ -2,6 +2,7 @@ package dev.usbharu.hideout.core.infrastructure.timeline
|
|||
|
||||
import dev.usbharu.hideout.core.domain.model.actor.ActorId
|
||||
import dev.usbharu.hideout.core.domain.model.post.PostId
|
||||
import dev.usbharu.hideout.core.domain.model.support.page.Page
|
||||
import dev.usbharu.hideout.core.domain.model.timeline.TimelineId
|
||||
import dev.usbharu.hideout.core.domain.model.timelineobject.TimelineObject
|
||||
|
||||
|
@ -17,5 +18,15 @@ interface InternalTimelineObjectRepository {
|
|||
suspend fun deleteByTimelineIdAndActorId(timelineId: TimelineId, actorId: ActorId)
|
||||
|
||||
suspend fun deleteByTimelineId(timelineId: TimelineId)
|
||||
suspend fun findByTimelineId(timelineId: TimelineId): List<TimelineObject>
|
||||
suspend fun findByTimelineId(
|
||||
timelineId: TimelineId,
|
||||
internalTimelineObjectOption: InternalTimelineObjectOption? = null,
|
||||
page: Page? = null
|
||||
): List<TimelineObject>
|
||||
}
|
||||
|
||||
data class InternalTimelineObjectOption(
|
||||
val localOnly: Boolean? = null,
|
||||
val remoteOnly: Boolean? = null,
|
||||
val mediaOnly: Boolean? = null
|
||||
)
|
Loading…
Reference in New Issue