mirror of
https://github.com/InsanusMokrassar/PlaguPoster.git
synced 2025-09-14 20:49:36 +00:00
add gc
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
package dev.inmo.plaguposter.posts.models
|
||||
|
||||
import com.soywiz.klock.DateTime
|
||||
import dev.inmo.plaguposter.common.DateTimeSerializer
|
||||
import dev.inmo.tgbotapi.types.ChatId
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
@@ -16,5 +18,7 @@ data class NewPost(
|
||||
@Serializable
|
||||
data class RegisteredPost(
|
||||
val id: PostId,
|
||||
@Serializable(DateTimeSerializer::class)
|
||||
val created: DateTime,
|
||||
override val content: List<PostContentInfo>
|
||||
) : Post
|
||||
|
@@ -1,5 +1,6 @@
|
||||
package dev.inmo.plaguposter.posts.repo
|
||||
|
||||
import com.soywiz.klock.DateTime
|
||||
import dev.inmo.micro_utils.repos.ReadCRUDRepo
|
||||
import dev.inmo.plaguposter.posts.models.*
|
||||
import dev.inmo.tgbotapi.types.ChatId
|
||||
@@ -7,4 +8,5 @@ import dev.inmo.tgbotapi.types.MessageIdentifier
|
||||
|
||||
interface ReadPostsRepo : ReadCRUDRepo<RegisteredPost, PostId> {
|
||||
suspend fun getIdByChatAndMessage(chatId: ChatId, messageId: MessageIdentifier): PostId?
|
||||
suspend fun getPostCreationTime(postId: PostId): DateTime?
|
||||
}
|
||||
|
@@ -1,6 +1,7 @@
|
||||
package dev.inmo.plaguposter.posts.exposed
|
||||
|
||||
import com.benasher44.uuid.uuid4
|
||||
import com.soywiz.klock.DateTime
|
||||
import dev.inmo.micro_utils.repos.KeyValuesRepo
|
||||
import dev.inmo.micro_utils.repos.exposed.AbstractExposedCRUDRepo
|
||||
import dev.inmo.micro_utils.repos.exposed.initTable
|
||||
@@ -21,6 +22,9 @@ class ExposedPostsRepo(
|
||||
tableName = "posts"
|
||||
) {
|
||||
val idColumn = text("id").clientDefault { uuid4().toString() }
|
||||
val createdColumn = double("datetime").default(0.0).clientDefault {
|
||||
DateTime.nowUnix()
|
||||
}
|
||||
|
||||
private val contentRepo by lazy {
|
||||
ExposedContentInfoRepo(
|
||||
@@ -38,6 +42,7 @@ class ExposedPostsRepo(
|
||||
val id = PostId(get(idColumn))
|
||||
return RegisteredPost(
|
||||
id,
|
||||
DateTime(get(createdColumn)),
|
||||
with(contentRepo) {
|
||||
select { postIdColumn.eq(id.string) }.map {
|
||||
it.asObject
|
||||
@@ -70,6 +75,7 @@ class ExposedPostsRepo(
|
||||
|
||||
return RegisteredPost(
|
||||
id,
|
||||
DateTime(get(createdColumn)),
|
||||
with(contentRepo) {
|
||||
select { postIdColumn.eq(id.string) }.map {
|
||||
it.asObject
|
||||
@@ -130,4 +136,8 @@ class ExposedPostsRepo(
|
||||
} ?.let(::PostId)
|
||||
}
|
||||
}
|
||||
|
||||
override suspend fun getPostCreationTime(postId: PostId): DateTime? = transaction(database) {
|
||||
select { selectById(postId) }.limit(1).firstOrNull() ?.get(createdColumn) ?.let(::DateTime)
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user