from fastql import Field, ID, Info, Query, Schema, Type
from fastql.relay import (
Connection, Node, connection_from_list, register_node, resolve_node,
to_global_id,
)
@Type(interfaces=[Node])
class User:
inner_id: int
@Field
def id(self) -> ID:
return to_global_id("User", self.inner_id)
register_node("User", lambda inner_id, info=None: USERS.get(int(inner_id)))
@Query
class Queries:
@Field
def node(self, id: ID, info: Info) -> "Node | None":
return resolve_node(id, info)
@Field
def users(self, first: int | None = None, after: str | None = None) -> Connection[User]:
return connection_from_list(list(USERS.values()), first=first, after=after)