List view
In order to reduce the api surface we are going to introduce `Schema` class and move all validation/parsing/merging/execution/denormalizing to one place. This must simplify inegration of hiku in a projects, reduce testing complexity and make it to be much easier to make changes internally and not breaking user's code.
No due date•3/5 issues closedCurrently hiku graph definition is declarative based: ```python graph = Graph([ Node('User', [ Field('id', Interger, user_fields) ]), Root([ Link('user', Optional[TypeRef['User']], link_user, requires=None) ]) ]) ``` Problems with this approach: - strings, strings everywhere - easy to mistype - TypeRef['some_type'] is tedious to write - no go to definitions - no mypy support - but the good part of this is recursive types - can not use Node as class for typing New approach - strawberry-like https://strawberry.rocks/ * All types defined using classes/dataclasses * Enables annotation use and mypy support * No strings What it can look like: ```python @hiku.type class User: id: int = hiku.field(resolver=user_fields) @hiku.query class Query: user: User | None = hiku.link(resolver=link_user) graph = Graph(query=Query) ```
No due date•0/2 issues closed