Fix empty results errors
This commit is contained in:
@@ -99,7 +99,7 @@ class CategoryQuery {
|
||||
andFilterWithCompareEntity(CategoryTable.id, id),
|
||||
andFilterWithCompare(CategoryTable.order, order),
|
||||
andFilterWithCompareString(CategoryTable.name, name),
|
||||
andFilterWithCompare(CategoryTable.isDefault, default),
|
||||
andFilterWithCompare(CategoryTable.isDefault, default)
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -191,15 +191,29 @@ class CategoryQuery {
|
||||
|
||||
return CategoryNodeList(
|
||||
resultsAsType,
|
||||
CategoryNodeList.CategoryEdges(
|
||||
cursor = getAsCursor(orderBy, resultsAsType.last()),
|
||||
node = resultsAsType.last()
|
||||
),
|
||||
if (resultsAsType.isEmpty()) {
|
||||
emptyList()
|
||||
} else {
|
||||
listOf(
|
||||
resultsAsType.first().let {
|
||||
CategoryNodeList.CategoryEdge(
|
||||
getAsCursor(orderBy, it),
|
||||
it
|
||||
)
|
||||
},
|
||||
resultsAsType.last().let {
|
||||
CategoryNodeList.CategoryEdge(
|
||||
getAsCursor(orderBy, it),
|
||||
it
|
||||
)
|
||||
}
|
||||
)
|
||||
},
|
||||
pageInfo = PageInfo(
|
||||
hasNextPage = queryResults.lastKey != resultsAsType.last().id,
|
||||
hasPreviousPage = queryResults.firstKey != resultsAsType.first().id,
|
||||
startCursor = getAsCursor(orderBy, resultsAsType.first()),
|
||||
endCursor = getAsCursor(orderBy, resultsAsType.last())
|
||||
startCursor = resultsAsType.firstOrNull()?.let { getAsCursor(orderBy, it) },
|
||||
endCursor = resultsAsType.lastOrNull()?.let { getAsCursor(orderBy, it) }
|
||||
),
|
||||
totalCount = queryResults.total.toInt()
|
||||
)
|
||||
|
||||
@@ -259,15 +259,29 @@ class MangaQuery {
|
||||
|
||||
return MangaNodeList(
|
||||
resultsAsType,
|
||||
MangaNodeList.MangaEdges(
|
||||
cursor = getAsCursor(orderBy, resultsAsType.last()),
|
||||
node = resultsAsType.last()
|
||||
),
|
||||
if (resultsAsType.isEmpty()) {
|
||||
emptyList()
|
||||
} else {
|
||||
listOf(
|
||||
resultsAsType.first().let {
|
||||
MangaNodeList.MangaEdge(
|
||||
getAsCursor(orderBy, it),
|
||||
it
|
||||
)
|
||||
},
|
||||
resultsAsType.last().let {
|
||||
MangaNodeList.MangaEdge(
|
||||
getAsCursor(orderBy, it),
|
||||
it
|
||||
)
|
||||
}
|
||||
)
|
||||
},
|
||||
pageInfo = PageInfo(
|
||||
hasNextPage = queryResults.lastKey != resultsAsType.last().id,
|
||||
hasPreviousPage = queryResults.firstKey != resultsAsType.first().id,
|
||||
startCursor = getAsCursor(orderBy, resultsAsType.first()),
|
||||
endCursor = getAsCursor(orderBy, resultsAsType.last())
|
||||
startCursor = resultsAsType.firstOrNull()?.let { getAsCursor(orderBy, it) },
|
||||
endCursor = resultsAsType.lastOrNull()?.let { getAsCursor(orderBy, it) }
|
||||
),
|
||||
totalCount = queryResults.total.toInt()
|
||||
)
|
||||
|
||||
@@ -9,7 +9,7 @@ abstract class NodeList {
|
||||
abstract val nodes: List<Node>
|
||||
|
||||
@GraphQLDescription("A list of edges which contains the [T] and cursor to aid in pagination.")
|
||||
abstract val edges: Edges
|
||||
abstract val edges: List<Edge>
|
||||
|
||||
@GraphQLDescription("Information to aid in pagination.")
|
||||
abstract val pageInfo: PageInfo
|
||||
@@ -24,12 +24,12 @@ data class PageInfo(
|
||||
@GraphQLDescription("When paginating backwards, are there more items?")
|
||||
val hasPreviousPage: Boolean,
|
||||
@GraphQLDescription("When paginating backwards, the cursor to continue.")
|
||||
val startCursor: Cursor,
|
||||
val startCursor: Cursor?,
|
||||
@GraphQLDescription("When paginating forwards, the cursor to continue.")
|
||||
val endCursor: Cursor
|
||||
val endCursor: Cursor?
|
||||
)
|
||||
|
||||
abstract class Edges {
|
||||
abstract class Edge {
|
||||
@GraphQLDescription("A cursor for use in pagination.")
|
||||
abstract val cursor: Cursor
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ import com.expediagroup.graphql.server.extensions.getValueFromDataLoader
|
||||
import graphql.schema.DataFetchingEnvironment
|
||||
import org.jetbrains.exposed.sql.ResultRow
|
||||
import suwayomi.tachidesk.graphql.server.primitives.Cursor
|
||||
import suwayomi.tachidesk.graphql.server.primitives.Edges
|
||||
import suwayomi.tachidesk.graphql.server.primitives.Edge
|
||||
import suwayomi.tachidesk.graphql.server.primitives.Node
|
||||
import suwayomi.tachidesk.graphql.server.primitives.NodeList
|
||||
import suwayomi.tachidesk.graphql.server.primitives.PageInfo
|
||||
@@ -42,23 +42,20 @@ class CategoryType(
|
||||
|
||||
data class CategoryNodeList(
|
||||
override val nodes: List<CategoryType>,
|
||||
override val edges: CategoryEdges,
|
||||
override val edges: List<CategoryEdge>,
|
||||
override val pageInfo: PageInfo,
|
||||
override val totalCount: Int
|
||||
) : NodeList() {
|
||||
data class CategoryEdges(
|
||||
data class CategoryEdge(
|
||||
override val cursor: Cursor,
|
||||
override val node: CategoryType
|
||||
) : Edges()
|
||||
) : Edge()
|
||||
|
||||
companion object {
|
||||
fun List<CategoryType>.toNodeList(): CategoryNodeList {
|
||||
return CategoryNodeList(
|
||||
nodes = this,
|
||||
edges = CategoryEdges(
|
||||
cursor = Cursor(lastIndex.toString()),
|
||||
node = last()
|
||||
),
|
||||
edges = getEdges(),
|
||||
pageInfo = PageInfo(
|
||||
hasNextPage = false,
|
||||
hasPreviousPage = false,
|
||||
@@ -68,5 +65,19 @@ data class CategoryNodeList(
|
||||
totalCount = size
|
||||
)
|
||||
}
|
||||
|
||||
private fun List<CategoryType>.getEdges(): List<CategoryEdge> {
|
||||
if (isEmpty()) return emptyList()
|
||||
return listOf(
|
||||
CategoryEdge(
|
||||
cursor = Cursor("0"),
|
||||
node = first()
|
||||
),
|
||||
CategoryEdge(
|
||||
cursor = Cursor(lastIndex.toString()),
|
||||
node = last()
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,7 +11,7 @@ import com.expediagroup.graphql.server.extensions.getValueFromDataLoader
|
||||
import graphql.schema.DataFetchingEnvironment
|
||||
import org.jetbrains.exposed.sql.ResultRow
|
||||
import suwayomi.tachidesk.graphql.server.primitives.Cursor
|
||||
import suwayomi.tachidesk.graphql.server.primitives.Edges
|
||||
import suwayomi.tachidesk.graphql.server.primitives.Edge
|
||||
import suwayomi.tachidesk.graphql.server.primitives.Node
|
||||
import suwayomi.tachidesk.graphql.server.primitives.NodeList
|
||||
import suwayomi.tachidesk.graphql.server.primitives.PageInfo
|
||||
@@ -85,23 +85,20 @@ class ChapterType(
|
||||
|
||||
data class ChapterNodeList(
|
||||
override val nodes: List<ChapterType>,
|
||||
override val edges: ChapterEdges,
|
||||
override val edges: List<ChapterEdge>,
|
||||
override val pageInfo: PageInfo,
|
||||
override val totalCount: Int
|
||||
) : NodeList() {
|
||||
data class ChapterEdges(
|
||||
data class ChapterEdge(
|
||||
override val cursor: Cursor,
|
||||
override val node: ChapterType
|
||||
) : Edges()
|
||||
) : Edge()
|
||||
|
||||
companion object {
|
||||
fun List<ChapterType>.toNodeList(): ChapterNodeList {
|
||||
return ChapterNodeList(
|
||||
nodes = this,
|
||||
edges = ChapterEdges(
|
||||
cursor = Cursor(lastIndex.toString()),
|
||||
node = last()
|
||||
),
|
||||
edges = getEdges(),
|
||||
pageInfo = PageInfo(
|
||||
hasNextPage = false,
|
||||
hasPreviousPage = false,
|
||||
@@ -111,5 +108,19 @@ data class ChapterNodeList(
|
||||
totalCount = size
|
||||
)
|
||||
}
|
||||
|
||||
private fun List<ChapterType>.getEdges(): List<ChapterEdge> {
|
||||
if (isEmpty()) return emptyList()
|
||||
return listOf(
|
||||
ChapterEdge(
|
||||
cursor = Cursor("0"),
|
||||
node = first()
|
||||
),
|
||||
ChapterEdge(
|
||||
cursor = Cursor(lastIndex.toString()),
|
||||
node = last()
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@ package suwayomi.tachidesk.graphql.types
|
||||
|
||||
import com.expediagroup.graphql.generator.annotations.GraphQLIgnore
|
||||
import suwayomi.tachidesk.graphql.server.primitives.Cursor
|
||||
import suwayomi.tachidesk.graphql.server.primitives.Edges
|
||||
import suwayomi.tachidesk.graphql.server.primitives.Edge
|
||||
import suwayomi.tachidesk.graphql.server.primitives.Node
|
||||
import suwayomi.tachidesk.graphql.server.primitives.NodeList
|
||||
import suwayomi.tachidesk.graphql.server.primitives.PageInfo
|
||||
@@ -52,23 +52,20 @@ class DownloadType(
|
||||
|
||||
data class DownloadNodeList(
|
||||
override val nodes: List<DownloadType>,
|
||||
override val edges: DownloadEdges,
|
||||
override val edges: List<DownloadEdge>,
|
||||
override val pageInfo: PageInfo,
|
||||
override val totalCount: Int
|
||||
) : NodeList() {
|
||||
data class DownloadEdges(
|
||||
data class DownloadEdge(
|
||||
override val cursor: Cursor,
|
||||
override val node: DownloadType
|
||||
) : Edges()
|
||||
) : Edge()
|
||||
|
||||
companion object {
|
||||
fun List<DownloadType>.toNodeList(): DownloadNodeList {
|
||||
return DownloadNodeList(
|
||||
nodes = this,
|
||||
edges = DownloadEdges(
|
||||
cursor = Cursor(lastIndex.toString()),
|
||||
node = last()
|
||||
),
|
||||
edges = getEdges(),
|
||||
pageInfo = PageInfo(
|
||||
hasNextPage = false,
|
||||
hasPreviousPage = false,
|
||||
@@ -78,5 +75,19 @@ data class DownloadNodeList(
|
||||
totalCount = size
|
||||
)
|
||||
}
|
||||
|
||||
private fun List<DownloadType>.getEdges(): List<DownloadEdge> {
|
||||
if (isEmpty()) return emptyList()
|
||||
return listOf(
|
||||
DownloadEdge(
|
||||
cursor = Cursor("0"),
|
||||
node = first()
|
||||
),
|
||||
DownloadEdge(
|
||||
cursor = Cursor(lastIndex.toString()),
|
||||
node = last()
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,7 +11,7 @@ import com.expediagroup.graphql.server.extensions.getValueFromDataLoader
|
||||
import graphql.schema.DataFetchingEnvironment
|
||||
import org.jetbrains.exposed.sql.ResultRow
|
||||
import suwayomi.tachidesk.graphql.server.primitives.Cursor
|
||||
import suwayomi.tachidesk.graphql.server.primitives.Edges
|
||||
import suwayomi.tachidesk.graphql.server.primitives.Edge
|
||||
import suwayomi.tachidesk.graphql.server.primitives.Node
|
||||
import suwayomi.tachidesk.graphql.server.primitives.NodeList
|
||||
import suwayomi.tachidesk.graphql.server.primitives.PageInfo
|
||||
@@ -54,23 +54,20 @@ class ExtensionType(
|
||||
|
||||
data class ExtensionNodeList(
|
||||
override val nodes: List<ExtensionType>,
|
||||
override val edges: ExtensionEdges,
|
||||
override val edges: List<ExtensionEdge>,
|
||||
override val pageInfo: PageInfo,
|
||||
override val totalCount: Int
|
||||
) : NodeList() {
|
||||
data class ExtensionEdges(
|
||||
data class ExtensionEdge(
|
||||
override val cursor: Cursor,
|
||||
override val node: ExtensionType
|
||||
) : Edges()
|
||||
) : Edge()
|
||||
|
||||
companion object {
|
||||
fun List<ExtensionType>.toNodeList(): ExtensionNodeList {
|
||||
return ExtensionNodeList(
|
||||
nodes = this,
|
||||
edges = ExtensionEdges(
|
||||
cursor = Cursor(lastIndex.toString()),
|
||||
node = last()
|
||||
),
|
||||
edges = getEdges(),
|
||||
pageInfo = PageInfo(
|
||||
hasNextPage = false,
|
||||
hasPreviousPage = false,
|
||||
@@ -80,5 +77,19 @@ data class ExtensionNodeList(
|
||||
totalCount = size
|
||||
)
|
||||
}
|
||||
|
||||
private fun List<ExtensionType>.getEdges(): List<ExtensionEdge> {
|
||||
if (isEmpty()) return emptyList()
|
||||
return listOf(
|
||||
ExtensionEdge(
|
||||
cursor = Cursor("0"),
|
||||
node = first()
|
||||
),
|
||||
ExtensionEdge(
|
||||
cursor = Cursor(lastIndex.toString()),
|
||||
node = last()
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,7 +11,7 @@ import com.expediagroup.graphql.server.extensions.getValueFromDataLoader
|
||||
import graphql.schema.DataFetchingEnvironment
|
||||
import org.jetbrains.exposed.sql.ResultRow
|
||||
import suwayomi.tachidesk.graphql.server.primitives.Cursor
|
||||
import suwayomi.tachidesk.graphql.server.primitives.Edges
|
||||
import suwayomi.tachidesk.graphql.server.primitives.Edge
|
||||
import suwayomi.tachidesk.graphql.server.primitives.Node
|
||||
import suwayomi.tachidesk.graphql.server.primitives.NodeList
|
||||
import suwayomi.tachidesk.graphql.server.primitives.PageInfo
|
||||
@@ -108,23 +108,20 @@ class MangaType(
|
||||
|
||||
data class MangaNodeList(
|
||||
override val nodes: List<MangaType>,
|
||||
override val edges: MangaEdges,
|
||||
override val edges: List<MangaEdge>,
|
||||
override val pageInfo: PageInfo,
|
||||
override val totalCount: Int
|
||||
) : NodeList() {
|
||||
data class MangaEdges(
|
||||
data class MangaEdge(
|
||||
override val cursor: Cursor,
|
||||
override val node: MangaType
|
||||
) : Edges()
|
||||
) : Edge()
|
||||
|
||||
companion object {
|
||||
fun List<MangaType>.toNodeList(): MangaNodeList {
|
||||
return MangaNodeList(
|
||||
nodes = this,
|
||||
edges = MangaEdges(
|
||||
cursor = Cursor(lastIndex.toString()),
|
||||
node = last()
|
||||
),
|
||||
edges = getEdges(),
|
||||
pageInfo = PageInfo(
|
||||
hasNextPage = false,
|
||||
hasPreviousPage = false,
|
||||
@@ -134,5 +131,19 @@ data class MangaNodeList(
|
||||
totalCount = size
|
||||
)
|
||||
}
|
||||
|
||||
private fun List<MangaType>.getEdges(): List<MangaEdge> {
|
||||
if (isEmpty()) return emptyList()
|
||||
return listOf(
|
||||
MangaEdge(
|
||||
cursor = Cursor("0"),
|
||||
node = first()
|
||||
),
|
||||
MangaEdge(
|
||||
cursor = Cursor(lastIndex.toString()),
|
||||
node = last()
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@ import com.expediagroup.graphql.generator.annotations.GraphQLIgnore
|
||||
import org.jetbrains.exposed.sql.ResultRow
|
||||
import suwayomi.tachidesk.global.model.table.GlobalMetaTable
|
||||
import suwayomi.tachidesk.graphql.server.primitives.Cursor
|
||||
import suwayomi.tachidesk.graphql.server.primitives.Edges
|
||||
import suwayomi.tachidesk.graphql.server.primitives.Edge
|
||||
import suwayomi.tachidesk.graphql.server.primitives.Node
|
||||
import suwayomi.tachidesk.graphql.server.primitives.NodeList
|
||||
import suwayomi.tachidesk.graphql.server.primitives.PageInfo
|
||||
@@ -37,23 +37,20 @@ class GlobalMetaItem(
|
||||
|
||||
data class MetaNodeList(
|
||||
override val nodes: List<MetaItem>,
|
||||
override val edges: MetaEdges,
|
||||
override val edges: List<MetaEdge>,
|
||||
override val pageInfo: PageInfo,
|
||||
override val totalCount: Int
|
||||
) : NodeList() {
|
||||
data class MetaEdges(
|
||||
data class MetaEdge(
|
||||
override val cursor: Cursor,
|
||||
override val node: MetaItem
|
||||
) : Edges()
|
||||
) : Edge()
|
||||
|
||||
companion object {
|
||||
fun List<MetaItem>.toNodeList(): MetaNodeList {
|
||||
return MetaNodeList(
|
||||
nodes = this,
|
||||
edges = MetaEdges(
|
||||
cursor = Cursor(lastIndex.toString()),
|
||||
node = last()
|
||||
),
|
||||
edges = getEdges(),
|
||||
pageInfo = PageInfo(
|
||||
hasNextPage = false,
|
||||
hasPreviousPage = false,
|
||||
@@ -63,5 +60,19 @@ data class MetaNodeList(
|
||||
totalCount = size
|
||||
)
|
||||
}
|
||||
|
||||
private fun List<MetaItem>.getEdges(): List<MetaEdge> {
|
||||
if (isEmpty()) return emptyList()
|
||||
return listOf(
|
||||
MetaEdge(
|
||||
cursor = Cursor("0"),
|
||||
node = first()
|
||||
),
|
||||
MetaEdge(
|
||||
cursor = Cursor(lastIndex.toString()),
|
||||
node = last()
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,7 +14,7 @@ import graphql.schema.DataFetchingEnvironment
|
||||
import org.jetbrains.exposed.sql.ResultRow
|
||||
import org.jetbrains.exposed.sql.select
|
||||
import suwayomi.tachidesk.graphql.server.primitives.Cursor
|
||||
import suwayomi.tachidesk.graphql.server.primitives.Edges
|
||||
import suwayomi.tachidesk.graphql.server.primitives.Edge
|
||||
import suwayomi.tachidesk.graphql.server.primitives.Node
|
||||
import suwayomi.tachidesk.graphql.server.primitives.NodeList
|
||||
import suwayomi.tachidesk.graphql.server.primitives.PageInfo
|
||||
@@ -83,23 +83,20 @@ fun SourceType(row: ResultRow): SourceType? {
|
||||
|
||||
data class SourceNodeList(
|
||||
override val nodes: List<SourceType>,
|
||||
override val edges: SourceEdges,
|
||||
override val edges: List<SourceEdge>,
|
||||
override val pageInfo: PageInfo,
|
||||
override val totalCount: Int
|
||||
) : NodeList() {
|
||||
data class SourceEdges(
|
||||
data class SourceEdge(
|
||||
override val cursor: Cursor,
|
||||
override val node: SourceType
|
||||
) : Edges()
|
||||
) : Edge()
|
||||
|
||||
companion object {
|
||||
fun List<SourceType>.toNodeList(): SourceNodeList {
|
||||
return SourceNodeList(
|
||||
nodes = this,
|
||||
edges = SourceEdges(
|
||||
cursor = Cursor(lastIndex.toString()),
|
||||
node = last()
|
||||
),
|
||||
edges = getEdges(),
|
||||
pageInfo = PageInfo(
|
||||
hasNextPage = false,
|
||||
hasPreviousPage = false,
|
||||
@@ -109,5 +106,19 @@ data class SourceNodeList(
|
||||
totalCount = size
|
||||
)
|
||||
}
|
||||
|
||||
private fun List<SourceType>.getEdges(): List<SourceEdge> {
|
||||
if (isEmpty()) return emptyList()
|
||||
return listOf(
|
||||
SourceEdge(
|
||||
cursor = Cursor("0"),
|
||||
node = first()
|
||||
),
|
||||
SourceEdge(
|
||||
cursor = Cursor(lastIndex.toString()),
|
||||
node = last()
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@ package suwayomi.tachidesk.graphql.types
|
||||
|
||||
import org.jetbrains.exposed.sql.ResultRow
|
||||
import suwayomi.tachidesk.graphql.server.primitives.Cursor
|
||||
import suwayomi.tachidesk.graphql.server.primitives.Edges
|
||||
import suwayomi.tachidesk.graphql.server.primitives.Edge
|
||||
import suwayomi.tachidesk.graphql.server.primitives.Node
|
||||
import suwayomi.tachidesk.graphql.server.primitives.NodeList
|
||||
import suwayomi.tachidesk.graphql.server.primitives.PageInfo
|
||||
@@ -26,23 +26,20 @@ class UpdatesType(
|
||||
|
||||
data class UpdatesNodeList(
|
||||
override val nodes: List<UpdatesType>,
|
||||
override val edges: UpdatesEdges,
|
||||
override val edges: List<UpdatesEdge>,
|
||||
override val pageInfo: PageInfo,
|
||||
override val totalCount: Int
|
||||
) : NodeList() {
|
||||
data class UpdatesEdges(
|
||||
data class UpdatesEdge(
|
||||
override val cursor: Cursor,
|
||||
override val node: UpdatesType
|
||||
) : Edges()
|
||||
) : Edge()
|
||||
|
||||
companion object {
|
||||
fun List<UpdatesType>.toNodeList(): UpdatesNodeList {
|
||||
return UpdatesNodeList(
|
||||
nodes = this,
|
||||
edges = UpdatesEdges(
|
||||
cursor = Cursor(lastIndex.toString()),
|
||||
node = last()
|
||||
),
|
||||
edges = getEdges(),
|
||||
pageInfo = PageInfo(
|
||||
hasNextPage = false,
|
||||
hasPreviousPage = false,
|
||||
@@ -52,5 +49,19 @@ data class UpdatesNodeList(
|
||||
totalCount = size
|
||||
)
|
||||
}
|
||||
|
||||
private fun List<UpdatesType>.getEdges(): List<UpdatesEdge> {
|
||||
if (isEmpty()) return emptyList()
|
||||
return listOf(
|
||||
UpdatesEdge(
|
||||
cursor = Cursor("0"),
|
||||
node = first()
|
||||
),
|
||||
UpdatesEdge(
|
||||
cursor = Cursor(lastIndex.toString()),
|
||||
node = last()
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user