Thank you for bringing this up! I hope popular web frameworks start adopting dataclasses for representing their models and use type safe method chaining APIs to interface with business logic.


On Fri, Apr 23, 2021 at 10:18 AM Tin Tvrtković <tinchester@gmail.com> wrote:

```
from dataclasses import fields

user_projection: tuple[str] = await fetch_projection(User, id=1, fields(User)[1])
```

 
In fquery [1], this would be spelled as:

UserQuery([1]).project(["username"]).to_json().send()

My request is to consider that some of the implementations may not be presenting a flat result set. For example this query:

       resp = (
            UserQuery([1])
            .edge("friends")
            .edge("friends")
            .project(["name", ":id"])
            .take(3)
            .to_json()
            .send()
        )

produces:

https://github.com/adsharma/fquery/blob/main/tests/test_data/test_data_two_hop_project.txt

Without the "to_json()" it produces a graph of similarly nested python objects.

Type checkers that can understand these queries and provide type safety to consumers of the result set would be a great reason for web frameworks to adopt this vs the status quo where the internals of a relational database are exposed via a python API.

 -Arun

[1] https://github.com/adsharma/fquery/