Changeset View
Changeset View
Standalone View
Standalone View
swh/graphql/resolvers/resolvers.py
Show All 33 Lines | |||||
release: ObjectType = ObjectType("Release") | release: ObjectType = ObjectType("Release") | ||||
directory: ObjectType = ObjectType("Directory") | directory: ObjectType = ObjectType("Directory") | ||||
directory_entry: ObjectType = ObjectType("DirectoryEntry") | directory_entry: ObjectType = ObjectType("DirectoryEntry") | ||||
binary_string: ObjectType = ObjectType("BinaryString") | binary_string: ObjectType = ObjectType("BinaryString") | ||||
branch_target: UnionType = UnionType("BranchTarget") | branch_target: UnionType = UnionType("BranchTarget") | ||||
release_target: UnionType = UnionType("ReleaseTarget") | release_target: UnionType = UnionType("ReleaseTarget") | ||||
directory_entry_target: UnionType = UnionType("DirectoryEntryTarget") | directory_entry_target: UnionType = UnionType("DirectoryEntryTarget") | ||||
search_result_target: UnionType = UnionType("SearchResultTarget") | |||||
# Node resolvers | # Node resolvers | ||||
# A node resolver should return an instance of BaseNode | # A node resolver should return an instance of BaseNode | ||||
@query.field("origin") | @query.field("origin") | ||||
def origin_resolver(obj: None, info: GraphQLResolveInfo, **kw) -> rs.origin.OriginNode: | def origin_resolver(obj: None, info: GraphQLResolveInfo, **kw) -> rs.origin.OriginNode: | ||||
""" """ | """ """ | ||||
▲ Show 20 Lines • Show All 184 Lines • ▼ Show 20 Lines | |||||
@directory.field("entries") | @directory.field("entries") | ||||
def directory_entry_resolver( | def directory_entry_resolver( | ||||
obj, info: GraphQLResolveInfo, **kw | obj, info: GraphQLResolveInfo, **kw | ||||
) -> rs.directory_entry.DirectoryEntryConnection: | ) -> rs.directory_entry.DirectoryEntryConnection: | ||||
resolver = get_connection_resolver("directory-entries") | resolver = get_connection_resolver("directory-entries") | ||||
return resolver(obj, info, **kw) | return resolver(obj, info, **kw) | ||||
@query.field("search") | |||||
def search_resolver( | |||||
obj, info: GraphQLResolveInfo, **kw | |||||
) -> rs.search.SearchResultConnection: | |||||
resolver = get_connection_resolver("search") | |||||
return resolver(obj, info, **kw) | |||||
# Any other type of resolver | # Any other type of resolver | ||||
@release_target.type_resolver | @release_target.type_resolver | ||||
@directory_entry_target.type_resolver | @directory_entry_target.type_resolver | ||||
@branch_target.type_resolver | @branch_target.type_resolver | ||||
@search_result_target.type_resolver | |||||
def union_resolver(obj, *_) -> str: | def union_resolver(obj, *_) -> str: | ||||
""" | """ | ||||
Generic resolver for all the union types | Generic resolver for all the union types | ||||
""" | """ | ||||
return obj.is_type_of() | return obj.is_type_of() | ||||
@binary_string.field("text") | @binary_string.field("text") | ||||
def binary_string_text_resolver(obj, *args, **kw): | def binary_string_text_resolver(obj, *args, **kw): | ||||
return obj.decode(utils.ENCODING, "replace") | return obj.decode(utils.ENCODING, "replace") | ||||
@binary_string.field("base64") | @binary_string.field("base64") | ||||
def binary_string_base64_resolver(obj, *args, **kw): | def binary_string_base64_resolver(obj, *args, **kw): | ||||
return utils.get_b64_string(obj) | return utils.get_b64_string(obj) |