Search code examples
kotlinktorkotlin-exposed

Kotlin Exposed (KTOR) SELECT last record in Table


How can I select last record in table from database in ktor?

my data class

data class ArticleInfoDTO(
    val id: Int,
    val likes: Int,
    val views: Int,
)

my function

object ArticlesInfo : Table("articles_info") {
    private val id = ArticlesInfo.integer("id")
    private val likes = ArticlesInfo.integer("likes")
    private val views = ArticlesInfo.integer("views")

    fun fetchArticleInfoLastRecord(): ArticleInfoDTO {
        return transaction {
            ArticlesInfo.select {  } // what should I write in curly braces?
        
        }
    }

Solution

  • data class ArticleInfoDTO(
        val id: Int,
        val likes: Int,
        val views: Int,
    )
    
    object ArticlesInfo : Table("articles_info") {
        private val id = ArticlesInfo.integer("id")
        private val likes = ArticlesInfo.integer("likes")
        private val views = ArticlesInfo.integer("views")
    
        fun fetchArticleInfoLastRecord(): ArticleInfoDTO? = transaction {
            ArticlesInfo.selectAll().lastOrNull()?.toArticleInfo()
        }
    
        private fun ResultRow.toArticleInfo() = ArticleInfoDTO(
            this[id],
            this[likes],
            this[views]
        )
    }