Recursive types #181

This commit is contained in:
2025-09-28 21:53:15 +02:00
parent 39d06dfe48
commit 39351a5eb9
41 changed files with 281 additions and 134 deletions

View File

@@ -1,12 +1,12 @@
from cpl.graphql.schema.filter.filter import Filter
from cpl.graphql.schema.graph_type import GraphType
from cpl.graphql.schema.db_model_graph_type import DbModelGraphType
from cpl.graphql.schema.filter.db_model_filter import DbModelFilter
from cpl.graphql.schema.sort.sort import Sort
from cpl.graphql.schema.sort.sort_order import SortOrder
from model.author import Author
class AuthorFilter(Filter[Author]):
class AuthorFilter(DbModelFilter[Author]):
def __init__(self):
Filter.__init__(self)
DbModelFilter.__init__(self, public=True)
self.int_field("id")
self.string_field("firstName")
self.string_field("lastName")
@@ -18,10 +18,10 @@ class AuthorSort(Sort[Author]):
self.field("firstName", SortOrder)
self.field("lastName", SortOrder)
class AuthorGraphType(GraphType[Author]):
class AuthorGraphType(DbModelGraphType[Author]):
def __init__(self):
GraphType.__init__(self)
DbModelGraphType.__init__(self, public=True)
self.int_field(
"id",

View File

@@ -1,6 +1,6 @@
from cpl.graphql.query_context import QueryContext
from cpl.graphql.schema.filter.filter import Filter
from cpl.graphql.schema.graph_type import GraphType
from cpl.graphql.schema.db_model_graph_type import DbModelGraphType
from cpl.graphql.schema.filter.db_model_filter import DbModelFilter
from cpl.graphql.schema.input import Input
from cpl.graphql.schema.mutation import Mutation
from cpl.graphql.schema.sort.sort import Sort
@@ -11,9 +11,9 @@ from model.post import Post
from model.post_dao import PostDao
class PostFilter(Filter[Post]):
class PostFilter(DbModelFilter[Post]):
def __init__(self):
Filter.__init__(self)
DbModelFilter.__init__(self, public=True)
self.int_field("id")
self.filter_field("author", AuthorFilter)
self.string_field("title")
@@ -26,15 +26,15 @@ class PostSort(Sort[Post]):
self.field("title", SortOrder)
self.field("content", SortOrder)
class PostGraphType(GraphType[Post]):
class PostGraphType(DbModelGraphType[Post]):
def __init__(self, authors: AuthorDao):
GraphType.__init__(self)
DbModelGraphType.__init__(self, public=True)
self.int_field(
"id",
resolver=lambda root: root.id,
).with_public(True)
).with_optional().with_public(True)
async def _a(root: Post):
return await authors.get_by_id(root.author_id)