add size field to Category data class (#519)

Makes it possible to display the size of a category to the user
This commit is contained in:
schroda
2023-03-25 19:37:50 +01:00
committed by GitHub
parent ec1d65f4c3
commit 5b61bdc3a8
3 changed files with 15 additions and 4 deletions

View File

@@ -18,7 +18,6 @@ import org.jetbrains.exposed.sql.selectAll
import org.jetbrains.exposed.sql.transactions.transaction import org.jetbrains.exposed.sql.transactions.transaction
import org.jetbrains.exposed.sql.update import org.jetbrains.exposed.sql.update
import suwayomi.tachidesk.manga.impl.CategoryManga.removeMangaFromCategory import suwayomi.tachidesk.manga.impl.CategoryManga.removeMangaFromCategory
import suwayomi.tachidesk.manga.impl.util.lang.isNotEmpty
import suwayomi.tachidesk.manga.model.dataclass.CategoryDataClass import suwayomi.tachidesk.manga.model.dataclass.CategoryDataClass
import suwayomi.tachidesk.manga.model.table.CategoryMangaTable import suwayomi.tachidesk.manga.model.table.CategoryMangaTable
import suwayomi.tachidesk.manga.model.table.CategoryMetaTable import suwayomi.tachidesk.manga.model.table.CategoryMetaTable
@@ -98,12 +97,14 @@ object Category {
const val DEFAULT_CATEGORY_ID = 0 const val DEFAULT_CATEGORY_ID = 0
const val DEFAULT_CATEGORY_NAME = "Default" const val DEFAULT_CATEGORY_NAME = "Default"
private fun addDefaultIfNecessary(categories: List<CategoryDataClass>): List<CategoryDataClass> = private fun addDefaultIfNecessary(categories: List<CategoryDataClass>): List<CategoryDataClass> {
if (MangaTable.select { (MangaTable.inLibrary eq true) and (MangaTable.defaultCategory eq true) }.isNotEmpty()) { val defaultCategorySize = MangaTable.select { (MangaTable.inLibrary eq true) and (MangaTable.defaultCategory eq true) }.count().toInt()
listOf(CategoryDataClass(DEFAULT_CATEGORY_ID, 0, DEFAULT_CATEGORY_NAME, true)) + categories return if (defaultCategorySize > 0) {
listOf(CategoryDataClass(DEFAULT_CATEGORY_ID, 0, DEFAULT_CATEGORY_NAME, true, defaultCategorySize)) + categories
} else { } else {
categories categories
} }
}
fun getCategoryList(): List<CategoryDataClass> { fun getCategoryList(): List<CategoryDataClass> {
return transaction { return transaction {
@@ -123,6 +124,14 @@ object Category {
} }
} }
fun getCategorySize(categoryId: Int): Int {
return transaction {
CategoryMangaTable.select {
CategoryMangaTable.category eq categoryId
}.count().toInt()
}
}
fun getCategoryMetaMap(categoryId: Int): Map<String, String> { fun getCategoryMetaMap(categoryId: Int): Map<String, String> {
return transaction { return transaction {
CategoryMetaTable.select { CategoryMetaTable.ref eq categoryId } CategoryMetaTable.select { CategoryMetaTable.ref eq categoryId }

View File

@@ -12,5 +12,6 @@ data class CategoryDataClass(
val order: Int, val order: Int,
val name: String, val name: String,
val default: Boolean, val default: Boolean,
val size: Int,
val meta: Map<String, String> = emptyMap() val meta: Map<String, String> = emptyMap()
) )

View File

@@ -23,5 +23,6 @@ fun CategoryTable.toDataClass(categoryEntry: ResultRow) = CategoryDataClass(
categoryEntry[order], categoryEntry[order],
categoryEntry[name], categoryEntry[name],
categoryEntry[isDefault], categoryEntry[isDefault],
Category.getCategorySize(categoryEntry[id].value),
Category.getCategoryMetaMap(categoryEntry[id].value) Category.getCategoryMetaMap(categoryEntry[id].value)
) )