X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fkotlin%2Fnet%2Fpterodactylus%2Fsone%2Fdatabase%2Fmemory%2FMemoryDatabase.kt;h=d48ef1e9f7c315e8063670a641d73fa79b4e77d4;hb=9fab35abd7dc86afe186ed69a86758a3a0ac426c;hp=fd7ac4861e01fa22fdeb71599b225fedc3f7dc9d;hpb=b1e6cda6c077a95eab43ab371a75afd92ef820a0;p=Sone.git diff --git a/src/main/kotlin/net/pterodactylus/sone/database/memory/MemoryDatabase.kt b/src/main/kotlin/net/pterodactylus/sone/database/memory/MemoryDatabase.kt index fd7ac48..d48ef1e 100644 --- a/src/main/kotlin/net/pterodactylus/sone/database/memory/MemoryDatabase.kt +++ b/src/main/kotlin/net/pterodactylus/sone/database/memory/MemoryDatabase.kt @@ -21,7 +21,8 @@ import com.google.common.base.Preconditions.checkNotNull import com.google.common.collect.HashMultimap import com.google.common.collect.Multimap import com.google.common.collect.TreeMultimap -import com.google.common.util.concurrent.* +import com.google.common.util.concurrent.AbstractService +import com.google.common.util.concurrent.RateLimiter import com.google.inject.Inject import com.google.inject.Singleton import net.pterodactylus.sone.data.Album @@ -41,7 +42,8 @@ import net.pterodactylus.sone.database.ImageBuilder import net.pterodactylus.sone.database.PostBuilder import net.pterodactylus.sone.database.PostDatabase import net.pterodactylus.sone.database.PostReplyBuilder -import net.pterodactylus.sone.utils.* +import net.pterodactylus.sone.utils.ifTrue +import net.pterodactylus.sone.utils.unit import net.pterodactylus.util.config.Configuration import net.pterodactylus.util.config.ConfigurationException import java.util.concurrent.locks.ReentrantReadWriteLock @@ -61,7 +63,7 @@ class MemoryDatabase @Inject constructor(private val configuration: Configuratio private val allPosts = mutableMapOf() private val sonePosts: Multimap = HashMultimap.create() private val knownPosts = mutableSetOf() - private val allPostReplies = mutableMapOf() + private val allPostReplies = mutableMapOf() private val sonePostReplies: Multimap = TreeMultimap.create(Comparator { leftString, rightString -> leftString.compareTo(rightString) }, newestReplyFirst) private val knownPostReplies = mutableSetOf() private val allAlbums = mutableMapOf() @@ -121,7 +123,7 @@ class MemoryDatabase @Inject constructor(private val configuration: Configuratio } sonePostReplies.putAll(sone.id, sone.replies) for (postReply in sone.replies) { - allPostReplies[postReply.id] = postReply + allPostReplies[postReply.id] = postReply.toShell() } sone.allAlbums.let { albums -> soneAlbums.putAll(sone.id, albums) @@ -221,12 +223,15 @@ class MemoryDatabase @Inject constructor(private val configuration: Configuratio } } - override fun getPostReply(id: String) = readLock.withLock { allPostReplies[id] } + override fun getPostReply(id: String) = readLock.withLock { + allPostReplies[id]?.build(newPostReplyBuilder()) + } override fun getReplies(postId: String) = readLock.withLock { allPostReplies.values .filter { it.postId == postId } + .map { it.build(newPostReplyBuilder()) } .sortedWith(newestReplyFirst.reversed()) } @@ -235,7 +240,7 @@ class MemoryDatabase @Inject constructor(private val configuration: Configuratio override fun storePostReply(postReply: PostReply) = writeLock.withLock { - allPostReplies[postReply.id] = postReply + allPostReplies[postReply.id] = postReply.toShell() } override fun removePostReply(postReply: PostReply) = @@ -295,7 +300,7 @@ class MemoryDatabase @Inject constructor(private val configuration: Configuratio saveKnownPosts() } - protected fun isPostReplyKnown(postReply: PostReply) = readLock.withLock { postReply.id in knownPostReplies } + internal fun isPostReplyKnown(postReply: PostReply) = readLock.withLock { postReply.id in knownPostReplies } override fun setPostReplyKnown(postReply: PostReply): Unit = writeLock.withLock {