N + 1 Problem bei der Verwendung von "Dataloaders" von gqlgen, einer GraphQL-Bibliothek von Golang. (Wenn Sie googeln, wird ein Artikel angezeigt).
$ cat /etc/os-release
NAME="Ubuntu"
VERSION="18.04.5 LTS (Bionic Beaver)"
$ go version
go version go1.15.2 linux/amd64
v0.13.0
IDE - Goland
GoLand 2020.2.3
Build #GO-202.7319.61, built on September 16, 2020
https://github.com/sky0621/study-gqlgen/tree/v0.4/dataloaders
https://github.com/sky0621/study-gqlgen/tree/v0.5/dataloaders
Zum Beispiel, wenn Sie das folgende GraphQL-Schema haben
schema.graphqls
type User {
id: ID!
name: String!
todos: [Todo]
}
type Todo {
id: ID!
task: String!
user: User!
}
type Query {
users: [User!]!
todos: [Todo!]!
}
Für "Benutzer" vom Typ "Todo" und "Aufgaben" vom Typ "Benutzer" ist ein dedizierter Resolver vorzubereiten. (Weil die Logik umgeleitet werden kann, wenn eine Abfrage vorbereitet wird, um einen oder "todo" oder "user" zu erhalten, der der zukünftigen Bedingung entspricht.)
user.go
type User struct {
ID int64 `json:"id"`
Name string `json:"name"`
}
todo.go
type Todo struct {
ID int64 `json:"id"`
Task string `json:"task"`
UserID int64 `json:"user_id" db:"user_id"`
}
Ein Benutzer hat jeweils zwei Aufgaben
user
Tabelletodo
TischGenerieren Sie vorerst einen DB-Handler und starten Sie den GraphQL-Server. Verwenden Sie SQLite für DB.
main.go(Die import-Anweisung wird weggelassen)
func main() {
http.Handle("/", playground.Handler("GraphQL playground", "/query"))
http.Handle("/query", handler.NewDefaultServer(
generated.NewExecutableSchema(
generated.Config{
Resolvers: &graph.Resolver{
DB: sqlx.MustOpen("sqlite3", "./data.db"),
},
},
),
))
log.Fatal(http.ListenAndServe(":8080", nil))
}
go:schema.resolvers.go
package graph
import (
"context"
"errors"
"fmt"
"log"
"github.com/sky0621/study-gqlgen/dataloaders/graph/generated"
"github.com/sky0621/study-gqlgen/dataloaders/graph/model"
)
// users: [User!]!Entspricht
func (r *queryResolver) Users(ctx context.Context) ([]*model.User, error) {
~ ~ Erklärung später ~ ~
}
// todos: [Todo!]!Entspricht
func (r *queryResolver) Todos(ctx context.Context) ([]*model.Todo, error) {
~ ~ Erklärung später ~ ~
}
//Geben Sie User todos ein: [Todo]Zur Akquisition
func (r *userResolver) Todos(ctx context.Context, obj *model.User) ([]*model.Todo, error) {
~ ~ Erklärung später ~ ~
}
//Geben Sie Todo user ein: User!Zur Akquisition
func (r *todoResolver) User(ctx context.Context, obj *model.Todo) (*model.User, error) {
~ ~ Erklärung später ~ ~
}
// Query returns generated.QueryResolver implementation.
func (r *Resolver) Query() generated.QueryResolver { return &queryResolver{r} }
// User returns generated.UserResolver implementation.
func (r *Resolver) User() generated.UserResolver { return &userResolver{r} }
// Todo returns generated.TodoResolver implementation.
func (r *Resolver) Todo() generated.TodoResolver { return &todoResolver{r} }
type queryResolver struct{ *Resolver }
type userResolver struct{ *Resolver }
type todoResolver struct{ *Resolver }
users: [User!]! Holen Sie sich einfach alle Benutzer.
func (r *queryResolver) Users(ctx context.Context) ([]*model.User, error) {
var users []*model.User
sql := "SELECT * FROM user"
log.Print(sql)
if err := r.DB.SelectContext(ctx, &users, sql); err != nil {
log.Print(err)
return nil, err
}
return users, nil
}
todos: [Todo!]! Holen Sie sich einfach alle Aufgaben.
func (r *queryResolver) Todos(ctx context.Context) ([]*model.Todo, error) {
var todos []*model.Todo
sql := "SELECT * FROM todo"
log.Print(sql)
if err := r.DB.SelectContext(ctx, &todos, sql); err != nil {
log.Print(err)
return nil, err
}
return todos, nil
}
1 Abfrage, die zusätzlich ausgeführt wird, wenn die Benutzerinformationen erfasst werden. Da es zusätzlich für jeden Benutzer ausgeführt wird, dh wenn die Informationen von 5 Benutzern erfasst werden, wird die SQL +5-mal ausgegeben.
func (r *userResolver) Todos(ctx context.Context, obj *model.User) ([]*model.Todo, error) {
if obj == nil {
return []*model.Todo{}, nil
}
var todos []*model.Todo
sql := fmt.Sprintf("SELECT * FROM todo WHERE user_id = %d", obj.ID)
log.Print(sql)
if err := r.DB.SelectContext(ctx, &todos, sql); err != nil {
log.Print(err)
return nil, err
}
return todos, nil
}
Eine Abfrage, die zusätzlich ausgeführt wird, wenn 1ToDo-Informationen erfasst werden. Da es zusätzlich für jedes 1ToDo ausgeführt wird, dh wenn die Informationen von 4ToDo erfasst werden, wird die SQL +4-mal ausgegeben.
func (r *todoResolver) User(ctx context.Context, obj *model.Todo) (*model.User, error) {
if obj == nil {
return nil, nil
}
var users []*model.User
sql := fmt.Sprintf("SELECT * FROM user WHERE id = %d", obj.UserID)
log.Print(sql)
if err := r.DB.SelectContext(ctx, &users, sql); err != nil {
log.Print(err)
return nil, err
}
if len(users) != 1 {
log.Print("users length is not 1")
return nil, errors.New("err")
}
return users[0], nil
}
Zeigen Sie die Ergebnisse und die Anzahl der Abfragen für jede Benutzerabfrage und jedes Aufgabenausführungsmuster in GraphQL an
2020/10/22 00:07:01 SELECT * FROM user
query users {
users {
id
name
todos {
id
task
}
}
}
{ "data": { "users": [ { "id": 1, "name": "Sato", "todos": [ { "id": 1, "Aufgabe": "Was tun 1" }, { "id": 2, "Aufgabe": "Was tun 2" }, { "id": 3, "task": "To do 3" }, { "id": 4, "Aufgabe": "Was tun 4" } ] }, { "id": 2, "name": "Suzuki", "todos": [ { "id": 5, "Aufgabe": "Was zu tun ist 5" }, { "id": 6, "Aufgabe": "Was tun 6" }, { "id": 7, "Aufgabe": "Was tun 7" }, { "id": 8, "task": "To do 8" } ] }, { "id": 3, "name": "Takahashi", "todos": [ { "id": 9, "Aufgabe": "Was zu tun ist 9" }, { "id": 10, "Aufgabe": "10 zu tun" }, { "id": 11, "Aufgabe": "Was tun 11" }, { "id": 12, "task": "To do 12" } ] }, { "id": 4, "name": "Tanaka", "todos": [ { "id": 13, "Aufgabe": "Was tun 13?" }, { "id": 14, "Aufgabe": "14 zu tun" }, { "id": 15, "Aufgabe": "15 zu tun" }, { "id": 16, "Aufgabe": "16 zu tun" } ] }, { "id": 5, "name": "Ito", "todos": [ { "id": 17, "Aufgabe": "Was zu tun ist 17" }, { "id": 18, "Aufgabe": "Was tun? 18" }, { "id": 19, "Aufgabe": "Zu tun 19" }, { "id": 20, "Aufgabe": "20 zu tun" } ] } ] } }
2020/10/22 00:08:33 SELECT * FROM user
2020/10/22 00:08:33 SELECT * FROM todo WHERE user_id = 5
2020/10/22 00:08:33 SELECT * FROM todo WHERE user_id = 1
2020/10/22 00:08:33 SELECT * FROM todo WHERE user_id = 2
2020/10/22 00:08:33 SELECT * FROM todo WHERE user_id = 3
2020/10/22 00:08:33 SELECT * FROM todo WHERE user_id = 4
Nach dem Erfassen aller Benutzer wird für jeden Benutzer SQL zum Erfassen von ToDo ausgegeben. Infolgedessen wird SQL insgesamt sechsmal ausgegeben.
query todos {
todos {
id
task
}
}
{ "data": { "todos": [ { "id": 1, "Aufgabe": "Was tun 1" }, { "id": 2, "Aufgabe": "Was tun 2" }, { "id": 3, "task": "To do 3" }, { "id": 4, "Aufgabe": "Was tun 4" }, { "id": 5, "Aufgabe": "Was zu tun ist 5" }, { "id": 6, "Aufgabe": "Was tun 6" }, { "id": 7, "Aufgabe": "Was tun 7" }, { "id": 8, "task": "To do 8" }, { "id": 9, "Aufgabe": "Was zu tun ist 9" }, { "id": 10, "Aufgabe": "10 zu tun" }, { "id": 11, "Aufgabe": "Was tun 11" }, { "id": 12, "task": "To do 12" }, { "id": 13, "Aufgabe": "Was tun 13?" }, { "id": 14, "Aufgabe": "14 zu tun" }, { "id": 15, "Aufgabe": "15 zu tun" }, { "id": 16, "Aufgabe": "16 zu tun" }, { "id": 17, "Aufgabe": "Was zu tun ist 17" }, { "id": 18, "Aufgabe": "Was tun? 18" }, { "id": 19, "Aufgabe": "Zu tun 19" }, { "id": 20, "Aufgabe": "20 zu tun" } ] } }
2020/10/22 00:21:25 SELECT * FROM todo
todos
(mit Benutzer
Anfrage)query todos {
todos {
id
task
user {
id
name
}
}
}
{ "data": { "todos": [ { "id": 1, "Aufgabe": "Was tun 1", "user": { "id": 1, "name": "Sato" } }, { "id": 2, "Aufgabe": "Was tun 2", "user": { "id": 1, "name": "Sato" } }, { "id": 3, "Aufgabe": "Was tun 3", "user": { "id": 1, "name": "Sato" } }, { "id": 4, "Aufgabe": "Was tun 4", "user": { "id": 1, "name": "Sato" } }, { "id": 5, "Aufgabe": "Was tun 5", "user": { "id": 2, "name": "Suzuki" } }, { "id": 6, "Aufgabe": "Was tun 6", "user": { "id": 2, "name": "Suzuki" } }, { "id": 7, "Aufgabe": "Was tun 7", "user": { "id": 2, "name": "Suzuki" } }, { "id": 8, "Aufgabe": "Was tun 8", "user": { "id": 2, "name": "Suzuki" } }, { "id": 9, "Aufgabe": "Was tun 9", "user": { "id": 3, "name": "Takahashi" } }, { "id": 10, "Aufgabe": "10 tun", "user": { "id": 3, "name": "Takahashi" } }, { "id": 11, "Aufgabe": "Was tun 11", "user": { "id": 3, "name": "Takahashi" } }, { "id": 12, "Aufgabe": "Was tun 12", "user": { "id": 3, "name": "Takahashi" } }, { "id": 13, "Aufgabe": "Was tun 13", "user": { "id": 4, "name": "Tanaka" } }, { "id": 14, "Aufgabe": "14 zu tun", "user": { "id": 4, "name": "Tanaka" } }, { "id": 15, "Aufgabe": "15 zu tun", "user": { "id": 4, "name": "Tanaka" } }, { "id": 16, "Aufgabe": "16 zu tun", "user": { "id": 4, "name": "Tanaka" } }, { "id": 17, "Aufgabe": "Was tun 17", "user": { "id": 5, "name": "Ito" } }, { "id": 18, "Aufgabe": "Was zu tun ist 18", "user": { "id": 5, "name": "Ito" } }, { "id": 19, "Aufgabe": "Was tun 19", "user": { "id": 5, "name": "Ito" } }, { "id": 20, "Aufgabe": "20 zu tun", "user": { "id": 5, "name": "Ito" } } ] } }
2020/10/22 00:24:44 SELECT * FROM todo
2020/10/22 00:24:44 SELECT * FROM user WHERE id = 5
2020/10/22 00:24:44 SELECT * FROM user WHERE id = 3
2020/10/22 00:24:44 SELECT * FROM user WHERE id = 1
2020/10/22 00:24:44 SELECT * FROM user WHERE id = 1
2020/10/22 00:24:44 SELECT * FROM user WHERE id = 1
2020/10/22 00:24:44 SELECT * FROM user WHERE id = 1
2020/10/22 00:24:44 SELECT * FROM user WHERE id = 2
2020/10/22 00:24:44 SELECT * FROM user WHERE id = 2
2020/10/22 00:24:44 SELECT * FROM user WHERE id = 2
2020/10/22 00:24:44 SELECT * FROM user WHERE id = 2
2020/10/22 00:24:44 SELECT * FROM user WHERE id = 4
2020/10/22 00:24:44 SELECT * FROM user WHERE id = 3
2020/10/22 00:24:44 SELECT * FROM user WHERE id = 3
2020/10/22 00:24:44 SELECT * FROM user WHERE id = 3
2020/10/22 00:24:44 SELECT * FROM user WHERE id = 4
2020/10/22 00:24:44 SELECT * FROM user WHERE id = 5
2020/10/22 00:24:44 SELECT * FROM user WHERE id = 4
2020/10/22 00:24:44 SELECT * FROM user WHERE id = 5
2020/10/22 00:24:44 SELECT * FROM user WHERE id = 4
2020/10/22 00:24:44 SELECT * FROM user WHERE id = 5
Nach dem Erwerb aller ToDos wird für jedes ToDo SQL zum Erfassen von Benutzern ausgegeben. Infolgedessen wird SQL insgesamt 21 Mal ausgegeben.
In diesem GraphQL-Schema haben "ToDo" und "User" eine kreisförmige Referenzstruktur, die aufeinander verweist. Wenn Sie dies möchten, können Sie daher auch die folgende Abfrage senden.
query todos {
todos {
id
task
user {
id
name
todos {
id
task
user {
id
name
todos {
id
task
user {
id
name
todos {
id
task
}
}
}
}
}
}
}
}
{ "data": { "todos": [ { "id": 1, "Aufgabe": "Was tun 1", "user": { "id": 1, "name": "Sato", "todos": [ { "id": 1, "Aufgabe": "Was tun 1", "user": { "id": 1, "name": "Sato", "todos": [ { "id": 1, "Aufgabe": "Was tun 1", "user": { "id": 1, "name": "Sato", "todos": [ { "id": 1, "Aufgabe": "Was tun 1" }, { "id": 2, "Aufgabe": "Was tun 2" }, { "id": 3, "task": "To do 3" }, { "id": 4, "Aufgabe": "Was tun 4" } ] } }, { "id": 2, "Aufgabe": "Was tun 2", "user": { "id": 1, "name": "Sato", "todos": [ { "id": 1, "Aufgabe": "Was tun 1" }, { "id": 2, "Aufgabe": "Was tun 2" }, { "id": 3, "task": "To do 3" }, { "id": 4, "Aufgabe": "Was tun 4" } ] } }, { "id": 3, "Aufgabe": "Was tun 3", "user": { "id": 1, "name": "Sato", "todos": [ { "id": 1, "Aufgabe": "Was tun 1" }, { "id": 2, "Aufgabe": "Was tun 2" }, { "id": 3, "task": "To do 3" }, { "id": 4, "Aufgabe": "Was tun 4" } ] } }, { "id": 4, "Aufgabe": "Was tun 4", "user": { "id": 1, "name": "Sato", "todos": [ { "id": 1, "Aufgabe": "Was tun 1" }, { "id": 2, "Aufgabe": "Was tun 2" }, { "id": 3, "task": "To do 3" }, { "id": 4, "Aufgabe": "Was tun 4" } ] } } ] } }, { "id": 2, "Aufgabe": "Was tun 2", "user": { "id": 1, "name": "Sato", "todos": [ { "id": 1, "Aufgabe": "Was tun 1", "user": { "id": 1, "name": "Sato", "todos": [ { "id": 1, "Aufgabe": "Was tun 1" }, { "id": 2, "Aufgabe": "Was tun 2" }, { "id": 3, "task": "To do 3" }, { "id": 4, "Aufgabe": "Was tun 4" } ] } }, { "id": 2, "Aufgabe": "Was tun 2", "user": { "id": 1, "name": "Sato", "todos": [ { "id": 1, "Aufgabe": "Was tun 1" }, { "id": 2, "Aufgabe": "Was tun 2" }, { "id": 3, "task": "To do 3" }, { "id": 4, "Aufgabe": "Was tun 4" } ] } }, { "id": 3, "Aufgabe": "Was tun 3", "user": { "id": 1, "name": "Sato", "todos": [ { "id": 1, "Aufgabe": "Was tun 1" }, { "id": 2, "Aufgabe": "Was tun 2" }, { "id": 3, "task": "To do 3" }, { "id": 4, "Aufgabe": "Was tun 4" } ] } }, { "id": 4, "Aufgabe": "Was tun 4", "user": { "id": 1, "name": "Sato", "todos": [ { "id": 1, "Aufgabe": "Was tun 1" }, { "id": 2, "Aufgabe": "Was tun 2" }, { "id": 3, "task": "To do 3" }, { "id": 4, "Aufgabe": "Was tun 4" } ] } } ] } }, { "id": 3, "Aufgabe": "Was tun 3", "user": { "id": 1, "name": "Sato", "todos": [ { "id": 1, "Aufgabe": "Was tun 1", "user": { "id": 1, "name": "Sato", "todos": [ { "id": 1, "Aufgabe": "Was tun 1" }, { "id": 2, "Aufgabe": "Was tun 2" }, { "id": 3, "task": "To do 3" }, { "id": 4, "Aufgabe": "Was tun 4" } ] } }, { "id": 2, "Aufgabe": "Was tun 2", "user": { "id": 1, "name": "Sato", "todos": [ { "id": 1, "Aufgabe": "Was tun 1" }, { "id": 2, "Aufgabe": "Was tun 2" }, { "id": 3, "task": "To do 3" }, { "id": 4, "Aufgabe": "Was tun 4" } ] } }, { "id": 3, "Aufgabe": "Was tun 3", "user": { "id": 1, "name": "Sato", "todos": [ { "id": 1, "Aufgabe": "Was tun 1" }, { "id": 2, "Aufgabe": "Was tun 2" }, { "id": 3, "task": "To do 3" }, { "id": 4, "Aufgabe": "Was tun 4" } ] } }, { "id": 4, "Aufgabe": "Was tun 4", "user": { "id": 1, "name": "Sato", "todos": [ { "id": 1, "Aufgabe": "Was tun 1" }, { "id": 2, "Aufgabe": "Was tun 2" }, { "id": 3, "task": "To do 3" }, { "id": 4, "Aufgabe": "Was tun 4" } ] } } ] } }, { "id": 4, "Aufgabe": "Was tun 4", "user": { "id": 1, "name": "Sato", "todos": [ { "id": 1, "Aufgabe": "Was tun 1", "user": { "id": 1, "name": "Sato", "todos": [ { "id": 1, "Aufgabe": "Was tun 1" }, { "id": 2, "Aufgabe": "Was tun 2" }, { "id": 3, "task": "To do 3" }, { "id": 4, "Aufgabe": "Was tun 4" } ] } }, { "id": 2, "Aufgabe": "Was tun 2", "user": { "id": 1, "name": "Sato", "todos": [ { "id": 1, "Aufgabe": "Was tun 1" }, { "id": 2, "Aufgabe": "Was tun 2" }, { "id": 3, "task": "To do 3" }, { "id": 4, "Aufgabe": "Was tun 4" } ] } }, { "id": 3, "Aufgabe": "Was tun 3", "user": { "id": 1, "name": "Sato", "todos": [ { "id": 1, "Aufgabe": "Was tun 1" }, { "id": 2, "Aufgabe": "Was tun 2" }, { "id": 3, "task": "To do 3" }, { "id": 4, "Aufgabe": "Was tun 4" } ] } }, { "id": 4, "Aufgabe": "Was tun 4", "user": { "id": 1, "name": "Sato", "todos": [ { "id": 1, "Aufgabe": "Was tun 1" }, { "id": 2, "Aufgabe": "Was tun 2" }, { "id": 3, "task": "To do 3" }, { "id": 4, "Aufgabe": "Was tun 4" } ] } } ] } } ] } }, { "id": 2, "Aufgabe": "Was tun 2", "user": { "id": 1, "name": "Sato", "todos": [ { "id": 1, "Aufgabe": "Was tun 1", "user": { "id": 1, "name": "Sato", "todos": [ { "id": 1, "Aufgabe": "Was tun 1", "user": { "id": 1, "name": "Sato", "todos": [ { "id": 1, "Aufgabe": "Was tun 1" }, { "id": 2, "Aufgabe": "Was tun 2" }, { "id": 3, "task": "To do 3" }, { "id": 4, "Aufgabe": "Was tun 4" } ] } }, { "id": 2, "Aufgabe": "Was tun 2", "user": { "id": 1, "name": "Sato", "todos": [ { "id": 1, "Aufgabe": "Was tun 1" }, { "id": 2, "Aufgabe": "Was tun 2" }, { "id": 3, "task": "To do 3" }, { "id": 4, "Aufgabe": "Was tun 4" } ] } }, { "id": 3, "Aufgabe": "Was tun 3", "user": { "id": 1, "name": "Sato", "todos": [ { "id": 1, "Aufgabe": "Was tun 1" }, { "id": 2, "Aufgabe": "Was tun 2" }, { "id": 3, "task": "To do 3" }, { "id": 4, "Aufgabe": "Was tun 4" } ] } }, { "id": 4, "Aufgabe": "Was tun 4", "user": { "id": 1, "name": "Sato", "todos": [ { "id": 1, "Aufgabe": "Was tun 1" }, { "id": 2, "Aufgabe": "Was tun 2" }, { "id": 3, "task": "To do 3" }, { "id": 4, "Aufgabe": "Was tun 4" } ] } } ] } }, { "id": 2, "Aufgabe": "Was tun 2", "user": { "id": 1, "name": "Sato", "todos": [ { "id": 1, "Aufgabe": "Was tun 1", "user": { "id": 1, "name": "Sato", "todos": [ { "id": 1, "Aufgabe": "Was tun 1" }, { "id": 2, "Aufgabe": "Was tun 2" }, { "id": 3, "task": "To do 3" }, { "id": 4, "Aufgabe": "Was tun 4" } ] } }, { "id": 2, "Aufgabe": "Was tun 2", "user": { "id": 1, "name": "Sato", "todos": [ { "id": 1, "Aufgabe": "Was tun 1" }, { "id": 2, "Aufgabe": "Was tun 2" }, { "id": 3, "task": "To do 3" }, { "id": 4, "Aufgabe": "Was tun 4" } ] } }, { "id": 3, "Aufgabe": "Was tun 3", "user": { "id": 1, "name": "Sato", "todos": [ { "id": 1, "Aufgabe": "Was tun 1" }, { "id": 2, "Aufgabe": "Was tun 2" }, { "id": 3, "task": "To do 3" }, { "id": 4, "Aufgabe": "Was tun 4" } ] } }, { "id": 4, "Aufgabe": "Was tun 4", "user": { "id": 1, "name": "Sato", "todos": [ { "id": 1, "Aufgabe": "Was tun 1" }, { "id": 2, "Aufgabe": "Was tun 2" }, { "id": 3, "task": "To do 3" }, { "id": 4, "Aufgabe": "Was tun 4" } ] } } ] } }, { "id": 3, "Aufgabe": "Was tun 3", "user": { "id": 1, "name": "Sato", "todos": [ { "id": 1, "Aufgabe": "Was tun 1", "user": { "id": 1, "name": "Sato", "todos": [ { "id": 1, "Aufgabe": "Was tun 1" }, { "id": 2, "Aufgabe": "Was tun 2" }, { "id": 3, "task": "To do 3" }, { "id": 4, "Aufgabe": "Was tun 4" } ] } }, { "id": 2, "Aufgabe": "Was tun 2", "user": { "id": 1, "name": "Sato", "todos": [ { "id": 1, "Aufgabe": "Was tun 1" }, { "id": 2, "Aufgabe": "Was tun 2" }, { "id": 3, "task": "To do 3" }, { "id": 4, "Aufgabe": "Was tun 4" } ] } }, { "id": 3, "Aufgabe": "Was tun 3", "user": { "id": 1, "name": "Sato", "todos": [ { "id": 1, "Aufgabe": "Was tun 1" }, { "id": 2, "Aufgabe": "Was tun 2" }, { "id": 3, "task": "To do 3" }, { "id": 4, "Aufgabe": "Was tun 4" } ] } }, { "id": 4, "Aufgabe": "Was tun 4", "user": { "id": 1, "name": "Sato", "todos": [ { "id": 1, "Aufgabe": "Was tun 1" }, { "id": 2, "Aufgabe": "Was tun 2" }, { "id": 3, "task": "To do 3" }, { "id": 4, "Aufgabe": "Was tun 4" } ] } } ] } }, { "id": 4, "Aufgabe": "Was tun 4", "user": { "id": 1, "name": "Sato", "todos": [ { "id": 1, "Aufgabe": "Was tun 1", "user": { "id": 1, "name": "Sato", "todos": [ { "id": 1, "Aufgabe": "Was tun 1" }, { "id": 2, "Aufgabe": "Was tun 2" }, { "id": 3, "task": "To do 3" }, { "id": 4, "Aufgabe": "Was tun 4" } ] } }, { "id": 2, "Aufgabe": "Was tun 2", "user": { "id": 1, "name": "Sato", "todos": [ { "id": 1, "Aufgabe": "Was tun 1" }, { "id": 2, "Aufgabe": "Was tun 2" }, { "id": 3, "task": "To do 3" }, { "id": 4, "Aufgabe": "Was tun 4" } ] } }, { "id": 3, "Aufgabe": "Was tun 3", "user": { "id": 1, "name": "Sato", "todos": [ { "id": 1, "Aufgabe": "Was tun 1" }, { "id": 2, "Aufgabe": "Was tun 2" }, { "id": 3, "task": "To do 3" }, { "id": 4, "Aufgabe": "Was tun 4" } ] } }, { "id": 4, "Aufgabe": "Was tun 4", "user": { "id": 1, "name": "Sato", "todos": [ { "id": 1, "Aufgabe": "Was tun 1" }, { "id": 2, "Aufgabe": "Was tun 2" }, { "id": 3, "task": "To do 3" }, { "id": 4, "Aufgabe": "Was tun 4" } ] } } ] } } ] } }, { "id": 3, "Aufgabe": "Was tun 3", "user": { "id": 1, "name": "Sato", "todos": [ { "id": 1, "Aufgabe": "Was tun 1", "user": { "id": 1, "name": "Sato", "todos": [ { "id": 1, "Aufgabe": "Was tun 1", "user": { "id": 1, "name": "Sato", "todos": [ { "id": 1, "Aufgabe": "Was tun 1" }, { "id": 2, "Aufgabe": "Was tun 2" }, { "id": 3, "task": "To do 3" }, { "id": 4, "Aufgabe": "Was tun 4" } ] } }, { "id": 2, "Aufgabe": "Was tun 2", "user": { "id": 1, "name": "Sato", "todos": [ { "id": 1, "Aufgabe": "Was tun 1" }, { "id": 2, "Aufgabe": "Was tun 2" }, { "id": 3, "task": "To do 3" }, { "id": 4, "Aufgabe": "Was tun 4" } ] } }, { "id": 3, "Aufgabe": "Was tun 3", "user": { "id": 1, "name": "Sato", "todos": [ { "id": 1, "Aufgabe": "Was tun 1" }, { "id": 2, "Aufgabe": "Was tun 2" }, { "id": 3, "task": "To do 3" }, { "id": 4, "Aufgabe": "Was tun 4" } ] } }, { "id": 4, "Aufgabe": "Was tun 4", "user": { "id": 1, "name": "Sato", "todos": [ { "id": 1, "Aufgabe": "Was tun 1" }, { "id": 2, "Aufgabe": "Was tun 2" }, { "id": 3, "task": "To do 3" }, { "id": 4, "Aufgabe": "Was tun 4" } ] } } ] } }, { "id": 2, "Aufgabe": "Was tun 2", "user": { "id": 1, "name": "Sato", "todos": [ { "id": 1, "Aufgabe": "Was tun 1", "user": { "id": 1, "name": "Sato", "todos": [ { "id": 1, "Aufgabe": "Was tun 1" }, { "id": 2, "Aufgabe": "Was tun 2" }, { "id": 3, "task": "To do 3" }, { "id": 4, "Aufgabe": "Was tun 4" } ] } }, { "id": 2, "Aufgabe": "Was tun 2", "user": { "id": 1, "name": "Sato", "todos": [ { "id": 1, "Aufgabe": "Was tun 1" }, { "id": 2, "Aufgabe": "Was tun 2" }, { "id": 3, "task": "To do 3" }, { "id": 4, "Aufgabe": "Was tun 4" } ] } }, { "id": 3, "Aufgabe": "Was tun 3", "user": { "id": 1, "name": "Sato", "todos": [ { "id": 1, "Aufgabe": "Was tun 1" }, { "id": 2, "Aufgabe": "Was tun 2" }, { "id": 3, "task": "To do 3" }, { "id": 4, "Aufgabe": "Was tun 4" } ] } }, { "id": 4, "Aufgabe": "Was tun 4", "user": { "id": 1, "name": "Sato", "todos": [ { "id": 1, "Aufgabe": "Was tun 1" }, { "id": 2, "Aufgabe": "Was tun 2" }, { "id": 3, "task": "To do 3" }, { "id": 4, "Aufgabe": "Was tun 4" } ] } } ] } }, { "id": 3, "Aufgabe": "Was tun 3", "user": { "id": 1, "name": "Sato", "todos": [ { "id": 1, "Aufgabe": "Was tun 1", "user": { "id": 1, "name": "Sato", "todos": [ { "id": 1, "Aufgabe": "Was tun 1" }, { "id": 2, "Aufgabe": "Was tun 2" }, { "id": 3, "task": "To do 3" }, { "id": 4, "Aufgabe": "Was tun 4" } ] } }, { "id": 2, "Aufgabe": "Was tun 2", "user": { "id": 1, "name": "Sato", "todos": [ { "id": 1, "Aufgabe": "Was tun 1" }, { "id": 2, "Aufgabe": "Was tun 2" }, { "id": 3, "task": "To do 3" }, { "id": 4, "Aufgabe": "Was tun 4" } ] } }, { "id": 3, "Aufgabe": "Was tun 3", "user": { "id": 1, "name": "Sato", "todos": [ { "id": 1, "Aufgabe": "Was tun 1" }, { "id": 2, "Aufgabe": "Was tun 2" }, { "id": 3, "task": "To do 3" }, { "id": 4, "Aufgabe": "Was tun 4" } ] } }, { "id": 4, "Aufgabe": "Was tun 4", "user": { "id": 1, "name": "Sato", "todos": [ { "id": 1, "Aufgabe": "Was tun 1" }, { "id": 2, "Aufgabe": "Was tun 2" }, { "id": 3, "task": "To do 3" }, { "id": 4, "Aufgabe": "Was tun 4" } ] } } ] } }, { "id": 4, "Aufgabe": "Was tun 4", "user": { "id": 1, "name": "Sato", "todos": [ { "id": 1, "Aufgabe": "Was tun 1", "user": { "id": 1, "name": "Sato", "todos": [ { "id": 1, "Aufgabe": "Was tun 1" }, { "id": 2, "Aufgabe": "Was tun 2" }, { "id": 3, "task": "To do 3" }, { "id": 4, "Aufgabe": "Was tun 4" } ] } }, { "id": 2, "Aufgabe": "Was tun 2", "user": { "id": 1, "name": "Sato", "todos": [ { "id": 1, "Aufgabe": "Was tun 1" }, { "id": 2, "Aufgabe": "Was tun 2" }, { "id": 3, "task": "To do 3" }, { "id": 4, "Aufgabe": "Was tun 4" } ] } }, { "id": 3, "Aufgabe": "Was tun 3", "user": { "id": 1, "name": "Sato", "todos": [ { "id": 1, "Aufgabe": "Was tun 1" }, { "id": 2, "Aufgabe": "Was tun 2" }, { "id": 3, "task": "To do 3" }, { "id": 4, "Aufgabe": "Was tun 4" } ] } }, { "id": 4, "Aufgabe": "Was tun 4", "user": { "id": 1, "name": "Sato", "todos": [ { "id": 1, "Aufgabe": "Was tun 1" }, { "id": 2, "Aufgabe": "Was tun 2" }, { "id": 3, "task": "To do 3" }, { "id": 4, "Aufgabe": "Was tun 4" } ] } } ] } } ] } }, { "id": 4, "Aufgabe": "Was tun 4", "user": { "id": 1, "name": "Sato", "todos": [ { "id": 1, "Aufgabe": "Was tun 1", "user": { "id": 1, "name": "Sato", "todos": [ { "id": 1, "Aufgabe": "Was tun 1", "user": { "id": 1, "name": "Sato", "todos": [ { "id": 1, "Aufgabe": "Was tun 1" }, { "id": 2, "Aufgabe": "Was tun 2" }, { "id": 3, "task": "To do 3" }, { "id": 4, "Aufgabe": "Was tun 4" } ] } }, { "id": 2, "Aufgabe": "Was tun 2", "user": { "id": 1, "name": "Sato", "todos": [ { "id": 1, "Aufgabe": "Was tun 1" }, { "id": 2, "Aufgabe": "Was tun 2" }, { "id": 3, "task": "To do 3" }, { "id": 4, "Aufgabe": "Was tun 4" } ] } }, { "id": 3, "Aufgabe": "Was tun 3", "user": { "id": 1, "name": "Sato", "todos": [ { "id": 1, "Aufgabe": "Was tun 1" }, { "id": 2, "Aufgabe": "Was tun 2" }, { "id": 3, "task": "To do 3" }, { "id": 4, "Aufgabe": "Was tun 4" } ] } }, { "id": 4, "Aufgabe": "Was tun 4", "user": { "id": 1, "name": "Sato", "todos": [ { "id": 1, "Aufgabe": "Was tun 1" }, { "id": 2, "Aufgabe": "Was tun 2" }, { "id": 3, "task": "To do 3" }, { "id": 4, "Aufgabe": "Was tun 4" } ] } } ] } }, { "id": 2, "Aufgabe": "Was tun 2", "user": { "id": 1, "name": "Sato", "todos": [ { "id": 1, "Aufgabe": "Was tun 1", "user": { "id": 1, "name": "Sato", "todos": [ { "id": 1, "Aufgabe": "Was tun 1" }, { "id": 2, "Aufgabe": "Was tun 2" }, { "id": 3, "task": "To do 3" }, { "id": 4, "Aufgabe": "Was tun 4" } ] } }, { "id": 2, "Aufgabe": "Was tun 2", "user": { "id": 1, "name": "Sato", "todos": [ { "id": 1, "Aufgabe": "Was tun 1" }, { "id": 2, "Aufgabe": "Was tun 2" }, { "id": 3, "task": "To do 3" }, { "id": 4, "Aufgabe": "Was tun 4" } ] } }, { "id": 3, "Aufgabe": "Was tun 3", "user": { "id": 1, "name": "Sato", "todos": [ { "id": 1, "Aufgabe": "Was tun 1" }, { "id": 2, "Aufgabe": "Was tun 2" }, { "id": 3, "task": "To do 3" }, { "id": 4, "Aufgabe": "Was tun 4" } ] } }, { "id": 4, "Aufgabe": "Was tun 4", "user": { "id": 1, "name": "Sato", "todos": [ { "id": 1, "Aufgabe": "Was tun 1" }, { "id": 2, "Aufgabe": "Was tun 2" }, { "id": 3, "task": "To do 3" }, { "id": 4, "Aufgabe": "Was tun 4" } ] } } ] } }, { "id": 3, "Aufgabe": "Was tun 3", "user": { "id": 1, "name": "Sato", "todos": [ { "id": 1, "Aufgabe": "Was tun 1", "user": { "id": 1, "name": "Sato", "todos": [ { "id": 1, "Aufgabe": "Was tun 1" }, { "id": 2, "Aufgabe": "Was tun 2" }, { "id": 3, "task": "To do 3" }, { "id": 4, "Aufgabe": "Was tun 4" } ] } }, { "id": 2, "Aufgabe": "Was tun 2", "user": { "id": 1, "name": "Sato", "todos": [ { "id": 1, "Aufgabe": "Was tun 1" }, { "id": 2, "Aufgabe": "Was tun 2" }, { "id": 3, "task": "To do 3" }, { "id": 4, "Aufgabe": "Was tun 4" } ] } }, { "id": 3, "Aufgabe": "Was tun 3", "user": { "id": 1, "name": "Sato", "todos": [ { "id": 1, "Aufgabe": "Was tun 1" }, { "id": 2, "Aufgabe": "Was tun 2" }, { "id": 3, "task": "To do 3" }, { "id": 4, "Aufgabe": "Was tun 4" } ] } }, { "id": 4, "Aufgabe": "Was tun 4", "user": { "id": 1, "name": "Sato", "todos": [ { "id": 1, "Aufgabe": "Was tun 1" }, { "id": 2, "Aufgabe": "Was tun 2" }, { "id": 3, "task": "To do 3" }, { "id": 4, "Aufgabe": "Was tun 4" } ] } } ] } }, { "id": 4, "Aufgabe": "Was tun 4", "user": { "id": 1, "name": "Sato", "todos": [ { "id": 1, "Aufgabe": "Was tun 1", "user": { "id": 1, "name": "Sato", "todos": [ { "id": 1, "Aufgabe": "Was tun 1" }, { "id": 2, "Aufgabe": "Was tun 2" }, { "id": 3, "task": "To do 3" }, { "id": 4, "Aufgabe": "Was tun 4" } ] } }, { "id": 2, "Aufgabe": "Was tun 2", "user": { "id": 1, "name": "Sato", "todos": [ { "id": 1, "Aufgabe": "Was tun 1" }, { "id": 2, "Aufgabe": "Was tun 2" }, { "id": 3, "task": "To do 3" }, { "id": 4, "Aufgabe": "Was tun 4" } ] } }, { "id": 3, "Aufgabe": "Was tun 3", "user": { "id": 1, "name": "Sato", "todos": [ { "id": 1, "Aufgabe": "Was tun 1" }, { "id": 2, "Aufgabe": "Was tun 2" }, { "id": 3, "task": "To do 3" }, { "id": 4, "Aufgabe": "Was tun 4" } ] } }, { "id": 4, "Aufgabe": "Was tun 4", "user": { "id": 1, "name": "Sato", "todos": [ { "id": 1, "Aufgabe": "Was tun 1" }, { "id": 2, "Aufgabe": "Was tun 2" }, { "id": 3, "task": "To do 3" }, { "id": 4, "Aufgabe": "Was tun 4" } ] } } ] } } ] } }, { "id": 5, "Aufgabe": "Was tun 5", "user": { "id": 2, "name": "Suzuki", "todos": [ { "id": 5, "Aufgabe": "Was tun 5", "user": { "id": 2, "name": "Suzuki", "todos": [ { "id": 5, "Aufgabe": "Was tun 5", "user": { "id": 2, "name": "Suzuki", "todos": [ { "id": 5, "Aufgabe": "Was zu tun ist 5" }, { "id": 6, "Aufgabe": "Was tun 6" }, { "id": 7, "Aufgabe": "Was tun 7" }, { "id": 8, "task": "To do 8" } ] } }, { "id": 6, "Aufgabe": "Was tun 6", "user": { "id": 2, "name": "Suzuki", "todos": [ { "id": 5, "Aufgabe": "Was zu tun ist 5" }, { "id": 6, "Aufgabe": "Was tun 6" }, { "id": 7, "Aufgabe": "Was tun 7" }, { "id": 8, "task": "To do 8" } ] } }, { "id": 7, "Aufgabe": "Was tun 7", "user": { "id": 2, "name": "Suzuki", "todos": [ { "id": 5, "Aufgabe": "Was zu tun ist 5" }, { "id": 6, "Aufgabe": "Was tun 6" }, { "id": 7, "Aufgabe": "Was tun 7" }, { "id": 8, "task": "To do 8" } ] } }, { "id": 8, "Aufgabe": "Was tun 8", "user": { "id": 2, "name": "Suzuki", "todos": [ { "id": 5, "Aufgabe": "Was zu tun ist 5" }, { "id": 6, "Aufgabe": "Was tun 6" }, { "id": 7, "Aufgabe": "Was tun 7" }, { "id": 8, "task": "To do 8" } ] } } ] } }, { "id": 6, "Aufgabe": "Was tun 6", "user": { "id": 2, "name": "Suzuki", "todos": [ { "id": 5, "Aufgabe": "Was tun 5", "user": { "id": 2, "name": "Suzuki", "todos": [ { "id": 5, "Aufgabe": "Was zu tun ist 5" }, { "id": 6, "Aufgabe": "Was tun 6" }, { "id": 7, "Aufgabe": "Was tun 7" }, { "id": 8, "task": "To do 8" } ] } }, { "id": 6, "Aufgabe": "Was tun 6", "user": { "id": 2, "name": "Suzuki", "todos": [ { "id": 5, "Aufgabe": "Was zu tun ist 5" }, { "id": 6, "Aufgabe": "Was tun 6" }, { "id": 7, "Aufgabe": "Was tun 7" }, { "id": 8, "task": "To do 8" } ] } }, { "id": 7, "Aufgabe": "Was tun 7", "user": { "id": 2, "name": "Suzuki", "todos": [ { "id": 5, "Aufgabe": "Was zu tun ist 5" }, { "id": 6, "Aufgabe": "Was tun 6" }, { "id": 7, "Aufgabe": "Was tun 7" }, { "id": 8, "task": "To do 8" } ] } }, { "id": 8, "Aufgabe": "Was tun 8", "user": { "id": 2, "name": "Suzuki", "todos": [ { "id": 5, "Aufgabe": "Was zu tun ist 5" }, { "id": 6, "Aufgabe": "Was tun 6" }, { "id": 7, "Aufgabe": "Was tun 7" }, { "id": 8, "task": "To do 8" } ] } } ] } }, { "id": 7, "Aufgabe": "Was tun 7", "user": { "id": 2, "name": "Suzuki", "todos": [ { "id": 5, "Aufgabe": "Was tun 5", "user": { "id": 2, "name": "Suzuki", "todos": [ { "id": 5, "Aufgabe": "Was zu tun ist 5" }, { "id": 6, "Aufgabe": "Was tun 6" }, { "id": 7, "Aufgabe": "Was tun 7" }, { "id": 8, "task": "To do 8" } ] } }, { "id": 6, "Aufgabe": "Was tun 6", "user": { "id": 2, "name": "Suzuki", "todos": [ { "id": 5, "Aufgabe": "Was zu tun ist 5" }, { "id": 6, "Aufgabe": "Was tun 6" }, { "id": 7, "Aufgabe": "Was tun 7" }, { "id": 8, "task": "To do 8" } ] } }, { "id": 7, "Aufgabe": "Was tun 7", "user": { "id": 2, "name": "Suzuki", "todos": [ { "id": 5, "Aufgabe": "Was zu tun ist 5" }, { "id": 6, "Aufgabe": "Was tun 6" }, { "id": 7, "Aufgabe": "Was tun 7" }, { "id": 8, "task": "To do 8" } ] } }, { "id": 8, "Aufgabe": "Was tun 8", "user": { "id": 2, "name": "Suzuki", "todos": [ { "id": 5, "Aufgabe": "Was zu tun ist 5" }, { "id": 6, "Aufgabe": "Was tun 6" }, { "id": 7, "Aufgabe": "Was tun 7" }, { "id": 8, "task": "To do 8" } ] } } ] } }, { "id": 8, "Aufgabe": "Was tun 8", "user": { "id": 2, "name": "Suzuki", "todos": [ { "id": 5, "Aufgabe": "Was tun 5", "user": { "id": 2, "name": "Suzuki", "todos": [ { "id": 5, "Aufgabe": "Was zu tun ist 5" }, { "id": 6, "Aufgabe": "Was tun 6" }, { "id": 7, "Aufgabe": "Was tun 7" }, { "id": 8, "task": "To do 8" } ] } }, { "id": 6, "Aufgabe": "Was tun 6", "user": { "id": 2, "name": "Suzuki", "todos": [ { "id": 5, "Aufgabe": "Was zu tun ist 5" }, { "id": 6, "Aufgabe": "Was tun 6" }, { "id": 7, "Aufgabe": "Was tun 7" }, { "id": 8, "task": "To do 8" } ] } }, { "id": 7, "Aufgabe": "Was tun 7", "user": { "id": 2, "name": "Suzuki", "todos": [ { "id": 5, "Aufgabe": "Was zu tun ist 5" }, { "id": 6, "Aufgabe": "Was tun 6" }, { "id": 7, "Aufgabe": "Was tun 7" }, { "id": 8, "task": "To do 8" } ] } }, { "id": 8, "Aufgabe": "Was tun 8", "user": { "id": 2, "name": "Suzuki", "todos": [ { "id": 5, "Aufgabe": "Was zu tun ist 5" }, { "id": 6, "Aufgabe": "Was tun 6" }, { "id": 7, "Aufgabe": "Was tun 7" }, { "id": 8, "task": "To do 8" } ] } } ] } } ] } }, { "id": 6, "Aufgabe": "Was tun 6", "user": { "id": 2, "name": "Suzuki", "todos": [ { "id": 5, "Aufgabe": "Was tun 5", "user": { "id": 2, "name": "Suzuki", "todos": [ { "id": 5, "Aufgabe": "Was tun 5", "user": { "id": 2, "name": "Suzuki", "todos": [ { "id": 5, "Aufgabe": "Was zu tun ist 5" }, { "id": 6, "Aufgabe": "Was tun 6" }, { "id": 7, "Aufgabe": "Was tun 7" }, { "id": 8, "task": "To do 8" } ] } }, { "id": 6, "Aufgabe": "Was tun 6", "user": { "id": 2, "name": "Suzuki", "todos": [ { "id": 5, "Aufgabe": "Was zu tun ist 5" }, { "id": 6, "Aufgabe": "Was tun 6" }, { "id": 7, "Aufgabe": "Was tun 7" }, { "id": 8, "task": "To do 8" } ] } }, { "id": 7, "Aufgabe": "Was tun 7", "user": { "id": 2, "name": "Suzuki", "todos": [ { "id": 5, "Aufgabe": "Was zu tun ist 5" }, { "id": 6, "Aufgabe": "Was tun 6" }, { "id": 7, "Aufgabe": "Was tun 7" }, { "id": 8, "task": "To do 8" } ] } }, { "id": 8, "Aufgabe": "Was tun 8", "user": { "id": 2, "name": "Suzuki", "todos": [ { "id": 5, "Aufgabe": "Was zu tun ist 5" }, { "id": 6, "Aufgabe": "Was tun 6" }, { "id": 7, "Aufgabe": "Was tun 7" }, { "id": 8, "task": "To do 8" } ] } } ] } }, { "id": 6, "Aufgabe": "Was tun 6", "user": { "id": 2, "name": "Suzuki", "todos": [ { "id": 5, "Aufgabe": "Was tun 5", "user": { "id": 2, "name": "Suzuki", "todos": [ { "id": 5, "Aufgabe": "Was zu tun ist 5" }, { "id": 6, "Aufgabe": "Was tun 6" }, { "id": 7, "Aufgabe": "Was tun 7" }, { "id": 8, "task": "To do 8" } ] } }, { "id": 6, "Aufgabe": "Was tun 6", "user": { "id": 2, "name": "Suzuki", "todos": [ { "id": 5, "Aufgabe": "Was zu tun ist 5" }, { "id": 6, "Aufgabe": "Was tun 6" }, { "id": 7, "Aufgabe": "Was tun 7" }, { "id": 8, "task": "To do 8" } ] } }, { "id": 7, "Aufgabe": "Was tun 7", "user": { "id": 2, "name": "Suzuki", "todos": [ { "id": 5, "Aufgabe": "Was zu tun ist 5" }, { "id": 6, "Aufgabe": "Was tun 6" }, { "id": 7, "Aufgabe": "Was tun 7" }, { "id": 8, "task": "To do 8" } ] } }, { "id": 8, "Aufgabe": "Was tun 8", "user": { "id": 2, "name": "Suzuki", "todos": [ { "id": 5, "Aufgabe": "Was zu tun ist 5" }, { "id": 6, "Aufgabe": "Was tun 6" }, { "id": 7, "Aufgabe": "Was tun 7" }, { "id": 8, "task": "To do 8" } ] } } ] } }, { "id": 7, "Aufgabe": "Was tun 7", "user": { "id": 2, "name": "Suzuki", "todos": [ { "id": 5, "Aufgabe": "Was tun 5", "user": { "id": 2, "name": "Suzuki", "todos": [ { "id": 5, "Aufgabe": "Was zu tun ist 5" }, { "id": 6, "Aufgabe": "Was tun 6" }, { "id": 7, "Aufgabe": "Was tun 7" }, { "id": 8, "task": "To do 8" } ] } }, { "id": 6, "Aufgabe": "Was tun 6", "user": { "id": 2, "name": "Suzuki", "todos": [ { "id": 5, "Aufgabe": "Was zu tun ist 5" }, { "id": 6, "Aufgabe": "Was tun 6" }, { "id": 7, "Aufgabe": "Was tun 7" }, { "id": 8, "task": "To do 8" } ] } }, { "id": 7, "Aufgabe": "Was tun 7", "user": { "id": 2, "name": "Suzuki", "todos": [ { "id": 5, "Aufgabe": "Was zu tun ist 5" }, { "id": 6, "Aufgabe": "Was tun 6" }, { "id": 7, "Aufgabe": "Was tun 7" }, { "id": 8, "task": "To do 8" } ] } }, { "id": 8, "Aufgabe": "Was tun 8", "user": { "id": 2, "name": "Suzuki", "todos": [ { "id": 5, "Aufgabe": "Was zu tun ist 5" }, { "id": 6, "Aufgabe": "Was tun 6" }, { "id": 7, "Aufgabe": "Was tun 7" }, { "id": 8, "task": "To do 8" } ] } } ] } }, { "id": 8, "Aufgabe": "Was tun 8", "user": { "id": 2, "name": "Suzuki", "todos": [ { "id": 5, "Aufgabe": "Was tun 5", "user": { "id": 2, "name": "Suzuki", "todos": [ { "id": 5, "Aufgabe": "Was zu tun ist 5" }, { "id": 6, "Aufgabe": "Was tun 6" }, { "id": 7, "Aufgabe": "Was tun 7" }, { "id": 8, "task": "To do 8" } ] } }, { "id": 6, "Aufgabe": "Was tun 6", "user": { "id": 2, "name": "Suzuki", "todos": [ { "id": 5, "Aufgabe": "Was zu tun ist 5" }, { "id": 6, "Aufgabe": "Was tun 6" }, { "id": 7, "Aufgabe": "Was tun 7" }, { "id": 8, "task": "To do 8" } ] } }, { "id": 7, "Aufgabe": "Was tun 7", "user": { "id": 2, "name": "Suzuki", "todos": [ { "id": 5, "Aufgabe": "Was zu tun ist 5" }, { "id": 6, "Aufgabe": "Was tun 6" }, { "id": 7, "Aufgabe": "Was tun 7" }, { "id": 8, "task": "To do 8" } ] } }, { "id": 8, "Aufgabe": "Was tun 8", "user": { "id": 2, "name": "Suzuki", "todos": [ { "id": 5, "Aufgabe": "Was zu tun ist 5" }, { "id": 6, "Aufgabe": "Was tun 6" }, { "id": 7, "Aufgabe": "Was tun 7" }, { "id": 8, "task": "To do 8" } ] } } ] } } ] } }, { "id": 7, "Aufgabe": "Was tun 7", "user": { "id": 2, "name": "Suzuki", "todos": [ { "id": 5, "Aufgabe": "Was tun 5", "user": { "id": 2, "name": "Suzuki", "todos": [ { "id": 5, "Aufgabe": "Was tun 5", "user": { "id": 2, "name": "Suzuki", "todos": [ { "id": 5, "Aufgabe": "Was zu tun ist 5" }, { "id": 6, "Aufgabe": "Was tun 6" }, { "id": 7, "Aufgabe": "Was tun 7" }, { "id": 8, "task": "To do 8" } ] } }, { "id": 6, "Aufgabe": "Was tun 6", "user": { "id": 2, "name": "Suzuki", "todos": [ { "id": 5, "Aufgabe": "Was zu tun ist 5" }, { "id": 6, "Aufgabe": "Was tun 6" }, { "id": 7, "Aufgabe": "Was tun 7" }, { "id": 8, "task": "To do 8" } ] } }, { "id": 7, "Aufgabe": "Was tun 7", "user": { "id": 2, "name": "Suzuki", "todos": [ { "id": 5, "Aufgabe": "Was zu tun ist 5" }, { "id": 6, "Aufgabe": "Was tun 6" }, { "id": 7, "Aufgabe": "Was tun 7" }, { "id": 8, "task": "To do 8" } ] } }, { "id": 8, "Aufgabe": "Was tun 8", "user": { "id": 2, "name": "Suzuki", "todos": [ { "id": 5, "Aufgabe": "Was zu tun ist 5" }, { "id": 6, "Aufgabe": "Was tun 6" }, { "id": 7, "Aufgabe": "Was tun 7" }, { "id": 8, "task": "To do 8" } ] } } ] } }, { "id": 6, "Aufgabe": "Was tun 6", "user": { "id": 2, "name": "Suzuki", "todos": [ { "id": 5, "Aufgabe": "Was tun 5", "user": { "id": 2, "name": "Suzuki", "todos": [ { "id": 5, "Aufgabe": "Was zu tun ist 5" }, { "id": 6, "Aufgabe": "Was tun 6" }, { "id": 7, "Aufgabe": "Was tun 7" }, { "id": 8, "task": "To do 8" } ] } }, { "id": 6, "Aufgabe": "Was tun 6", "user": { "id": 2, "name": "Suzuki", "todos": [ { "id": 5, "Aufgabe": "Was zu tun ist 5" }, { "id": 6, "Aufgabe": "Was tun 6" }, { "id": 7, "Aufgabe": "Was tun 7" }, { "id": 8, "task": "To do 8" } ] } }, { "id": 7, "Aufgabe": "Was tun 7", "user": { "id": 2, "name": "Suzuki", "todos": [ { "id": 5, "Aufgabe": "Was zu tun ist 5" }, { "id": 6, "Aufgabe": "Was tun 6" }, { "id": 7, "Aufgabe": "Was tun 7" }, { "id": 8, "task": "To do 8" } ] } }, { "id": 8, "Aufgabe": "Was tun 8", "user": { "id": 2, "name": "Suzuki", "todos": [ { "id": 5, "Aufgabe": "Was zu tun ist 5" }, { "id": 6, "Aufgabe": "Was tun 6" }, { "id": 7, "Aufgabe": "Was tun 7" }, { "id": 8, "task": "To do 8" } ] } } ] } }, { "id": 7, "Aufgabe": "Was tun 7", "user": { "id": 2, "name": "Suzuki", "todos": [ { "id": 5, "Aufgabe": "Was tun 5", "user": { "id": 2, "name": "Suzuki", "todos": [ { "id": 5, "Aufgabe": "Was zu tun ist 5" }, { "id": 6, "Aufgabe": "Was tun 6" }, { "id": 7, "Aufgabe": "Was tun 7" }, { "id": 8, "task": "To do 8" } ] } }, { "id": 6, "Aufgabe": "Was tun 6", "user": { "id": 2, "name": "Suzuki", "todos": [ { "id": 5, "Aufgabe": "Was zu tun ist 5" }, { "id": 6, "Aufgabe": "Was tun 6" }, { "id": 7, "Aufgabe": "Was tun 7" }, { "id": 8, "task": "To do 8" } ] } }, { "id": 7, "Aufgabe": "Was tun 7", "user": { "id": 2, "name": "Suzuki", "todos": [ { "id": 5, "Aufgabe": "Was zu tun ist 5" }, { "id": 6, "Aufgabe": "Was tun 6" }, { "id": 7, "Aufgabe": "Was tun 7" }, { "id": 8, "task": "To do 8" } ] } }, { "id": 8, "Aufgabe": "Was tun 8", "user": { "id": 2, "name": "Suzuki", "todos": [ { "id": 5, "Aufgabe": "Was zu tun ist 5" }, { "id": 6, "Aufgabe": "Was tun 6" }, { "id": 7, "Aufgabe": "Was tun 7" }, { "id": 8, "task": "To do 8" } ] } } ] } }, { "id": 8, "Aufgabe": "Was tun 8", "user": { "id": 2, "name": "Suzuki", "todos": [ { "id": 5, "Aufgabe": "Was tun 5", "user": { "id": 2, "name": "Suzuki", "todos": [ { "id": 5, "Aufgabe": "Was zu tun ist 5" }, { "id": 6, "Aufgabe": "Was tun 6" }, { "id": 7, "Aufgabe": "Was tun 7" }, { "id": 8, "task": "To do 8" } ] } }, { "id": 6, "Aufgabe": "Was tun 6", "user": { "id": 2, "name": "Suzuki", "todos": [ { "id": 5, "Aufgabe": "Was zu tun ist 5" }, { "id": 6, "Aufgabe": "Was tun 6" }, { "id": 7, "Aufgabe": "Was tun 7" }, { "id": 8, "task": "To do 8" } ] } }, { "id": 7, "Aufgabe": "Was tun 7", "user": { "id": 2, "name": "Suzuki", "todos": [ { "id": 5, "Aufgabe": "Was zu tun ist 5" }, { "id": 6, "Aufgabe": "Was tun 6" }, { "id": 7, "Aufgabe": "Was tun 7" }, { "id": 8, "task": "To do 8" } ] } }, { "id": 8, "Aufgabe": "Was tun 8", "user": { "id": 2, "name": "Suzuki", "todos": [ { "id": 5, "Aufgabe": "Was zu tun ist 5" }, { "id": 6, "Aufgabe": "Was tun 6" }, { "id": 7, "Aufgabe": "Was tun 7" }, { "id": 8, "task": "To do 8" } ] } } ] } } ] } }, { "id": 8, "Aufgabe": "Was tun 8", "user": { "id": 2, "name": "Suzuki", "todos": [ { "id": 5, "Aufgabe": "Was tun 5", "user": { "id": 2, "name": "Suzuki", "todos": [ { "id": 5, "Aufgabe": "Was tun 5", "user": { "id": 2, "name": "Suzuki", "todos": [ { "id": 5, "Aufgabe": "Was zu tun ist 5" }, { "id": 6, "Aufgabe": "Was tun 6" }, { "id": 7, "Aufgabe": "Was tun 7" }, { "id": 8, "task": "To do 8" } ] } }, { "id": 6, "Aufgabe": "Was tun 6", "user": { "id": 2, "name": "Suzuki", "todos": [ { "id": 5, "Aufgabe": "Was zu tun ist 5" }, { "id": 6, "Aufgabe": "Was tun 6" }, { "id": 7, "Aufgabe": "Was tun 7" }, { "id": 8, "task": "To do 8" } ] } }, { "id": 7, "Aufgabe": "Was tun 7", "user": { "id": 2, "name": "Suzuki", "todos": [ { "id": 5, "Aufgabe": "Was zu tun ist 5" }, { "id": 6, "Aufgabe": "Was tun 6" }, { "id": 7, "Aufgabe": "Was tun 7" }, { "id": 8, "task": "To do 8" } ] } }, { "id": 8, "Aufgabe": "Was tun 8", "user": { "id": 2, "name": "Suzuki", "todos": [ { "id": 5, "Aufgabe": "Was zu tun ist 5" }, { "id": 6, "Aufgabe": "Was tun 6" }, { "id": 7, "Aufgabe": "Was tun 7" }, { "id": 8, "task": "To do 8" } ] } } ] } }, { "id": 6, "Aufgabe": "Was tun 6", "user": { "id": 2, "name": "Suzuki", "todos": [ { "id": 5, "Aufgabe": "Was tun 5", "user": { "id": 2, "name": "Suzuki", "todos": [ { "id": 5, "Aufgabe": "Was zu tun ist 5" }, { "id": 6, "Aufgabe": "Was tun 6" }, { "id": 7, "Aufgabe": "Was tun 7" }, { "id": 8, "task": "To do 8" } ] } }, { "id": 6, "Aufgabe": "Was tun 6", "user": { "id": 2, "name": "Suzuki", "todos": [ { "id": 5, "Aufgabe": "Was zu tun ist 5" }, { "id": 6, "Aufgabe": "Was tun 6" }, { "id": 7, "Aufgabe": "Was tun 7" }, { "id": 8, "task": "To do 8" } ] } }, { "id": 7, "Aufgabe": "Was tun 7", "user": { "id": 2, "name": "Suzuki", "todos": [ { "id": 5, "Aufgabe": "Was zu tun ist 5" }, { "id": 6, "Aufgabe": "Was tun 6" }, { "id": 7, "Aufgabe": "Was tun 7" }, { "id": 8, "task": "To do 8" } ] } }, { "id": 8, "Aufgabe": "Was tun 8", "user": { "id": 2, "name": "Suzuki", "todos": [ { "id": 5, "Aufgabe": "Was zu tun ist 5" }, { "id": 6, "Aufgabe": "Was tun 6" }, { "id": 7, "Aufgabe": "Was tun 7" }, { "id": 8, "task": "To do 8" } ] } } ] } }, { "id": 7, "Aufgabe": "Was tun 7", "user": { "id": 2, "name": "Suzuki", "todos": [ { "id": 5, "Aufgabe": "Was tun 5", "user": { "id": 2, "name": "Suzuki", "todos": [ { "id": 5, "Aufgabe": "Was zu tun ist 5" }, { "id": 6, "Aufgabe": "Was tun 6" }, { "id": 7, "Aufgabe": "Was tun 7" }, { "id": 8, "task": "To do 8" } ] } }, { "id": 6, "Aufgabe": "Was tun 6", "user": { "id": 2, "name": "Suzuki", "todos": [ { "id": 5, "Aufgabe": "Was zu tun ist 5" }, { "id": 6, "Aufgabe": "Was tun 6" }, { "id": 7, "Aufgabe": "Was tun 7" }, { "id": 8, "task": "To do 8" } ] } }, { "id": 7, "Aufgabe": "Was tun 7", "user": { "id": 2, "name": "Suzuki", "todos": [ { "id": 5, "Aufgabe": "Was zu tun ist 5" }, { "id": 6, "Aufgabe": "Was tun 6" }, { "id": 7, "Aufgabe": "Was tun 7" }, { "id": 8, "task": "To do 8" } ] } }, { "id": 8, "Aufgabe": "Was tun 8", "user": { "id": 2, "name": "Suzuki", "todos": [ { "id": 5, "Aufgabe": "Was zu tun ist 5" }, { "id": 6, "Aufgabe": "Was tun 6" }, { "id": 7, "Aufgabe": "Was tun 7" }, { "id": 8, "task": "To do 8" } ] } } ] } }, { "id": 8, "Aufgabe": "Was tun 8", "user": { "id": 2, "name": "Suzuki", "todos": [ { "id": 5, "Aufgabe": "Was tun 5", "user": { "id": 2, "name": "Suzuki", "todos": [ { "id": 5, "Aufgabe": "Was zu tun ist 5" }, { "id": 6, "Aufgabe": "Was tun 6" }, { "id": 7, "Aufgabe": "Was tun 7" }, { "id": 8, "task": "To do 8" } ] } }, { "id": 6, "Aufgabe": "Was tun 6", "user": { "id": 2, "name": "Suzuki", "todos": [ { "id": 5, "Aufgabe": "Was zu tun ist 5" }, { "id": 6, "Aufgabe": "Was tun 6" }, { "id": 7, "Aufgabe": "Was tun 7" }, { "id": 8, "task": "To do 8" } ] } }, { "id": 7, "Aufgabe": "Was tun 7", "user": { "id": 2, "name": "Suzuki", "todos": [ { "id": 5, "Aufgabe": "Was zu tun ist 5" }, { "id": 6, "Aufgabe": "Was tun 6" }, { "id": 7, "Aufgabe": "Was tun 7" }, { "id": 8, "task": "To do 8" } ] } }, { "id": 8, "Aufgabe": "Was tun 8", "user": { "id": 2, "name": "Suzuki", "todos": [ { "id": 5, "Aufgabe": "Was zu tun ist 5" }, { "id": 6, "Aufgabe": "Was tun 6" }, { "id": 7, "Aufgabe": "Was tun 7" }, { "id": 8, "task": "To do 8" } ] } } ] } } ] } }, { "id": 9, "Aufgabe": "Was tun 9", "user": { "id": 3, "name": "Takahashi", "todos": [ { "id": 9, "Aufgabe": "Was tun 9", "user": { "id": 3, "name": "Takahashi", "todos": [ { "id": 9, "Aufgabe": "Was tun 9", "user": { "id": 3, "name": "Takahashi", "todos": [ { "id": 9, "Aufgabe": "Was zu tun ist 9" }, { "id": 10, "Aufgabe": "10 zu tun" }, { "id": 11, "Aufgabe": "Was tun 11" }, { "id": 12, "task": "To do 12" } ] } }, { "id": 10, "Aufgabe": "10 tun", "user": { "id": 3, "name": "Takahashi", "todos": [ { "id": 9, "Aufgabe": "Was zu tun ist 9" }, { "id": 10, "Aufgabe": "10 zu tun" }, { "id": 11, "Aufgabe": "Was tun 11" }, { "id": 12, "task": "To do 12" } ] } }, { "id": 11, "Aufgabe": "Was tun 11", "user": { "id": 3, "name": "Takahashi", "todos": [ { "id": 9, "Aufgabe": "Was zu tun ist 9" }, { "id": 10, "Aufgabe": "10 zu tun" }, { "id": 11, "Aufgabe": "Was tun 11" }, { "id": 12, "task": "To do 12" } ] } }, { "id": 12, "Aufgabe": "Was tun 12", "user": { "id": 3, "name": "Takahashi", "todos": [ { "id": 9, "Aufgabe": "Was zu tun ist 9" }, { "id": 10, "Aufgabe": "10 zu tun" }, { "id": 11, "Aufgabe": "Was tun 11" }, { "id": 12, "task": "To do 12" } ] } } ] } }, { "id": 10, "Aufgabe": "10 tun", "user": { "id": 3, "name": "Takahashi", "todos": [ { "id": 9, "Aufgabe": "Was tun 9", "user": { "id": 3, "name": "Takahashi", "todos": [ { "id": 9, "Aufgabe": "Was zu tun ist 9" }, { "id": 10, "Aufgabe": "10 zu tun" }, { "id": 11, "Aufgabe": "Was tun 11" }, { "id": 12, "task": "To do 12" } ] } }, { "id": 10, "Aufgabe": "10 tun", "user": { "id": 3, "name": "Takahashi", "todos": [ { "id": 9, "Aufgabe": "Was zu tun ist 9" }, { "id": 10, "Aufgabe": "10 zu tun" }, { "id": 11, "Aufgabe": "Was tun 11" }, { "id": 12, "task": "To do 12" } ] } }, { "id": 11, "Aufgabe": "Was tun 11", "user": { "id": 3, "name": "Takahashi", "todos": [ { "id": 9, "Aufgabe": "Was zu tun ist 9" }, { "id": 10, "Aufgabe": "10 zu tun" }, { "id": 11, "Aufgabe": "Was tun 11" }, { "id": 12, "task": "To do 12" } ] } }, { "id": 12, "Aufgabe": "Was tun 12", "user": { "id": 3, "name": "Takahashi", "todos": [ { "id": 9, "Aufgabe": "Was zu tun ist 9" }, { "id": 10, "Aufgabe": "10 zu tun" }, { "id": 11, "Aufgabe": "Was tun 11" }, { "id": 12, "task": "To do 12" } ] } } ] } }, { "id": 11, "Aufgabe": "Was tun 11", "user": { "id": 3, "name": "Takahashi", "todos": [ { "id": 9, "Aufgabe": "Was tun 9", "user": { "id": 3, "name": "Takahashi", "todos": [ { "id": 9, "Aufgabe": "Was zu tun ist 9" }, { "id": 10, "Aufgabe": "10 zu tun" }, { "id": 11, "Aufgabe": "Was tun 11" }, { "id": 12, "task": "To do 12" } ] } }, { "id": 10, "Aufgabe": "10 tun", "user": { "id": 3, "name": "Takahashi", "todos": [ { "id": 9, "Aufgabe": "Was zu tun ist 9" }, { "id": 10, "Aufgabe": "10 zu tun" }, { "id": 11, "Aufgabe": "Was tun 11" }, { "id": 12, "task": "To do 12" } ] } }, { "id": 11, "Aufgabe": "Was tun 11", "user": { "id": 3, "name": "Takahashi", "todos": [ { "id": 9, "Aufgabe": "Was zu tun ist 9" }, { "id": 10, "Aufgabe": "10 zu tun" }, { "id": 11, "Aufgabe": "Was tun 11" }, { "id": 12, "task": "To do 12" } ] } }, { "id": 12, "Aufgabe": "Was tun 12", "user": { "id": 3, "name": "Takahashi", "todos": [ { "id": 9, "Aufgabe": "Was zu tun ist 9" }, { "id": 10, "Aufgabe": "10 zu tun" }, { "id": 11, "Aufgabe": "Was tun 11" }, { "id": 12, "task": "To do 12" } ] } } ] } }, { "id": 12, "Aufgabe": "Was tun 12", "user": { "id": 3, "name": "Takahashi", "todos": [ { "id": 9, "Aufgabe": "Was tun 9", "user": { "id": 3, "name": "Takahashi", "todos": [ { "id": 9, "Aufgabe": "Was zu tun ist 9" }, { "id": 10, "Aufgabe": "10 zu tun" }, { "id": 11, "Aufgabe": "Was tun 11" }, { "id": 12, "task": "To do 12" } ] } }, { "id": 10, "Aufgabe": "10 tun", "user": { "id": 3, "name": "Takahashi", "todos": [ { "id": 9, "Aufgabe": "Was zu tun ist 9" }, { "id": 10, "Aufgabe": "10 zu tun" }, { "id": 11, "Aufgabe": "Was tun 11" }, { "id": 12, "task": "To do 12" } ] } }, { "id": 11, "Aufgabe": "Was tun 11", "user": { "id": 3, "name": "Takahashi", "todos": [ { "id": 9, "Aufgabe": "Was zu tun ist 9" }, { "id": 10, "Aufgabe": "10 zu tun" }, { "id": 11, "Aufgabe": "Was tun 11" }, { "id": 12, "task": "To do 12" } ] } }, { "id": 12, "Aufgabe": "Was tun 12", "user": { "id": 3, "name": "Takahashi", "todos": [ { "id": 9, "Aufgabe": "Was zu tun ist 9" }, { "id": 10, "Aufgabe": "10 zu tun" }, { "id": 11, "Aufgabe": "Was tun 11" }, { "id": 12, "task": "To do 12" } ] } } ] } } ] } }, { "id": 10, "Aufgabe": "10 tun", "user": { "id": 3, "name": "Takahashi", "todos": [ { "id": 9, "Aufgabe": "Was tun 9", "user": { "id": 3, "name": "Takahashi", "todos": [ { "id": 9, "Aufgabe": "Was tun 9", "user": { "id": 3, "name": "Takahashi", "todos": [ { "id": 9, "Aufgabe": "Was zu tun ist 9" }, { "id": 10, "Aufgabe": "10 zu tun" }, { "id": 11, "Aufgabe": "Was tun 11" }, { "id": 12, "task": "To do 12" } ] } }, { "id": 10, "Aufgabe": "10 tun", "user": { "id": 3, "name": "Takahashi", "todos": [ { "id": 9, "Aufgabe": "Was zu tun ist 9" }, { "id": 10, "Aufgabe": "10 zu tun" }, { "id": 11, "Aufgabe": "Was tun 11" }, { "id": 12, "task": "To do 12" } ] } }, { "id": 11, "Aufgabe": "Was tun 11", "user": { "id": 3, "name": "Takahashi", "todos": [ { "id": 9, "Aufgabe": "Was zu tun ist 9" }, { "id": 10, "Aufgabe": "10 zu tun" }, { "id": 11, "Aufgabe": "Was tun 11" }, { "id": 12, "task": "To do 12" } ] } }, { "id": 12, "Aufgabe": "Was tun 12", "user": { "id": 3, "name": "Takahashi", "todos": [ { "id": 9, "Aufgabe": "Was zu tun ist 9" }, { "id": 10, "Aufgabe": "10 zu tun" }, { "id": 11, "Aufgabe": "Was tun 11" }, { "id": 12, "task": "To do 12" } ] } } ] } }, { "id": 10, "Aufgabe": "10 tun", "user": { "id": 3, "name": "Takahashi", "todos": [ { "id": 9, "Aufgabe": "Was tun 9", "user": { "id": 3, "name": "Takahashi", "todos": [ { "id": 9, "Aufgabe": "Was zu tun ist 9" }, { "id": 10, "Aufgabe": "10 zu tun" }, { "id": 11, "Aufgabe": "Was tun 11" }, { "id": 12, "task": "To do 12" } ] } }, { "id": 10, "Aufgabe": "10 tun", "user": { "id": 3, "name": "Takahashi", "todos": [ { "id": 9, "Aufgabe": "Was zu tun ist 9" }, { "id": 10, "Aufgabe": "10 zu tun" }, { "id": 11, "Aufgabe": "Was tun 11" }, { "id": 12, "task": "To do 12" } ] } }, { "id": 11, "Aufgabe": "Was tun 11", "user": { "id": 3, "name": "Takahashi", "todos": [ { "id": 9, "Aufgabe": "Was zu tun ist 9" }, { "id": 10, "Aufgabe": "10 zu tun" }, { "id": 11, "Aufgabe": "Was tun 11" }, { "id": 12, "task": "To do 12" } ] } }, { "id": 12, "Aufgabe": "Was tun 12", "user": { "id": 3, "name": "Takahashi", "todos": [ { "id": 9, "Aufgabe": "Was zu tun ist 9" }, { "id": 10, "Aufgabe": "10 zu tun" }, { "id": 11, "Aufgabe": "Was tun 11" }, { "id": 12, "task": "To do 12" } ] } } ] } }, { "id": 11, "Aufgabe": "Was tun 11", "user": { "id": 3, "name": "Takahashi", "todos": [ { "id": 9, "Aufgabe": "Was tun 9", "user": { "id": 3, "name": "Takahashi", "todos": [ { "id": 9, "Aufgabe": "Was zu tun ist 9" }, { "id": 10, "Aufgabe": "10 zu tun" }, { "id": 11, "Aufgabe": "Was tun 11" }, { "id": 12, "task": "To do 12" } ] } }, { "id": 10, "Aufgabe": "10 tun", "user": { "id": 3, "name": "Takahashi", "todos": [ { "id": 9, "Aufgabe": "Was zu tun ist 9" }, { "id": 10, "Aufgabe": "10 zu tun" }, { "id": 11, "Aufgabe": "Was tun 11" }, { "id": 12, "task": "To do 12" } ] } }, { "id": 11, "Aufgabe": "Was tun 11", "user": { "id": 3, "name": "Takahashi", "todos": [ { "id": 9, "Aufgabe": "Was zu tun ist 9" }, { "id": 10, "Aufgabe": "10 zu tun" }, { "id": 11, "Aufgabe": "Was tun 11" }, { "id": 12, "task": "To do 12" } ] } }, { "id": 12, "Aufgabe": "Was tun 12", "user": { "id": 3, "name": "Takahashi", "todos": [ { "id": 9, "Aufgabe": "Was zu tun ist 9" }, { "id": 10, "Aufgabe": "10 zu tun" }, { "id": 11, "Aufgabe": "Was tun 11" }, { "id": 12, "task": "To do 12" } ] } } ] } }, { "id": 12, "Aufgabe": "Was tun 12", "user": { "id": 3, "name": "Takahashi", "todos": [ { "id": 9, "Aufgabe": "Was tun 9", "user": { "id": 3, "name": "Takahashi", "todos": [ { "id": 9, "Aufgabe": "Was zu tun ist 9" }, { "id": 10, "Aufgabe": "10 zu tun" }, { "id": 11, "Aufgabe": "Was tun 11" }, { "id": 12, "task": "To do 12" } ] } }, { "id": 10, "Aufgabe": "10 tun", "user": { "id": 3, "name": "Takahashi", "todos": [ { "id": 9, "Aufgabe": "Was zu tun ist 9" }, { "id": 10, "Aufgabe": "10 zu tun" }, { "id": 11, "Aufgabe": "Was tun 11" }, { "id": 12, "task": "To do 12" } ] } }, { "id": 11, "Aufgabe": "Was tun 11", "user": { "id": 3, "name": "Takahashi", "todos": [ { "id": 9, "Aufgabe": "Was zu tun ist 9" }, { "id": 10, "Aufgabe": "10 zu tun" }, { "id": 11, "Aufgabe": "Was tun 11" }, { "id": 12, "task": "To do 12" } ] } }, { "id": 12, "Aufgabe": "Was tun 12", "user": { "id": 3, "name": "Takahashi", "todos": [ { "id": 9, "Aufgabe": "Was zu tun ist 9" }, { "id": 10, "Aufgabe": "10 zu tun" }, { "id": 11, "Aufgabe": "Was tun 11" }, { "id": 12, "task": "To do 12" } ] } } ] } } ] } }, { "id": 11, "Aufgabe": "Was tun 11", "user": { "id": 3, "name": "Takahashi", "todos": [ { "id": 9, "Aufgabe": "Was tun 9", "user": { "id": 3, "name": "Takahashi", "todos": [ { "id": 9, "Aufgabe": "Was tun 9", "user": { "id": 3, "name": "Takahashi", "todos": [ { "id": 9, "Aufgabe": "Was zu tun ist 9" }, { "id": 10, "Aufgabe": "10 zu tun" }, { "id": 11, "Aufgabe": "Was tun 11" }, { "id": 12, "task": "To do 12" } ] } }, { "id": 10, "Aufgabe": "10 tun", "user": { "id": 3, "name": "Takahashi", "todos": [ { "id": 9, "Aufgabe": "Was zu tun ist 9" }, { "id": 10, "Aufgabe": "10 zu tun" }, { "id": 11, "Aufgabe": "Was tun 11" }, { "id": 12, "task": "To do 12" } ] } }, { "id": 11, "Aufgabe": "Was tun 11", "user": { "id": 3, "name": "Takahashi", "todos": [ { "id": 9, "Aufgabe": "Was zu tun ist 9" }, { "id": 10, "Aufgabe": "10 zu tun" }, { "id": 11, "Aufgabe": "Was tun 11" }, { "id": 12, "task": "To do 12" } ] } }, { "id": 12, "Aufgabe": "Was tun 12", "user": { "id": 3, "name": "Takahashi", "todos": [ { "id": 9, "Aufgabe": "Was zu tun ist 9" }, { "id": 10, "Aufgabe": "10 zu tun" }, { "id": 11, "Aufgabe": "Was tun 11" }, { "id": 12, "task": "To do 12" } ] } } ] } }, { "id": 10, "Aufgabe": "10 tun", "user": { "id": 3, "name": "Takahashi", "todos": [ { "id": 9, "Aufgabe": "Was tun 9", "user": { "id": 3, "name": "Takahashi", "todos": [ { "id": 9, "Aufgabe": "Was zu tun ist 9" }, { "id": 10, "Aufgabe": "10 zu tun" }, { "id": 11, "Aufgabe": "Was tun 11" }, { "id": 12, "task": "To do 12" } ] } }, { "id": 10, "Aufgabe": "10 tun", "user": { "id": 3, "name": "Takahashi", "todos": [ { "id": 9, "Aufgabe": "Was zu tun ist 9" }, { "id": 10, "Aufgabe": "10 zu tun" }, { "id": 11, "Aufgabe": "Was tun 11" }, { "id": 12, "task": "To do 12" } ] } }, { "id": 11, "Aufgabe": "Was tun 11", "user": { "id": 3, "name": "Takahashi", "todos": [ { "id": 9, "Aufgabe": "Was zu tun ist 9" }, { "id": 10, "Aufgabe": "10 zu tun" }, { "id": 11, "Aufgabe": "Was tun 11" }, { "id": 12, "task": "To do 12" } ] } }, { "id": 12, "Aufgabe": "Was tun 12", "user": { "id": 3, "name": "Takahashi", "todos": [ { "id": 9, "Aufgabe": "Was zu tun ist 9" }, { "id": 10, "Aufgabe": "10 zu tun" }, { "id": 11, "Aufgabe": "Was tun 11" }, { "id": 12, "task": "To do 12" } ] } } ] } }, { "id": 11, "Aufgabe": "Was tun 11", "user": { "id": 3, "name": "Takahashi", "todos": [ { "id": 9, "Aufgabe": "Was tun 9", "user": { "id": 3, "name": "Takahashi", "todos": [ { "id": 9, "Aufgabe": "Was zu tun ist 9" }, { "id": 10, "Aufgabe": "10 zu tun" }, { "id": 11, "Aufgabe": "Was tun 11" }, { "id": 12, "task": "To do 12" } ] } }, { "id": 10, "Aufgabe": "10 tun", "user": { "id": 3, "name": "Takahashi", "todos": [ { "id": 9, "Aufgabe": "Was zu tun ist 9" }, { "id": 10, "Aufgabe": "10 zu tun" }, { "id": 11, "Aufgabe": "Was tun 11" }, { "id": 12, "task": "To do 12" } ] } }, { "id": 11, "Aufgabe": "Was tun 11", "user": { "id": 3, "name": "Takahashi", "todos": [ { "id": 9, "Aufgabe": "Was zu tun ist 9" }, { "id": 10, "Aufgabe": "10 zu tun" }, { "id": 11, "Aufgabe": "Was tun 11" }, { "id": 12, "task": "To do 12" } ] } }, { "id": 12, "Aufgabe": "Was tun 12", "user": { "id": 3, "name": "Takahashi", "todos": [ { "id": 9, "Aufgabe": "Was zu tun ist 9" }, { "id": 10, "Aufgabe": "10 zu tun" }, { "id": 11, "Aufgabe": "Was tun 11" }, { "id": 12, "task": "To do 12" } ] } } ] } }, { "id": 12, "Aufgabe": "Was tun 12", "user": { "id": 3, "name": "Takahashi", "todos": [ { "id": 9, "Aufgabe": "Was tun 9", "user": { "id": 3, "name": "Takahashi", "todos": [ { "id": 9, "Aufgabe": "Was zu tun ist 9" }, { "id": 10, "Aufgabe": "10 zu tun" }, { "id": 11, "Aufgabe": "Was tun 11" }, { "id": 12, "task": "To do 12" } ] } }, { "id": 10, "Aufgabe": "10 tun", "user": { "id": 3, "name": "Takahashi", "todos": [ { "id": 9, "Aufgabe": "Was zu tun ist 9" }, { "id": 10, "Aufgabe": "10 zu tun" }, { "id": 11, "Aufgabe": "Was tun 11" }, { "id": 12, "task": "To do 12" } ] } }, { "id": 11, "Aufgabe": "Was tun 11", "user": { "id": 3, "name": "Takahashi", "todos": [ { "id": 9, "Aufgabe": "Was zu tun ist 9" }, { "id": 10, "Aufgabe": "10 zu tun" }, { "id": 11, "Aufgabe": "Was tun 11" }, { "id": 12, "task": "To do 12" } ] } }, { "id": 12, "Aufgabe": "Was tun 12", "user": { "id": 3, "name": "Takahashi", "todos": [ { "id": 9, "Aufgabe": "Was zu tun ist 9" }, { "id": 10, "Aufgabe": "10 zu tun" }, { "id": 11, "Aufgabe": "Was tun 11" }, { "id": 12, "task": "To do 12" } ] } } ] } } ] } }, { "id": 12, "Aufgabe": "Was tun 12", "user": { "id": 3, "name": "Takahashi", "todos": [ { "id": 9, "Aufgabe": "Was tun 9", "user": { "id": 3, "name": "Takahashi", "todos": [ { "id": 9, "Aufgabe": "Was tun 9", "user": { "id": 3, "name": "Takahashi", "todos": [ { "id": 9, "Aufgabe": "Was zu tun ist 9" }, { "id": 10, "Aufgabe": "10 zu tun" }, { "id": 11, "Aufgabe": "Was tun 11" }, { "id": 12, "task": "To do 12" } ] } }, { "id": 10, "Aufgabe": "10 tun", "user": { "id": 3, "name": "Takahashi", "todos": [ { "id": 9, "Aufgabe": "Was zu tun ist 9" }, { "id": 10, "Aufgabe": "10 zu tun" }, { "id": 11, "Aufgabe": "Was tun 11" }, { "id": 12, "task": "To do 12" } ] } }, { "id": 11, "Aufgabe": "Was tun 11", "user": { "id": 3, "name": "Takahashi", "todos": [ { "id": 9, "Aufgabe": "Was zu tun ist 9" }, { "id": 10, "Aufgabe": "10 zu tun" }, { "id": 11, "Aufgabe": "Was tun 11" }, { "id": 12, "task": "To do 12" } ] } }, { "id": 12, "Aufgabe": "Was tun 12", "user": { "id": 3, "name": "Takahashi", "todos": [ { "id": 9, "Aufgabe": "Was zu tun ist 9" }, { "id": 10, "Aufgabe": "10 zu tun" }, { "id": 11, "Aufgabe": "Was tun 11" }, { "id": 12, "task": "To do 12" } ] } } ] } }, { "id": 10, "Aufgabe": "10 tun", "user": { "id": 3, "name": "Takahashi", "todos": [ { "id": 9, "Aufgabe": "Was tun 9", "user": { "id": 3, "name": "Takahashi", "todos": [ { "id": 9, "Aufgabe": "Was zu tun ist 9" }, { "id": 10, "Aufgabe": "10 zu tun" }, { "id": 11, "Aufgabe": "Was tun 11" }, { "id": 12, "task": "To do 12" } ] } }, { "id": 10, "Aufgabe": "10 tun", "user": { "id": 3, "name": "Takahashi", "todos": [ { "id": 9, "Aufgabe": "Was zu tun ist 9" }, { "id": 10, "Aufgabe": "10 zu tun" }, { "id": 11, "Aufgabe": "Was tun 11" }, { "id": 12, "task": "To do 12" } ] } }, { "id": 11, "Aufgabe": "Was tun 11", "user": { "id": 3, "name": "Takahashi", "todos": [ { "id": 9, "Aufgabe": "Was zu tun ist 9" }, { "id": 10, "Aufgabe": "10 zu tun" }, { "id": 11, "Aufgabe": "Was tun 11" }, { "id": 12, "task": "To do 12" } ] } }, { "id": 12, "Aufgabe": "Was tun 12", "user": { "id": 3, "name": "Takahashi", "todos": [ { "id": 9, "Aufgabe": "Was zu tun ist 9" }, { "id": 10, "Aufgabe": "10 zu tun" }, { "id": 11, "Aufgabe": "Was tun 11" }, { "id": 12, "task": "To do 12" } ] } } ] } }, { "id": 11, "Aufgabe": "Was tun 11", "user": { "id": 3, "name": "Takahashi", "todos": [ { "id": 9, "Aufgabe": "Was tun 9", "user": { "id": 3, "name": "Takahashi", "todos": [ { "id": 9, "Aufgabe": "Was zu tun ist 9" }, { "id": 10, "Aufgabe": "10 zu tun" }, { "id": 11, "Aufgabe": "Was tun 11" }, { "id": 12, "task": "To do 12" } ] } }, { "id": 10, "Aufgabe": "10 tun", "user": { "id": 3, "name": "Takahashi", "todos": [ { "id": 9, "Aufgabe": "Was zu tun ist 9" }, { "id": 10, "Aufgabe": "10 zu tun" }, { "id": 11, "Aufgabe": "Was tun 11" }, { "id": 12, "task": "To do 12" } ] } }, { "id": 11, "Aufgabe": "Was tun 11", "user": { "id": 3, "name": "Takahashi", "todos": [ { "id": 9, "Aufgabe": "Was zu tun ist 9" }, { "id": 10, "Aufgabe": "10 zu tun" }, { "id": 11, "Aufgabe": "Was tun 11" }, { "id": 12, "task": "To do 12" } ] } }, { "id": 12, "Aufgabe": "Was tun 12", "user": { "id": 3, "name": "Takahashi", "todos": [ { "id": 9, "Aufgabe": "Was zu tun ist 9" }, { "id": 10, "Aufgabe": "10 zu tun" }, { "id": 11, "Aufgabe": "Was tun 11" }, { "id": 12, "task": "To do 12" } ] } } ] } }, { "id": 12, "Aufgabe": "Was tun 12", "user": { "id": 3, "name": "Takahashi", "todos": [ { "id": 9, "Aufgabe": "Was tun 9", "user": { "id": 3, "name": "Takahashi", "todos": [ { "id": 9, "Aufgabe": "Was zu tun ist 9" }, { "id": 10, "Aufgabe": "10 zu tun" }, { "id": 11, "Aufgabe": "Was tun 11" }, { "id": 12, "task": "To do 12" } ] } }, { "id": 10, "Aufgabe": "10 tun", "user": { "id": 3, "name": "Takahashi", "todos": [ { "id": 9, "Aufgabe": "Was zu tun ist 9" }, { "id": 10, "Aufgabe": "10 zu tun" }, { "id": 11, "Aufgabe": "Was tun 11" }, { "id": 12, "task": "To do 12" } ] } }, { "id": 11, "Aufgabe": "Was tun 11", "user": { "id": 3, "name": "Takahashi", "todos": [ { "id": 9, "Aufgabe": "Was zu tun ist 9" }, { "id": 10, "Aufgabe": "10 zu tun" }, { "id": 11, "Aufgabe": "Was tun 11" }, { "id": 12, "task": "To do 12" } ] } }, { "id": 12, "Aufgabe": "Was tun 12", "user": { "id": 3, "name": "Takahashi", "todos": [ { "id": 9, "Aufgabe": "Was zu tun ist 9" }, { "id": 10, "Aufgabe": "10 zu tun" }, { "id": 11, "Aufgabe": "Was tun 11" }, { "id": 12, "task": "To do 12" } ] } } ] } } ] } }, { "id": 13, "Aufgabe": "Was tun 13", "user": { "id": 4, "name": "Tanaka", "todos": [ { "id": 13, "Aufgabe": "Was tun 13", "user": { "id": 4, "name": "Tanaka", "todos": [ { "id": 13, "Aufgabe": "Was tun 13", "user": { "id": 4, "name": "Tanaka", "todos": [ { "id": 13, "Aufgabe": "Was tun 13?" }, { "id": 14, "Aufgabe": "14 zu tun" }, { "id": 15, "Aufgabe": "15 zu tun" }, { "id": 16, "Aufgabe": "16 zu tun" } ] } }, { "id": 14, "Aufgabe": "14 zu tun", "user": { "id": 4, "name": "Tanaka", "todos": [ { "id": 13, "Aufgabe": "Was tun 13?" }, { "id": 14, "Aufgabe": "14 zu tun" }, { "id": 15, "Aufgabe": "15 zu tun" }, { "id": 16, "Aufgabe": "16 zu tun" } ] } }, { "id": 15, "Aufgabe": "15 zu tun", "user": { "id": 4, "name": "Tanaka", "todos": [ { "id": 13, "Aufgabe": "Was tun 13?" }, { "id": 14, "Aufgabe": "14 zu tun" }, { "id": 15, "Aufgabe": "15 zu tun" }, { "id": 16, "Aufgabe": "16 zu tun" } ] } }, { "id": 16, "Aufgabe": "16 zu tun", "user": { "id": 4, "name": "Tanaka", "todos": [ { "id": 13, "Aufgabe": "Was tun 13?" }, { "id": 14, "Aufgabe": "14 zu tun" }, { "id": 15, "Aufgabe": "15 zu tun" }, { "id": 16, "Aufgabe": "16 zu tun" } ] } } ] } }, { "id": 14, "Aufgabe": "14 zu tun", "user": { "id": 4, "name": "Tanaka", "todos": [ { "id": 13, "Aufgabe": "Was tun 13", "user": { "id": 4, "name": "Tanaka", "todos": [ { "id": 13, "Aufgabe": "Was tun 13?" }, { "id": 14, "Aufgabe": "14 zu tun" }, { "id": 15, "Aufgabe": "15 zu tun" }, { "id": 16, "Aufgabe": "16 zu tun" } ] } }, { "id": 14, "Aufgabe": "14 zu tun", "user": { "id": 4, "name": "Tanaka", "todos": [ { "id": 13, "Aufgabe": "Was tun 13?" }, { "id": 14, "Aufgabe": "14 zu tun" }, { "id": 15, "Aufgabe": "15 zu tun" }, { "id": 16, "Aufgabe": "16 zu tun" } ] } }, { "id": 15, "Aufgabe": "15 zu tun", "user": { "id": 4, "name": "Tanaka", "todos": [ { "id": 13, "Aufgabe": "Was tun 13?" }, { "id": 14, "Aufgabe": "14 zu tun" }, { "id": 15, "Aufgabe": "15 zu tun" }, { "id": 16, "Aufgabe": "16 zu tun" } ] } }, { "id": 16, "Aufgabe": "16 zu tun", "user": { "id": 4, "name": "Tanaka", "todos": [ { "id": 13, "Aufgabe": "Was tun 13?" }, { "id": 14, "Aufgabe": "14 zu tun" }, { "id": 15, "Aufgabe": "15 zu tun" }, { "id": 16, "Aufgabe": "16 zu tun" } ] } } ] } }, { "id": 15, "Aufgabe": "15 zu tun", "user": { "id": 4, "name": "Tanaka", "todos": [ { "id": 13, "Aufgabe": "Was tun 13", "user": { "id": 4, "name": "Tanaka", "todos": [ { "id": 13, "Aufgabe": "Was tun 13?" }, { "id": 14, "Aufgabe": "14 zu tun" }, { "id": 15, "Aufgabe": "15 zu tun" }, { "id": 16, "Aufgabe": "16 zu tun" } ] } }, { "id": 14, "Aufgabe": "14 zu tun", "user": { "id": 4, "name": "Tanaka", "todos": [ { "id": 13, "Aufgabe": "Was tun 13?" }, { "id": 14, "Aufgabe": "14 zu tun" }, { "id": 15, "Aufgabe": "15 zu tun" }, { "id": 16, "Aufgabe": "16 zu tun" } ] } }, { "id": 15, "Aufgabe": "15 zu tun", "user": { "id": 4, "name": "Tanaka", "todos": [ { "id": 13, "Aufgabe": "Was tun 13?" }, { "id": 14, "Aufgabe": "14 zu tun" }, { "id": 15, "Aufgabe": "15 zu tun" }, { "id": 16, "Aufgabe": "16 zu tun" } ] } }, { "id": 16, "Aufgabe": "16 zu tun", "user": { "id": 4, "name": "Tanaka", "todos": [ { "id": 13, "Aufgabe": "Was tun 13?" }, { "id": 14, "Aufgabe": "14 zu tun" }, { "id": 15, "Aufgabe": "15 zu tun" }, { "id": 16, "Aufgabe": "16 zu tun" } ] } } ] } }, { "id": 16, "Aufgabe": "16 zu tun", "user": { "id": 4, "name": "Tanaka", "todos": [ { "id": 13, "Aufgabe": "Was tun 13", "user": { "id": 4, "name": "Tanaka", "todos": [ { "id": 13, "Aufgabe": "Was tun 13?" }, { "id": 14, "Aufgabe": "14 zu tun" }, { "id": 15, "Aufgabe": "15 zu tun" }, { "id": 16, "Aufgabe": "16 zu tun" } ] } }, { "id": 14, "Aufgabe": "14 zu tun", "user": { "id": 4, "name": "Tanaka", "todos": [ { "id": 13, "Aufgabe": "Was tun 13?" }, { "id": 14, "Aufgabe": "14 zu tun" }, { "id": 15, "Aufgabe": "15 zu tun" }, { "id": 16, "Aufgabe": "16 zu tun" } ] } }, { "id": 15, "Aufgabe": "15 zu tun", "user": { "id": 4, "name": "Tanaka", "todos": [ { "id": 13, "Aufgabe": "Was tun 13?" }, { "id": 14, "Aufgabe": "14 zu tun" }, { "id": 15, "Aufgabe": "15 zu tun" }, { "id": 16, "Aufgabe": "16 zu tun" } ] } }, { "id": 16, "Aufgabe": "16 zu tun", "user": { "id": 4, "name": "Tanaka", "todos": [ { "id": 13, "Aufgabe": "Was tun 13?" }, { "id": 14, "Aufgabe": "14 zu tun" }, { "id": 15, "Aufgabe": "15 zu tun" }, { "id": 16, "Aufgabe": "16 zu tun" } ] } } ] } } ] } }, { "id": 14, "Aufgabe": "14 zu tun", "user": { "id": 4, "name": "Tanaka", "todos": [ { "id": 13, "Aufgabe": "Was tun 13", "user": { "id": 4, "name": "Tanaka", "todos": [ { "id": 13, "Aufgabe": "Was tun 13", "user": { "id": 4, "name": "Tanaka", "todos": [ { "id": 13, "Aufgabe": "Was tun 13?" }, { "id": 14, "Aufgabe": "14 zu tun" }, { "id": 15, "Aufgabe": "15 zu tun" }, { "id": 16, "Aufgabe": "16 zu tun" } ] } }, { "id": 14, "Aufgabe": "14 zu tun", "user": { "id": 4, "name": "Tanaka", "todos": [ { "id": 13, "Aufgabe": "Was tun 13?" }, { "id": 14, "Aufgabe": "14 zu tun" }, { "id": 15, "Aufgabe": "15 zu tun" }, { "id": 16, "Aufgabe": "16 zu tun" } ] } }, { "id": 15, "Aufgabe": "15 zu tun", "user": { "id": 4, "name": "Tanaka", "todos": [ { "id": 13, "Aufgabe": "Was tun 13?" }, { "id": 14, "Aufgabe": "14 zu tun" }, { "id": 15, "Aufgabe": "15 zu tun" }, { "id": 16, "Aufgabe": "16 zu tun" } ] } }, { "id": 16, "Aufgabe": "16 zu tun", "user": { "id": 4, "name": "Tanaka", "todos": [ { "id": 13, "Aufgabe": "Was tun 13?" }, { "id": 14, "Aufgabe": "14 zu tun" }, { "id": 15, "Aufgabe": "15 zu tun" }, { "id": 16, "Aufgabe": "16 zu tun" } ] } } ] } }, { "id": 14, "Aufgabe": "14 zu tun", "user": { "id": 4, "name": "Tanaka", "todos": [ { "id": 13, "Aufgabe": "Was tun 13", "user": { "id": 4, "name": "Tanaka", "todos": [ { "id": 13, "Aufgabe": "Was tun 13?" }, { "id": 14, "Aufgabe": "14 zu tun" }, { "id": 15, "Aufgabe": "15 zu tun" }, { "id": 16, "Aufgabe": "16 zu tun" } ] } }, { "id": 14, "Aufgabe": "14 zu tun", "user": { "id": 4, "name": "Tanaka", "todos": [ { "id": 13, "Aufgabe": "Was tun 13?" }, { "id": 14, "Aufgabe": "14 zu tun" }, { "id": 15, "Aufgabe": "15 zu tun" }, { "id": 16, "Aufgabe": "16 zu tun" } ] } }, { "id": 15, "Aufgabe": "15 zu tun", "user": { "id": 4, "name": "Tanaka", "todos": [ { "id": 13, "Aufgabe": "Was tun 13?" }, { "id": 14, "Aufgabe": "14 zu tun" }, { "id": 15, "Aufgabe": "15 zu tun" }, { "id": 16, "Aufgabe": "16 zu tun" } ] } }, { "id": 16, "Aufgabe": "16 zu tun", "user": { "id": 4, "name": "Tanaka", "todos": [ { "id": 13, "Aufgabe": "Was tun 13?" }, { "id": 14, "Aufgabe": "14 zu tun" }, { "id": 15, "Aufgabe": "15 zu tun" }, { "id": 16, "Aufgabe": "16 zu tun" } ] } } ] } }, { "id": 15, "Aufgabe": "15 zu tun", "user": { "id": 4, "name": "Tanaka", "todos": [ { "id": 13, "Aufgabe": "Was tun 13", "user": { "id": 4, "name": "Tanaka", "todos": [ { "id": 13, "Aufgabe": "Was tun 13?" }, { "id": 14, "Aufgabe": "14 zu tun" }, { "id": 15, "Aufgabe": "15 zu tun" }, { "id": 16, "Aufgabe": "16 zu tun" } ] } }, { "id": 14, "Aufgabe": "14 zu tun", "user": { "id": 4, "name": "Tanaka", "todos": [ { "id": 13, "Aufgabe": "Was tun 13?" }, { "id": 14, "Aufgabe": "14 zu tun" }, { "id": 15, "Aufgabe": "15 zu tun" }, { "id": 16, "Aufgabe": "16 zu tun" } ] } }, { "id": 15, "Aufgabe": "15 zu tun", "user": { "id": 4, "name": "Tanaka", "todos": [ { "id": 13, "Aufgabe": "Was tun 13?" }, { "id": 14, "Aufgabe": "14 zu tun" }, { "id": 15, "Aufgabe": "15 zu tun" }, { "id": 16, "Aufgabe": "16 zu tun" } ] } }, { "id": 16, "Aufgabe": "16 zu tun", "user": { "id": 4, "name": "Tanaka", "todos": [ { "id": 13, "Aufgabe": "Was tun 13?" }, { "id": 14, "Aufgabe": "14 zu tun" }, { "id": 15, "Aufgabe": "15 zu tun" }, { "id": 16, "Aufgabe": "16 zu tun" } ] } } ] } }, { "id": 16, "Aufgabe": "16 zu tun", "user": { "id": 4, "name": "Tanaka", "todos": [ { "id": 13, "Aufgabe": "Was tun 13", "user": { "id": 4, "name": "Tanaka", "todos": [ { "id": 13, "Aufgabe": "Was tun 13?" }, { "id": 14, "Aufgabe": "14 zu tun" }, { "id": 15, "Aufgabe": "15 zu tun" }, { "id": 16, "Aufgabe": "16 zu tun" } ] } }, { "id": 14, "Aufgabe": "14 zu tun", "user": { "id": 4, "name": "Tanaka", "todos": [ { "id": 13, "Aufgabe": "Was tun 13?" }, { "id": 14, "Aufgabe": "14 zu tun" }, { "id": 15, "Aufgabe": "15 zu tun" }, { "id": 16, "Aufgabe": "16 zu tun" } ] } }, { "id": 15, "Aufgabe": "15 zu tun", "user": { "id": 4, "name": "Tanaka", "todos": [ { "id": 13, "Aufgabe": "Was tun 13?" }, { "id": 14, "Aufgabe": "14 zu tun" }, { "id": 15, "Aufgabe": "15 zu tun" }, { "id": 16, "Aufgabe": "16 zu tun" } ] } }, { "id": 16, "Aufgabe": "16 zu tun", "user": { "id": 4, "name": "Tanaka", "todos": [ { "id": 13, "Aufgabe": "Was tun 13?" }, { "id": 14, "Aufgabe": "14 zu tun" }, { "id": 15, "Aufgabe": "15 zu tun" }, { "id": 16, "Aufgabe": "16 zu tun" } ] } } ] } } ] } }, { "id": 15, "Aufgabe": "15 zu tun", "user": { "id": 4, "name": "Tanaka", "todos": [ { "id": 13, "Aufgabe": "Was tun 13", "user": { "id": 4, "name": "Tanaka", "todos": [ { "id": 13, "Aufgabe": "Was tun 13", "user": { "id": 4, "name": "Tanaka", "todos": [ { "id": 13, "Aufgabe": "Was tun 13?" }, { "id": 14, "Aufgabe": "14 zu tun" }, { "id": 15, "Aufgabe": "15 zu tun" }, { "id": 16, "Aufgabe": "16 zu tun" } ] } }, { "id": 14, "Aufgabe": "14 zu tun", "user": { "id": 4, "name": "Tanaka", "todos": [ { "id": 13, "Aufgabe": "Was tun 13?" }, { "id": 14, "Aufgabe": "14 zu tun" }, { "id": 15, "Aufgabe": "15 zu tun" }, { "id": 16, "Aufgabe": "16 zu tun" } ] } }, { "id": 15, "Aufgabe": "15 zu tun", "user": { "id": 4, "name": "Tanaka", "todos": [ { "id": 13, "Aufgabe": "Was tun 13?" }, { "id": 14, "Aufgabe": "14 zu tun" }, { "id": 15, "Aufgabe": "15 zu tun" }, { "id": 16, "Aufgabe": "16 zu tun" } ] } }, { "id": 16, "Aufgabe": "16 zu tun", "user": { "id": 4, "name": "Tanaka", "todos": [ { "id": 13, "Aufgabe": "Was tun 13?" }, { "id": 14, "Aufgabe": "14 zu tun" }, { "id": 15, "Aufgabe": "15 zu tun" }, { "id": 16, "Aufgabe": "16 zu tun" } ] } } ] } }, { "id": 14, "Aufgabe": "14 zu tun", "user": { "id": 4, "name": "Tanaka", "todos": [ { "id": 13, "Aufgabe": "Was tun 13", "user": { "id": 4, "name": "Tanaka", "todos": [ { "id": 13, "Aufgabe": "Was tun 13?" }, { "id": 14, "Aufgabe": "14 zu tun" }, { "id": 15, "Aufgabe": "15 zu tun" }, { "id": 16, "Aufgabe": "16 zu tun" } ] } }, { "id": 14, "Aufgabe": "14 zu tun", "user": { "id": 4, "name": "Tanaka", "todos": [ { "id": 13, "Aufgabe": "Was tun 13?" }, { "id": 14, "Aufgabe": "14 zu tun" }, { "id": 15, "Aufgabe": "15 zu tun" }, { "id": 16, "Aufgabe": "16 zu tun" } ] } }, { "id": 15, "Aufgabe": "15 zu tun", "user": { "id": 4, "name": "Tanaka", "todos": [ { "id": 13, "Aufgabe": "Was tun 13?" }, { "id": 14, "Aufgabe": "14 zu tun" }, { "id": 15, "Aufgabe": "15 zu tun" }, { "id": 16, "Aufgabe": "16 zu tun" } ] } }, { "id": 16, "Aufgabe": "16 zu tun", "user": { "id": 4, "name": "Tanaka", "todos": [ { "id": 13, "Aufgabe": "Was tun 13?" }, { "id": 14, "Aufgabe": "14 zu tun" }, { "id": 15, "Aufgabe": "15 zu tun" }, { "id": 16, "Aufgabe": "16 zu tun" } ] } } ] } }, { "id": 15, "Aufgabe": "15 zu tun", "user": { "id": 4, "name": "Tanaka", "todos": [ { "id": 13, "Aufgabe": "Was tun 13", "user": { "id": 4, "name": "Tanaka", "todos": [ { "id": 13, "Aufgabe": "Was tun 13?" }, { "id": 14, "Aufgabe": "14 zu tun" }, { "id": 15, "Aufgabe": "15 zu tun" }, { "id": 16, "Aufgabe": "16 zu tun" } ] } }, { "id": 14, "Aufgabe": "14 zu tun", "user": { "id": 4, "name": "Tanaka", "todos": [ { "id": 13, "Aufgabe": "Was tun 13?" }, { "id": 14, "Aufgabe": "14 zu tun" }, { "id": 15, "Aufgabe": "15 zu tun" }, { "id": 16, "Aufgabe": "16 zu tun" } ] } }, { "id": 15, "Aufgabe": "15 zu tun", "user": { "id": 4, "name": "Tanaka", "todos": [ { "id": 13, "Aufgabe": "Was tun 13?" }, { "id": 14, "Aufgabe": "14 zu tun" }, { "id": 15, "Aufgabe": "15 zu tun" }, { "id": 16, "Aufgabe": "16 zu tun" } ] } }, { "id": 16, "Aufgabe": "16 zu tun", "user": { "id": 4, "name": "Tanaka", "todos": [ { "id": 13, "Aufgabe": "Was tun 13?" }, { "id": 14, "Aufgabe": "14 zu tun" }, { "id": 15, "Aufgabe": "15 zu tun" }, { "id": 16, "Aufgabe": "16 zu tun" } ] } } ] } }, { "id": 16, "Aufgabe": "16 zu tun", "user": { "id": 4, "name": "Tanaka", "todos": [ { "id": 13, "Aufgabe": "Was tun 13", "user": { "id": 4, "name": "Tanaka", "todos": [ { "id": 13, "Aufgabe": "Was tun 13?" }, { "id": 14, "Aufgabe": "14 zu tun" }, { "id": 15, "Aufgabe": "15 zu tun" }, { "id": 16, "Aufgabe": "16 zu tun" } ] } }, { "id": 14, "Aufgabe": "14 zu tun", "user": { "id": 4, "name": "Tanaka", "todos": [ { "id": 13, "Aufgabe": "Was tun 13?" }, { "id": 14, "Aufgabe": "14 zu tun" }, { "id": 15, "Aufgabe": "15 zu tun" }, { "id": 16, "Aufgabe": "16 zu tun" } ] } }, { "id": 15, "Aufgabe": "15 zu tun", "user": { "id": 4, "name": "Tanaka", "todos": [ { "id": 13, "Aufgabe": "Was tun 13?" }, { "id": 14, "Aufgabe": "14 zu tun" }, { "id": 15, "Aufgabe": "15 zu tun" }, { "id": 16, "Aufgabe": "16 zu tun" } ] } }, { "id": 16, "Aufgabe": "16 zu tun", "user": { "id": 4, "name": "Tanaka", "todos": [ { "id": 13, "Aufgabe": "Was tun 13?" }, { "id": 14, "Aufgabe": "14 zu tun" }, { "id": 15, "Aufgabe": "15 zu tun" }, { "id": 16, "Aufgabe": "16 zu tun" } ] } } ] } } ] } }, { "id": 16, "Aufgabe": "16 zu tun", "user": { "id": 4, "name": "Tanaka", "todos": [ { "id": 13, "Aufgabe": "Was tun 13", "user": { "id": 4, "name": "Tanaka", "todos": [ { "id": 13, "Aufgabe": "Was tun 13", "user": { "id": 4, "name": "Tanaka", "todos": [ { "id": 13, "Aufgabe": "Was tun 13?" }, { "id": 14, "Aufgabe": "14 zu tun" }, { "id": 15, "Aufgabe": "15 zu tun" }, { "id": 16, "Aufgabe": "16 zu tun" } ] } }, { "id": 14, "Aufgabe": "14 zu tun", "user": { "id": 4, "name": "Tanaka", "todos": [ { "id": 13, "Aufgabe": "Was tun 13?" }, { "id": 14, "Aufgabe": "14 zu tun" }, { "id": 15, "Aufgabe": "15 zu tun" }, { "id": 16, "Aufgabe": "16 zu tun" } ] } }, { "id": 15, "Aufgabe": "15 zu tun", "user": { "id": 4, "name": "Tanaka", "todos": [ { "id": 13, "Aufgabe": "Was tun 13?" }, { "id": 14, "Aufgabe": "14 zu tun" }, { "id": 15, "Aufgabe": "15 zu tun" }, { "id": 16, "Aufgabe": "16 zu tun" } ] } }, { "id": 16, "Aufgabe": "16 zu tun", "user": { "id": 4, "name": "Tanaka", "todos": [ { "id": 13, "Aufgabe": "Was tun 13?" }, { "id": 14, "Aufgabe": "14 zu tun" }, { "id": 15, "Aufgabe": "15 zu tun" }, { "id": 16, "Aufgabe": "16 zu tun" } ] } } ] } }, { "id": 14, "Aufgabe": "14 zu tun", "user": { "id": 4, "name": "Tanaka", "todos": [ { "id": 13, "Aufgabe": "Was tun 13", "user": { "id": 4, "name": "Tanaka", "todos": [ { "id": 13, "Aufgabe": "Was tun 13?" }, { "id": 14, "Aufgabe": "14 zu tun" }, { "id": 15, "Aufgabe": "15 zu tun" }, { "id": 16, "Aufgabe": "16 zu tun" } ] } }, { "id": 14, "Aufgabe": "14 zu tun", "user": { "id": 4, "name": "Tanaka", "todos": [ { "id": 13, "Aufgabe": "Was tun 13?" }, { "id": 14, "Aufgabe": "14 zu tun" }, { "id": 15, "Aufgabe": "15 zu tun" }, { "id": 16, "Aufgabe": "16 zu tun" } ] } }, { "id": 15, "Aufgabe": "15 zu tun", "user": { "id": 4, "name": "Tanaka", "todos": [ { "id": 13, "Aufgabe": "Was tun 13?" }, { "id": 14, "Aufgabe": "14 zu tun" }, { "id": 15, "Aufgabe": "15 zu tun" }, { "id": 16, "Aufgabe": "16 zu tun" } ] } }, { "id": 16, "Aufgabe": "16 zu tun", "user": { "id": 4, "name": "Tanaka", "todos": [ { "id": 13, "Aufgabe": "Was tun 13?" }, { "id": 14, "Aufgabe": "14 zu tun" }, { "id": 15, "Aufgabe": "15 zu tun" }, { "id": 16, "Aufgabe": "16 zu tun" } ] } } ] } }, { "id": 15, "Aufgabe": "15 zu tun", "user": { "id": 4, "name": "Tanaka", "todos": [ { "id": 13, "Aufgabe": "Was tun 13", "user": { "id": 4, "name": "Tanaka", "todos": [ { "id": 13, "Aufgabe": "Was tun 13?" }, { "id": 14, "Aufgabe": "14 zu tun" }, { "id": 15, "Aufgabe": "15 zu tun" }, { "id": 16, "Aufgabe": "16 zu tun" } ] } }, { "id": 14, "Aufgabe": "14 zu tun", "user": { "id": 4, "name": "Tanaka", "todos": [ { "id": 13, "Aufgabe": "Was tun 13?" }, { "id": 14, "Aufgabe": "14 zu tun" }, { "id": 15, "Aufgabe": "15 zu tun" }, { "id": 16, "Aufgabe": "16 zu tun" } ] } }, { "id": 15, "Aufgabe": "15 zu tun", "user": { "id": 4, "name": "Tanaka", "todos": [ { "id": 13, "Aufgabe": "Was tun 13?" }, { "id": 14, "Aufgabe": "14 zu tun" }, { "id": 15, "Aufgabe": "15 zu tun" }, { "id": 16, "Aufgabe": "16 zu tun" } ] } }, { "id": 16, "Aufgabe": "16 zu tun", "user": { "id": 4, "name": "Tanaka", "todos": [ { "id": 13, "Aufgabe": "Was tun 13?" }, { "id": 14, "Aufgabe": "14 zu tun" }, { "id": 15, "Aufgabe": "15 zu tun" }, { "id": 16, "Aufgabe": "16 zu tun" } ] } } ] } }, { "id": 16, "Aufgabe": "16 zu tun", "user": { "id": 4, "name": "Tanaka", "todos": [ { "id": 13, "Aufgabe": "Was tun 13", "user": { "id": 4, "name": "Tanaka", "todos": [ { "id": 13, "Aufgabe": "Was tun 13?" }, { "id": 14, "Aufgabe": "14 zu tun" }, { "id": 15, "Aufgabe": "15 zu tun" }, { "id": 16, "Aufgabe": "16 zu tun" } ] } }, { "id": 14, "Aufgabe": "14 zu tun", "user": { "id": 4, "name": "Tanaka", "todos": [ { "id": 13, "Aufgabe": "Was tun 13?" }, { "id": 14, "Aufgabe": "14 zu tun" }, { "id": 15, "Aufgabe": "15 zu tun" }, { "id": 16, "Aufgabe": "16 zu tun" } ] } }, { "id": 15, "Aufgabe": "15 zu tun", "user": { "id": 4, "name": "Tanaka", "todos": [ { "id": 13, "Aufgabe": "Was tun 13?" }, { "id": 14, "Aufgabe": "14 zu tun" }, { "id": 15, "Aufgabe": "15 zu tun" }, { "id": 16, "Aufgabe": "16 zu tun" } ] } }, { "id": 16, "Aufgabe": "16 zu tun", "user": { "id": 4, "name": "Tanaka", "todos": [ { "id": 13, "Aufgabe": "Was tun 13?" }, { "id": 14, "Aufgabe": "14 zu tun" }, { "id": 15, "Aufgabe": "15 zu tun" }, { "id": 16, "Aufgabe": "16 zu tun" } ] } } ] } } ] } }, { "id": 17, "Aufgabe": "Was tun 17", "user": { "id": 5, "name": "Ito", "todos": [ { "id": 17, "Aufgabe": "Was tun 17", "user": { "id": 5, "name": "Ito", "todos": [ { "id": 17, "Aufgabe": "Was tun 17", "user": { "id": 5, "name": "Ito", "todos": [ { "id": 17, "Aufgabe": "Was zu tun ist 17" }, { "id": 18, "Aufgabe": "Was tun? 18" }, { "id": 19, "Aufgabe": "Zu tun 19" }, { "id": 20, "Aufgabe": "20 zu tun" } ] } }, { "id": 18, "Aufgabe": "Was zu tun ist 18", "user": { "id": 5, "name": "Ito", "todos": [ { "id": 17, "Aufgabe": "Was zu tun ist 17" }, { "id": 18, "Aufgabe": "Was tun? 18" }, { "id": 19, "Aufgabe": "Zu tun 19" }, { "id": 20, "Aufgabe": "20 zu tun" } ] } }, { "id": 19, "Aufgabe": "Was tun 19", "user": { "id": 5, "name": "Ito", "todos": [ { "id": 17, "Aufgabe": "Was zu tun ist 17" }, { "id": 18, "Aufgabe": "Was tun? 18" }, { "id": 19, "Aufgabe": "Zu tun 19" }, { "id": 20, "Aufgabe": "20 zu tun" } ] } }, { "id": 20, "Aufgabe": "20 zu tun", "user": { "id": 5, "name": "Ito", "todos": [ { "id": 17, "Aufgabe": "Was zu tun ist 17" }, { "id": 18, "Aufgabe": "Was tun? 18" }, { "id": 19, "Aufgabe": "Zu tun 19" }, { "id": 20, "Aufgabe": "20 zu tun" } ] } } ] } }, { "id": 18, "Aufgabe": "Was zu tun ist 18", "user": { "id": 5, "name": "Ito", "todos": [ { "id": 17, "Aufgabe": "Was tun 17", "user": { "id": 5, "name": "Ito", "todos": [ { "id": 17, "Aufgabe": "Was zu tun ist 17" }, { "id": 18, "Aufgabe": "Was tun? 18" }, { "id": 19, "Aufgabe": "Zu tun 19" }, { "id": 20, "Aufgabe": "20 zu tun" } ] } }, { "id": 18, "Aufgabe": "Was zu tun ist 18", "user": { "id": 5, "name": "Ito", "todos": [ { "id": 17, "Aufgabe": "Was zu tun ist 17" }, { "id": 18, "Aufgabe": "Was tun? 18" }, { "id": 19, "Aufgabe": "Zu tun 19" }, { "id": 20, "Aufgabe": "20 zu tun" } ] } }, { "id": 19, "Aufgabe": "Was tun 19", "user": { "id": 5, "name": "Ito", "todos": [ { "id": 17, "Aufgabe": "Was zu tun ist 17" }, { "id": 18, "Aufgabe": "Was tun? 18" }, { "id": 19, "Aufgabe": "Zu tun 19" }, { "id": 20, "Aufgabe": "20 zu tun" } ] } }, { "id": 20, "Aufgabe": "20 zu tun", "user": { "id": 5, "name": "Ito", "todos": [ { "id": 17, "Aufgabe": "Was zu tun ist 17" }, { "id": 18, "Aufgabe": "Was tun? 18" }, { "id": 19, "Aufgabe": "Zu tun 19" }, { "id": 20, "Aufgabe": "20 zu tun" } ] } } ] } }, { "id": 19, "Aufgabe": "Was tun 19", "user": { "id": 5, "name": "Ito", "todos": [ { "id": 17, "Aufgabe": "Was tun 17", "user": { "id": 5, "name": "Ito", "todos": [ { "id": 17, "Aufgabe": "Was zu tun ist 17" }, { "id": 18, "Aufgabe": "Was tun? 18" }, { "id": 19, "Aufgabe": "Zu tun 19" }, { "id": 20, "Aufgabe": "20 zu tun" } ] } }, { "id": 18, "Aufgabe": "Was zu tun ist 18", "user": { "id": 5, "name": "Ito", "todos": [ { "id": 17, "Aufgabe": "Was zu tun ist 17" }, { "id": 18, "Aufgabe": "Was tun? 18" }, { "id": 19, "Aufgabe": "Zu tun 19" }, { "id": 20, "Aufgabe": "20 zu tun" } ] } }, { "id": 19, "Aufgabe": "Was tun 19", "user": { "id": 5, "name": "Ito", "todos": [ { "id": 17, "Aufgabe": "Was zu tun ist 17" }, { "id": 18, "Aufgabe": "Was tun? 18" }, { "id": 19, "Aufgabe": "Zu tun 19" }, { "id": 20, "Aufgabe": "20 zu tun" } ] } }, { "id": 20, "Aufgabe": "20 zu tun", "user": { "id": 5, "name": "Ito", "todos": [ { "id": 17, "Aufgabe": "Was zu tun ist 17" }, { "id": 18, "Aufgabe": "Was tun? 18" }, { "id": 19, "Aufgabe": "Zu tun 19" }, { "id": 20, "Aufgabe": "20 zu tun" } ] } } ] } }, { "id": 20, "Aufgabe": "20 zu tun", "user": { "id": 5, "name": "Ito", "todos": [ { "id": 17, "Aufgabe": "Was tun 17", "user": { "id": 5, "name": "Ito", "todos": [ { "id": 17, "Aufgabe": "Was zu tun ist 17" }, { "id": 18, "Aufgabe": "Was tun? 18" }, { "id": 19, "Aufgabe": "Zu tun 19" }, { "id": 20, "Aufgabe": "20 zu tun" } ] } }, { "id": 18, "Aufgabe": "Was zu tun ist 18", "user": { "id": 5, "name": "Ito", "todos": [ { "id": 17, "Aufgabe": "Was zu tun ist 17" }, { "id": 18, "Aufgabe": "Was tun? 18" }, { "id": 19, "Aufgabe": "Zu tun 19" }, { "id": 20, "Aufgabe": "20 zu tun" } ] } }, { "id": 19, "Aufgabe": "Was tun 19", "user": { "id": 5, "name": "Ito", "todos": [ { "id": 17, "Aufgabe": "Was zu tun ist 17" }, { "id": 18, "Aufgabe": "Was tun? 18" }, { "id": 19, "Aufgabe": "Zu tun 19" }, { "id": 20, "Aufgabe": "20 zu tun" } ] } }, { "id": 20, "Aufgabe": "20 zu tun", "user": { "id": 5, "name": "Ito", "todos": [ { "id": 17, "Aufgabe": "Was zu tun ist 17" }, { "id": 18, "Aufgabe": "Was tun? 18" }, { "id": 19, "Aufgabe": "Zu tun 19" }, { "id": 20, "Aufgabe": "20 zu tun" } ] } } ] } } ] } }, { "id": 18, "Aufgabe": "Was zu tun ist 18", "user": { "id": 5, "name": "Ito", "todos": [ { "id": 17, "Aufgabe": "Was tun 17", "user": { "id": 5, "name": "Ito", "todos": [ { "id": 17, "Aufgabe": "Was tun 17", "user": { "id": 5, "name": "Ito", "todos": [ { "id": 17, "Aufgabe": "Was zu tun ist 17" }, { "id": 18, "Aufgabe": "Was tun? 18" }, { "id": 19, "Aufgabe": "Zu tun 19" }, { "id": 20, "Aufgabe": "20 zu tun" } ] } }, { "id": 18, "Aufgabe": "Was zu tun ist 18", "user": { "id": 5, "name": "Ito", "todos": [ { "id": 17, "Aufgabe": "Was zu tun ist 17" }, { "id": 18, "Aufgabe": "Was tun? 18" }, { "id": 19, "Aufgabe": "Zu tun 19" }, { "id": 20, "Aufgabe": "20 zu tun" } ] } }, { "id": 19, "Aufgabe": "Was tun 19", "user": { "id": 5, "name": "Ito", "todos": [ { "id": 17, "Aufgabe": "Was zu tun ist 17" }, { "id": 18, "Aufgabe": "Was tun? 18" }, { "id": 19, "Aufgabe": "Zu tun 19" }, { "id": 20, "Aufgabe": "20 zu tun" } ] } }, { "id": 20, "Aufgabe": "20 zu tun", "user": { "id": 5, "name": "Ito", "todos": [ { "id": 17, "Aufgabe": "Was zu tun ist 17" }, { "id": 18, "Aufgabe": "Was tun? 18" }, { "id": 19, "Aufgabe": "Zu tun 19" }, { "id": 20, "Aufgabe": "20 zu tun" } ] } } ] } }, { "id": 18, "Aufgabe": "Was zu tun ist 18", "user": { "id": 5, "name": "Ito", "todos": [ { "id": 17, "Aufgabe": "Was tun 17", "user": { "id": 5, "name": "Ito", "todos": [ { "id": 17, "Aufgabe": "Was zu tun ist 17" }, { "id": 18, "Aufgabe": "Was tun? 18" }, { "id": 19, "Aufgabe": "Zu tun 19" }, { "id": 20, "Aufgabe": "20 zu tun" } ] } }, { "id": 18, "Aufgabe": "Was zu tun ist 18", "user": { "id": 5, "name": "Ito", "todos": [ { "id": 17, "Aufgabe": "Was zu tun ist 17" }, { "id": 18, "Aufgabe": "Was tun? 18" }, { "id": 19, "Aufgabe": "Zu tun 19" }, { "id": 20, "Aufgabe": "20 zu tun" } ] } }, { "id": 19, "Aufgabe": "Was tun 19", "user": { "id": 5, "name": "Ito", "todos": [ { "id": 17, "Aufgabe": "Was zu tun ist 17" }, { "id": 18, "Aufgabe": "Was tun? 18" }, { "id": 19, "Aufgabe": "Zu tun 19" }, { "id": 20, "Aufgabe": "20 zu tun" } ] } }, { "id": 20, "Aufgabe": "20 zu tun", "user": { "id": 5, "name": "Ito", "todos": [ { "id": 17, "Aufgabe": "Was zu tun ist 17" }, { "id": 18, "Aufgabe": "Was tun? 18" }, { "id": 19, "Aufgabe": "Zu tun 19" }, { "id": 20, "Aufgabe": "20 zu tun" } ] } } ] } }, { "id": 19, "Aufgabe": "Was tun 19", "user": { "id": 5, "name": "Ito", "todos": [ { "id": 17, "Aufgabe": "Was tun 17", "user": { "id": 5, "name": "Ito", "todos": [ { "id": 17, "Aufgabe": "Was zu tun ist 17" }, { "id": 18, "Aufgabe": "Was tun? 18" }, { "id": 19, "Aufgabe": "Zu tun 19" }, { "id": 20, "Aufgabe": "20 zu tun" } ] } }, { "id": 18, "Aufgabe": "Was zu tun ist 18", "user": { "id": 5, "name": "Ito", "todos": [ { "id": 17, "Aufgabe": "Was zu tun ist 17" }, { "id": 18, "Aufgabe": "Was tun? 18" }, { "id": 19, "Aufgabe": "Zu tun 19" }, { "id": 20, "Aufgabe": "20 zu tun" } ] } }, { "id": 19, "Aufgabe": "Was tun 19", "user": { "id": 5, "name": "Ito", "todos": [ { "id": 17, "Aufgabe": "Was zu tun ist 17" }, { "id": 18, "Aufgabe": "Was tun? 18" }, { "id": 19, "Aufgabe": "Zu tun 19" }, { "id": 20, "Aufgabe": "20 zu tun" } ] } }, { "id": 20, "Aufgabe": "20 zu tun", "user": { "id": 5, "name": "Ito", "todos": [ { "id": 17, "Aufgabe": "Was zu tun ist 17" }, { "id": 18, "Aufgabe": "Was tun? 18" }, { "id": 19, "Aufgabe": "Zu tun 19" }, { "id": 20, "Aufgabe": "20 zu tun" } ] } } ] } }, { "id": 20, "Aufgabe": "20 zu tun", "user": { "id": 5, "name": "Ito", "todos": [ { "id": 17, "Aufgabe": "Was tun 17", "user": { "id": 5, "name": "Ito", "todos": [ { "id": 17, "Aufgabe": "Was zu tun ist 17" }, { "id": 18, "Aufgabe": "Was tun? 18" }, { "id": 19, "Aufgabe": "Zu tun 19" }, { "id": 20, "Aufgabe": "20 zu tun" } ] } }, { "id": 18, "Aufgabe": "Was zu tun ist 18", "user": { "id": 5, "name": "Ito", "todos": [ { "id": 17, "Aufgabe": "Was zu tun ist 17" }, { "id": 18, "Aufgabe": "Was tun? 18" }, { "id": 19, "Aufgabe": "Zu tun 19" }, { "id": 20, "Aufgabe": "20 zu tun" } ] } }, { "id": 19, "Aufgabe": "Was tun 19", "user": { "id": 5, "name": "Ito", "todos": [ { "id": 17, "Aufgabe": "Was zu tun ist 17" }, { "id": 18, "Aufgabe": "Was tun? 18" }, { "id": 19, "Aufgabe": "Zu tun 19" }, { "id": 20, "Aufgabe": "20 zu tun" } ] } }, { "id": 20, "Aufgabe": "20 zu tun", "user": { "id": 5, "name": "Ito", "todos": [ { "id": 17, "Aufgabe": "Was zu tun ist 17" }, { "id": 18, "Aufgabe": "Was tun? 18" }, { "id": 19, "Aufgabe": "Zu tun 19" }, { "id": 20, "Aufgabe": "20 zu tun" } ] } } ] } } ] } }, { "id": 19, "Aufgabe": "Was tun 19", "user": { "id": 5, "name": "Ito", "todos": [ { "id": 17, "Aufgabe": "Was tun 17", "user": { "id": 5, "name": "Ito", "todos": [ { "id": 17, "Aufgabe": "Was tun 17", "user": { "id": 5, "name": "Ito", "todos": [ { "id": 17, "Aufgabe": "Was zu tun ist 17" }, { "id": 18, "Aufgabe": "Was tun? 18" }, { "id": 19, "Aufgabe": "Zu tun 19" }, { "id": 20, "Aufgabe": "20 zu tun" } ] } }, { "id": 18, "Aufgabe": "Was zu tun ist 18", "user": { "id": 5, "name": "Ito", "todos": [ { "id": 17, "Aufgabe": "Was zu tun ist 17" }, { "id": 18, "Aufgabe": "Was tun? 18" }, { "id": 19, "Aufgabe": "Zu tun 19" }, { "id": 20, "Aufgabe": "20 zu tun" } ] } }, { "id": 19, "Aufgabe": "Was tun 19", "user": { "id": 5, "name": "Ito", "todos": [ { "id": 17, "Aufgabe": "Was zu tun ist 17" }, { "id": 18, "Aufgabe": "Was tun? 18" }, { "id": 19, "Aufgabe": "Zu tun 19" }, { "id": 20, "Aufgabe": "20 zu tun" } ] } }, { "id": 20, "Aufgabe": "20 zu tun", "user": { "id": 5, "name": "Ito", "todos": [ { "id": 17, "Aufgabe": "Was zu tun ist 17" }, { "id": 18, "Aufgabe": "Was tun? 18" }, { "id": 19, "Aufgabe": "Zu tun 19" }, { "id": 20, "Aufgabe": "20 zu tun" } ] } } ] } }, { "id": 18, "Aufgabe": "Was zu tun ist 18", "user": { "id": 5, "name": "Ito", "todos": [ { "id": 17, "Aufgabe": "Was tun 17", "user": { "id": 5, "name": "Ito", "todos": [ { "id": 17, "Aufgabe": "Was zu tun ist 17" }, { "id": 18, "Aufgabe": "Was tun? 18" }, { "id": 19, "Aufgabe": "Zu tun 19" }, { "id": 20, "Aufgabe": "20 zu tun" } ] } }, { "id": 18, "Aufgabe": "Was zu tun ist 18", "user": { "id": 5, "name": "Ito", "todos": [ { "id": 17, "Aufgabe": "Was zu tun ist 17" }, { "id": 18, "Aufgabe": "Was tun? 18" }, { "id": 19, "Aufgabe": "Zu tun 19" }, { "id": 20, "Aufgabe": "20 zu tun" } ] } }, { "id": 19, "Aufgabe": "Was tun 19", "user": { "id": 5, "name": "Ito", "todos": [ { "id": 17, "Aufgabe": "Was zu tun ist 17" }, { "id": 18, "Aufgabe": "Was tun? 18" }, { "id": 19, "Aufgabe": "Zu tun 19" }, { "id": 20, "Aufgabe": "20 zu tun" } ] } }, { "id": 20, "Aufgabe": "20 zu tun", "user": { "id": 5, "name": "Ito", "todos": [ { "id": 17, "Aufgabe": "Was zu tun ist 17" }, { "id": 18, "Aufgabe": "Was tun? 18" }, { "id": 19, "Aufgabe": "Zu tun 19" }, { "id": 20, "Aufgabe": "20 zu tun" } ] } } ] } }, { "id": 19, "Aufgabe": "Was tun 19", "user": { "id": 5, "name": "Ito", "todos": [ { "id": 17, "Aufgabe": "Was tun 17", "user": { "id": 5, "name": "Ito", "todos": [ { "id": 17, "Aufgabe": "Was zu tun ist 17" }, { "id": 18, "Aufgabe": "Was tun? 18" }, { "id": 19, "Aufgabe": "Zu tun 19" }, { "id": 20, "Aufgabe": "20 zu tun" } ] } }, { "id": 18, "Aufgabe": "Was zu tun ist 18", "user": { "id": 5, "name": "Ito", "todos": [ { "id": 17, "Aufgabe": "Was zu tun ist 17" }, { "id": 18, "Aufgabe": "Was tun? 18" }, { "id": 19, "Aufgabe": "Zu tun 19" }, { "id": 20, "Aufgabe": "20 zu tun" } ] } }, { "id": 19, "Aufgabe": "Was tun 19", "user": { "id": 5, "name": "Ito", "todos": [ { "id": 17, "Aufgabe": "Was zu tun ist 17" }, { "id": 18, "Aufgabe": "Was tun? 18" }, { "id": 19, "Aufgabe": "Zu tun 19" }, { "id": 20, "Aufgabe": "20 zu tun" } ] } }, { "id": 20, "Aufgabe": "20 zu tun", "user": { "id": 5, "name": "Ito", "todos": [ { "id": 17, "Aufgabe": "Was zu tun ist 17" }, { "id": 18, "Aufgabe": "Was tun? 18" }, { "id": 19, "Aufgabe": "Zu tun 19" }, { "id": 20, "Aufgabe": "20 zu tun" } ] } } ] } }, { "id": 20, "Aufgabe": "20 zu tun", "user": { "id": 5, "name": "Ito", "todos": [ { "id": 17, "Aufgabe": "Was tun 17", "user": { "id": 5, "name": "Ito", "todos": [ { "id": 17, "Aufgabe": "Was zu tun ist 17" }, { "id": 18, "Aufgabe": "Was tun? 18" }, { "id": 19, "Aufgabe": "Zu tun 19" }, { "id": 20, "Aufgabe": "20 zu tun" } ] } }, { "id": 18, "Aufgabe": "Was zu tun ist 18", "user": { "id": 5, "name": "Ito", "todos": [ { "id": 17, "Aufgabe": "Was zu tun ist 17" }, { "id": 18, "Aufgabe": "Was tun? 18" }, { "id": 19, "Aufgabe": "Zu tun 19" }, { "id": 20, "Aufgabe": "20 zu tun" } ] } }, { "id": 19, "Aufgabe": "Was tun 19", "user": { "id": 5, "name": "Ito", "todos": [ { "id": 17, "Aufgabe": "Was zu tun ist 17" }, { "id": 18, "Aufgabe": "Was tun? 18" }, { "id": 19, "Aufgabe": "Zu tun 19" }, { "id": 20, "Aufgabe": "20 zu tun" } ] } }, { "id": 20, "Aufgabe": "20 zu tun", "user": { "id": 5, "name": "Ito", "todos": [ { "id": 17, "Aufgabe": "Was zu tun ist 17" }, { "id": 18, "Aufgabe": "Was tun? 18" }, { "id": 19, "Aufgabe": "Zu tun 19" }, { "id": 20, "Aufgabe": "20 zu tun" } ] } } ] } } ] } }, { "id": 20, "Aufgabe": "20 zu tun", "user": { "id": 5, "name": "Ito", "todos": [ { "id": 17, "Aufgabe": "Was tun 17", "user": { "id": 5, "name": "Ito", "todos": [ { "id": 17, "Aufgabe": "Was tun 17", "user": { "id": 5, "name": "Ito", "todos": [ { "id": 17, "Aufgabe": "Was zu tun ist 17" }, { "id": 18, "Aufgabe": "Was tun? 18" }, { "id": 19, "Aufgabe": "Zu tun 19" }, { "id": 20, "Aufgabe": "20 zu tun" } ] } }, { "id": 18, "Aufgabe": "Was zu tun ist 18", "user": { "id": 5, "name": "Ito", "todos": [ { "id": 17, "Aufgabe": "Was zu tun ist 17" }, { "id": 18, "Aufgabe": "Was tun? 18" }, { "id": 19, "Aufgabe": "Zu tun 19" }, { "id": 20, "Aufgabe": "20 zu tun" } ] } }, { "id": 19, "Aufgabe": "Was tun 19", "user": { "id": 5, "name": "Ito", "todos": [ { "id": 17, "Aufgabe": "Was zu tun ist 17" }, { "id": 18, "Aufgabe": "Was tun? 18" }, { "id": 19, "Aufgabe": "Zu tun 19" }, { "id": 20, "Aufgabe": "20 zu tun" } ] } }, { "id": 20, "Aufgabe": "20 zu tun", "user": { "id": 5, "name": "Ito", "todos": [ { "id": 17, "Aufgabe": "Was zu tun ist 17" }, { "id": 18, "Aufgabe": "Was tun? 18" }, { "id": 19, "Aufgabe": "Zu tun 19" }, { "id": 20, "Aufgabe": "20 zu tun" } ] } } ] } }, { "id": 18, "Aufgabe": "Was zu tun ist 18", "user": { "id": 5, "name": "Ito", "todos": [ { "id": 17, "Aufgabe": "Was tun 17", "user": { "id": 5, "name": "Ito", "todos": [ { "id": 17, "Aufgabe": "Was zu tun ist 17" }, { "id": 18, "Aufgabe": "Was tun? 18" }, { "id": 19, "Aufgabe": "Zu tun 19" }, { "id": 20, "Aufgabe": "20 zu tun" } ] } }, { "id": 18, "Aufgabe": "Was zu tun ist 18", "user": { "id": 5, "name": "Ito", "todos": [ { "id": 17, "Aufgabe": "Was zu tun ist 17" }, { "id": 18, "Aufgabe": "Was tun? 18" }, { "id": 19, "Aufgabe": "Zu tun 19" }, { "id": 20, "Aufgabe": "20 zu tun" } ] } }, { "id": 19, "Aufgabe": "Was tun 19", "user": { "id": 5, "name": "Ito", "todos": [ { "id": 17, "Aufgabe": "Was zu tun ist 17" }, { "id": 18, "Aufgabe": "Was tun? 18" }, { "id": 19, "Aufgabe": "Zu tun 19" }, { "id": 20, "Aufgabe": "20 zu tun" } ] } }, { "id": 20, "Aufgabe": "20 zu tun", "user": { "id": 5, "name": "Ito", "todos": [ { "id": 17, "Aufgabe": "Was zu tun ist 17" }, { "id": 18, "Aufgabe": "Was tun? 18" }, { "id": 19, "Aufgabe": "Zu tun 19" }, { "id": 20, "Aufgabe": "20 zu tun" } ] } } ] } }, { "id": 19, "Aufgabe": "Was tun 19", "user": { "id": 5, "name": "Ito", "todos": [ { "id": 17, "Aufgabe": "Was tun 17", "user": { "id": 5, "name": "Ito", "todos": [ { "id": 17, "Aufgabe": "Was zu tun ist 17" }, { "id": 18, "Aufgabe": "Was tun? 18" }, { "id": 19, "Aufgabe": "Zu tun 19" }, { "id": 20, "Aufgabe": "20 zu tun" } ] } }, { "id": 18, "Aufgabe": "Was zu tun ist 18", "user": { "id": 5, "name": "Ito", "todos": [ { "id": 17, "Aufgabe": "Was zu tun ist 17" }, { "id": 18, "Aufgabe": "Was tun? 18" }, { "id": 19, "Aufgabe": "Zu tun 19" }, { "id": 20, "Aufgabe": "20 zu tun" } ] } }, { "id": 19, "Aufgabe": "Was tun 19", "user": { "id": 5, "name": "Ito", "todos": [ { "id": 17, "Aufgabe": "Was zu tun ist 17" }, { "id": 18, "Aufgabe": "Was tun? 18" }, { "id": 19, "Aufgabe": "Zu tun 19" }, { "id": 20, "Aufgabe": "20 zu tun" } ] } }, { "id": 20, "Aufgabe": "20 zu tun", "user": { "id": 5, "name": "Ito", "todos": [ { "id": 17, "Aufgabe": "Was zu tun ist 17" }, { "id": 18, "Aufgabe": "Was tun? 18" }, { "id": 19, "Aufgabe": "Zu tun 19" }, { "id": 20, "Aufgabe": "20 zu tun" } ] } } ] } }, { "id": 20, "Aufgabe": "20 zu tun", "user": { "id": 5, "name": "Ito", "todos": [ { "id": 17, "Aufgabe": "Was tun 17", "user": { "id": 5, "name": "Ito", "todos": [ { "id": 17, "Aufgabe": "Was zu tun ist 17" }, { "id": 18, "Aufgabe": "Was tun? 18" }, { "id": 19, "Aufgabe": "Zu tun 19" }, { "id": 20, "Aufgabe": "20 zu tun" } ] } }, { "id": 18, "Aufgabe": "Was zu tun ist 18", "user": { "id": 5, "name": "Ito", "todos": [ { "id": 17, "Aufgabe": "Was zu tun ist 17" }, { "id": 18, "Aufgabe": "Was tun? 18" }, { "id": 19, "Aufgabe": "Zu tun 19" }, { "id": 20, "Aufgabe": "20 zu tun" } ] } }, { "id": 19, "Aufgabe": "Was tun 19", "user": { "id": 5, "name": "Ito", "todos": [ { "id": 17, "Aufgabe": "Was zu tun ist 17" }, { "id": 18, "Aufgabe": "Was tun? 18" }, { "id": 19, "Aufgabe": "Zu tun 19" }, { "id": 20, "Aufgabe": "20 zu tun" } ] } }, { "id": 20, "Aufgabe": "20 zu tun", "user": { "id": 5, "name": "Ito", "todos": [ { "id": 17, "Aufgabe": "Was zu tun ist 17" }, { "id": 18, "Aufgabe": "Was tun? 18" }, { "id": 19, "Aufgabe": "Zu tun 19" }, { "id": 20, "Aufgabe": "20 zu tun" } ] } } ] } } ] } } ] } }
2020/10/22 00:34:57 SELECT * FROM todo 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 5 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 5 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 3 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 4 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 3 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 3 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 3 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 4 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 4 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 5 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 5 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 4 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 5 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 5 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 5 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 5 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 5 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 3 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 1 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 1 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 1 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 1 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 1 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 1 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 1 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 1 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 1 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 1 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 1 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 1 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 2 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 2 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 2 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 2 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 2 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 2 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 2 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 2 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 2 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 2 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 2 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 2 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 4 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 4 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 3 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 3 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 3 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 3 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 3 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 3 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 3 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 3 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 3 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 3 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 3 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 3 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 3 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 3 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 3 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 2 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 2 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 4 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 3 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 4 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 3 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 3 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 5 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 5 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 5 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 5 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 5 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 5 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 5 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 5 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 5 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 5 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 5 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 5 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 5 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 5 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 5 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 5 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 5 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 5 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 5 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 5 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 5 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 5 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 5 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 5 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 5 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 2 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 2 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 5 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 4 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 4 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 4 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 4 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 4 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 5 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 3 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 3 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 3 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 3 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 3 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 3 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 5 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 3 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 3 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 3 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 3 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 3 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 3 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 5 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 2 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 5 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 3 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 3 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 3 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 2 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 4 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 4 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 4 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 4 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 4 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 4 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 4 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 3 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 3 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 3 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 3 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 3 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 3 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 3 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 3 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 3 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 5 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 5 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 4 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 5 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 5 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 5 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 5 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 5 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 5 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 5 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 5 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 5 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 5 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 5 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 5 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 5 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 5 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 3 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 5 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 2 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 5 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 5 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 5 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 5 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 4 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 5 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 5 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 5 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 5 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 3 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 3 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 3 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 3 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 1 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 3 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 5 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 3 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 3 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 3 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 3 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 3 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 3 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 5 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 1 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 1 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 5 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 5 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 5 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 5 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 5 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 5 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 1 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 1 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 1 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 2 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 5 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 5 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 5 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 5 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 1 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 1 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 1 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 1 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 1 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 1 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 1 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 3 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 1 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 1 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 1 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 1 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 1 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 1 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 2 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 3 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 1 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 3 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 1 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 2 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 3 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 2 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 2 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 1 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 2 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 2 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 2 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 2 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 2 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 2 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 2 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 2 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 2 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 2 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 2 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 2 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 5 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 2 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 2 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 2 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 2 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 2 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 2 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 2 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 2 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 2 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 2 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 2 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 3 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 2 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 2 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 2 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 5 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 5 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 5 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 5 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 2 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 2 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 2 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 2 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 4 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 3 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 3 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 4 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 1 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 4 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 4 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 1 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 1 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 2 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 3 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 3 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 3 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 3 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 3 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 3 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 3 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 3 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 2 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 2 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 2 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 5 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 5 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 5 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 5 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 5 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 5 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 5 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 5 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 5 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 5 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 5 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 5 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 5 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 5 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 5 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 5 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 5 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 5 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 5 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 4 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 3 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 5 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 5 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 5 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 5 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 3 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 3 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 3 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 1 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 5 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 3 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 3 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 3 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 5 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 1 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 5 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 5 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 5 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 5 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 5 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 5 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 4 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 4 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 4 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 4 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 4 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 4 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 4 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 4 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 4 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 4 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 3 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 3 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 4 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 3 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 3 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 4 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 3 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 3 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 3 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 3 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 3 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 3 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 3 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 3 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 3 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 3 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 3 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 3 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 3 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 3 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 3 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 3 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 3 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 3 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 3 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 3 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 3 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 3 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 3 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 3 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 1 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 1 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 1 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 4 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 1 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 4 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 1 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 1 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 4 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 4 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 4 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 4 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 2 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 2 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 2 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 2 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 2 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 4 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 4 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 4 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 4 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 4 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 4 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 4 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 5 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 5 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 2 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 5 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 5 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 4 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 5 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 5 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 5 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 5 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 5 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 5 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 3 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 3 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 5 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 5 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 5 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 5 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 5 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 5 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 5 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 5 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 5 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 5 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 5 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 5 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 5 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 5 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 5 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 5 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 3 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 3 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 3 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 5 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 5 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 5 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 5 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 5 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 5 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 5 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 5 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 5 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 5 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 5 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 5 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 5 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 1 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 1 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 3 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 1 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 2 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 3 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 3 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 3 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 1 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 3 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 3 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 3 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 1 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 1 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 1 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 1 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 4 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 4 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 1 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 3 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 3 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 4 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 4 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 4 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 4 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 4 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 4 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 4 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 4 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 4 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 2 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 1 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 2 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 2 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 1 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 3 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 1 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 1 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 1 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 1 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 1 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 1 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 1 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 3 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 3 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 3 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 3 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 4 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 3 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 3 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 3 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 3 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 3 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 3 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 3 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 3 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 3 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 3 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 1 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 1 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 2 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 1 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 1 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 2 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 2 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 1 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 1 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 1 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 1 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 3 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 3 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 3 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 3 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 3 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 3 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 3 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 3 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 3 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 3 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 3 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 2 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 3 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 2 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 2 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 2 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 2 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 3 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 2 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 3 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 3 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 3 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 3 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 3 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 3 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 3 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 3 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 3 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 3 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 3 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 1 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 4 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 1 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 1 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 1 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 1 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 1 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 5 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 5 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 5 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 5 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 3 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 5 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 5 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 5 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 3 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 5 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 1 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 5 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 5 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 5 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 5 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 5 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 3 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 3 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 3 2020/10/22 00:34:57 SELECT * FROM user WHERE id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 4 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 5 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 5 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 5 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 5 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 3 2020/10/22 00:34:57 SELECT * FROM todo WHERE user_id = 4
Auf diese Weise wird eine große Anzahl von SQL-Problemen ausgegeben, wenn Sie das Schema frei definieren, ohne über irgendetwas nachzudenken, und es unter Berücksichtigung der Vielseitigkeit zu einem einfachen SQL-Problem machen.
In Bezug auf die letzte Zirkelreferenzstruktur wird Frank von DOS angegriffen, wenn der Client für die Öffentlichkeit zugänglich ist, wenn keine Einschränkungen angewendet werden. Die Gegenmaßnahmen werden jedoch später beschrieben.
Betrachten Sie zunächst Maßnahmen zur Reduzierung der Anzahl der SQL-Ausgaben.
Einfach ausgedrückt, alles, was Sie tun müssen, ist, für jeden Resolver ein optimiertes SQL vorzubereiten.
Mit anderen Worten
Resolver für Typ User todos: [Todo]
Ohne einen Resolver für Typ Todo user: User!
Vorzubereiten
(r *queryResolver) Users(ctx context.Context) ([]*model.User, error)
(r *queryResolver) Todos(ctx context.Context) ([]*model.Todo, error)
Dies bedeutet, dass SQL jedes Mal gemäß dem in die Anforderung geladenen Inhalt generiert werden sollte.
Jedoch,
Wenn Sie eine solche Maßnahme ergreifen, bereiten Sie am Ende eine komplizierte SQL-Generierungslogik vor, um auf die äußerst flexible GraphQL-Abfrageanforderung zu antworten.
Ich möchte SQL möglichst einfach halten.
Deshalb werden Dataloader angezeigt.
Grundsätzlich wird die Quelle automatisch wie folgt generiert. https://gqlgen.com/reference/dataloaders/#dataloader
Nun, es ist geschrieben in ↑,
go get github.com/vektah/dataloaden
Holen Sie sich das dataloaden
mit und in den Pfad, in dem Sie die Quelle automatisch generieren möchten (z. B. diesmalstudy-gqlgen / dataloaders / graph /
)
go run github.com/vektah/dataloaden UserLoader int *github.com/sky0621/study-gqlgen/dataloaders/graph/model.User
Wann
go run github.com/vektah/dataloaden TodoLoader int64 []*github.com/sky0621/study-gqlgen/dataloaders/graph/model.Todo
Und. Das "int" in der Mitte ist der Typ des Schlüsselelements, das den "Benutzer" oder "todo" eindeutig identifiziert. In diesem Fall ist sowohl für die Tabelle "user" als auch für die Tabelle "todo" PK auf "integer" gesetzt, also auf "int".
Wenn PK eine Zeichenfolge wie UUID ist
go run github.com/vektah/dataloaden UserLoader string *github.com/sky0621/study-gqlgen/dataloaders/graph/model.User
Du kannst es schaffen.
In Bezug auf den zu generierenden Typ ist model.User
nur ein Zeiger, und model.Todo
wird in Scheiben geschnitten.
Dies liegt daran, dass jede Verwendung wie folgt unterschiedlich ist.
model.User
Nachdem mehrere Aufgaben vom Resolver "todos" erfasst wurden, wird der Resolver ("(r * todoResolver) User (~~)") aufgerufen und dort verwendet, der den jedem ToDo zugeordneten Benutzer erfasst.
Dort muss nur ein Benutzer mit 1ToDo verknüpft werden. Bereiten Sie daher einen Datenlader vor, der nur mit einem Zeiger zurückkehrt.
model.Todo
Nachdem mehrere "Benutzer" vom "Benutzer" -Resolver erfasst wurden, wird der Resolver ("(r * userResolver) Todos (~~)") aufgerufen, der die jedem Benutzer zugeordneten Aufgaben übernimmt.
Dort werden mehrere Aufgaben erfasst, die einem Benutzer zugeordnet sind. Bereiten Sie daher einen Datenlader vor, der in Slices zurückgegeben wird.
Die durch den obigen Befehl "dataloaden" automatisch erzeugte Quelle lautet wie folgt.
userloader_gen.go
// Code generated by github.com/vektah/dataloaden, DO NOT EDIT.
package graph
import (
"sync"
"time"
"github.com/sky0621/study-gqlgen/dataloaders/graph/model"
)
// UserLoaderConfig captures the config to create a new UserLoader
type UserLoaderConfig struct {
// Fetch is a method that provides the data for the loader
Fetch func(keys []int) ([]*model.User, []error)
// Wait is how long wait before sending a batch
Wait time.Duration
// MaxBatch will limit the maximum number of keys to send in one batch, 0 = not limit
MaxBatch int
}
// NewUserLoader creates a new UserLoader given a fetch, wait, and maxBatch
func NewUserLoader(config UserLoaderConfig) *UserLoader {
return &UserLoader{
fetch: config.Fetch,
wait: config.Wait,
maxBatch: config.MaxBatch,
}
}
// UserLoader batches and caches requests
type UserLoader struct {
// this method provides the data for the loader
fetch func(keys []int) ([]*model.User, []error)
// how long to done before sending a batch
wait time.Duration
// this will limit the maximum number of keys to send in one batch, 0 = no limit
maxBatch int
// INTERNAL
// lazily created cache
cache map[int]*model.User
// the current batch. keys will continue to be collected until timeout is hit,
// then everything will be sent to the fetch method and out to the listeners
batch *userLoaderBatch
// mutex to prevent races
mu sync.Mutex
}
type userLoaderBatch struct {
keys []int
data []*model.User
error []error
closing bool
done chan struct{}
}
// Load a User by key, batching and caching will be applied automatically
func (l *UserLoader) Load(key int) (*model.User, error) {
return l.LoadThunk(key)()
}
// LoadThunk returns a function that when called will block waiting for a User.
// This method should be used if you want one goroutine to make requests to many
// different data loaders without blocking until the thunk is called.
func (l *UserLoader) LoadThunk(key int) func() (*model.User, error) {
l.mu.Lock()
if it, ok := l.cache[key]; ok {
l.mu.Unlock()
return func() (*model.User, error) {
return it, nil
}
}
if l.batch == nil {
l.batch = &userLoaderBatch{done: make(chan struct{})}
}
batch := l.batch
pos := batch.keyIndex(l, key)
l.mu.Unlock()
return func() (*model.User, error) {
<-batch.done
var data *model.User
if pos < len(batch.data) {
data = batch.data[pos]
}
var err error
// its convenient to be able to return a single error for everything
if len(batch.error) == 1 {
err = batch.error[0]
} else if batch.error != nil {
err = batch.error[pos]
}
if err == nil {
l.mu.Lock()
l.unsafeSet(key, data)
l.mu.Unlock()
}
return data, err
}
}
// LoadAll fetches many keys at once. It will be broken into appropriate sized
// sub batches depending on how the loader is configured
func (l *UserLoader) LoadAll(keys []int) ([]*model.User, []error) {
results := make([]func() (*model.User, error), len(keys))
for i, key := range keys {
results[i] = l.LoadThunk(key)
}
users := make([]*model.User, len(keys))
errors := make([]error, len(keys))
for i, thunk := range results {
users[i], errors[i] = thunk()
}
return users, errors
}
// LoadAllThunk returns a function that when called will block waiting for a Users.
// This method should be used if you want one goroutine to make requests to many
// different data loaders without blocking until the thunk is called.
func (l *UserLoader) LoadAllThunk(keys []int) func() ([]*model.User, []error) {
results := make([]func() (*model.User, error), len(keys))
for i, key := range keys {
results[i] = l.LoadThunk(key)
}
return func() ([]*model.User, []error) {
users := make([]*model.User, len(keys))
errors := make([]error, len(keys))
for i, thunk := range results {
users[i], errors[i] = thunk()
}
return users, errors
}
}
// Prime the cache with the provided key and value. If the key already exists, no change is made
// and false is returned.
// (To forcefully prime the cache, clear the key first with loader.clear(key).prime(key, value).)
func (l *UserLoader) Prime(key int, value *model.User) bool {
l.mu.Lock()
var found bool
if _, found = l.cache[key]; !found {
// make a copy when writing to the cache, its easy to pass a pointer in from a loop var
// and end up with the whole cache pointing to the same value.
cpy := *value
l.unsafeSet(key, &cpy)
}
l.mu.Unlock()
return !found
}
// Clear the value at key from the cache, if it exists
func (l *UserLoader) Clear(key int) {
l.mu.Lock()
delete(l.cache, key)
l.mu.Unlock()
}
func (l *UserLoader) unsafeSet(key int, value *model.User) {
if l.cache == nil {
l.cache = map[int]*model.User{}
}
l.cache[key] = value
}
// keyIndex will return the location of the key in the batch, if its not found
// it will add the key to the batch
func (b *userLoaderBatch) keyIndex(l *UserLoader, key int) int {
for i, existingKey := range b.keys {
if key == existingKey {
return i
}
}
pos := len(b.keys)
b.keys = append(b.keys, key)
if pos == 0 {
go b.startTimer(l)
}
if l.maxBatch != 0 && pos >= l.maxBatch-1 {
if !b.closing {
b.closing = true
l.batch = nil
go b.end(l)
}
}
return pos
}
func (b *userLoaderBatch) startTimer(l *UserLoader) {
time.Sleep(l.wait)
l.mu.Lock()
// we must have hit a batch limit and are already finalizing this batch
if b.closing {
l.mu.Unlock()
return
}
l.batch = nil
l.mu.Unlock()
b.end(l)
}
func (b *userLoaderBatch) end(l *UserLoader) {
b.data, b.error = l.fetch(b.keys)
close(b.done)
}
todoloader_gen.go
// Code generated by github.com/vektah/dataloaden, DO NOT EDIT.
package graph
import (
"sync"
"time"
"github.com/sky0621/study-gqlgen/dataloaders/graph/model"
)
// TodoLoaderConfig captures the config to create a new TodoLoader
type TodoLoaderConfig struct {
// Fetch is a method that provides the data for the loader
Fetch func(keys []int64) ([][]*model.Todo, []error)
// Wait is how long wait before sending a batch
Wait time.Duration
// MaxBatch will limit the maximum number of keys to send in one batch, 0 = not limit
MaxBatch int
}
// NewTodoLoader creates a new TodoLoader given a fetch, wait, and maxBatch
func NewTodoLoader(config TodoLoaderConfig) *TodoLoader {
return &TodoLoader{
fetch: config.Fetch,
wait: config.Wait,
maxBatch: config.MaxBatch,
}
}
// TodoLoader batches and caches requests
type TodoLoader struct {
// this method provides the data for the loader
fetch func(keys []int64) ([][]*model.Todo, []error)
// how long to done before sending a batch
wait time.Duration
// this will limit the maximum number of keys to send in one batch, 0 = no limit
maxBatch int
// INTERNAL
// lazily created cache
cache map[int64][]*model.Todo
// the current batch. keys will continue to be collected until timeout is hit,
// then everything will be sent to the fetch method and out to the listeners
batch *todoLoaderBatch
// mutex to prevent races
mu sync.Mutex
}
type todoLoaderBatch struct {
keys []int64
data [][]*model.Todo
error []error
closing bool
done chan struct{}
}
// Load a Todo by key, batching and caching will be applied automatically
func (l *TodoLoader) Load(key int64) ([]*model.Todo, error) {
return l.LoadThunk(key)()
}
// LoadThunk returns a function that when called will block waiting for a Todo.
// This method should be used if you want one goroutine to make requests to many
// different data loaders without blocking until the thunk is called.
func (l *TodoLoader) LoadThunk(key int64) func() ([]*model.Todo, error) {
l.mu.Lock()
if it, ok := l.cache[key]; ok {
l.mu.Unlock()
return func() ([]*model.Todo, error) {
return it, nil
}
}
if l.batch == nil {
l.batch = &todoLoaderBatch{done: make(chan struct{})}
}
batch := l.batch
pos := batch.keyIndex(l, key)
l.mu.Unlock()
return func() ([]*model.Todo, error) {
<-batch.done
var data []*model.Todo
if pos < len(batch.data) {
data = batch.data[pos]
}
var err error
// its convenient to be able to return a single error for everything
if len(batch.error) == 1 {
err = batch.error[0]
} else if batch.error != nil {
err = batch.error[pos]
}
if err == nil {
l.mu.Lock()
l.unsafeSet(key, data)
l.mu.Unlock()
}
return data, err
}
}
// LoadAll fetches many keys at once. It will be broken into appropriate sized
// sub batches depending on how the loader is configured
func (l *TodoLoader) LoadAll(keys []int64) ([][]*model.Todo, []error) {
results := make([]func() ([]*model.Todo, error), len(keys))
for i, key := range keys {
results[i] = l.LoadThunk(key)
}
todos := make([][]*model.Todo, len(keys))
errors := make([]error, len(keys))
for i, thunk := range results {
todos[i], errors[i] = thunk()
}
return todos, errors
}
// LoadAllThunk returns a function that when called will block waiting for a Todos.
// This method should be used if you want one goroutine to make requests to many
// different data loaders without blocking until the thunk is called.
func (l *TodoLoader) LoadAllThunk(keys []int64) func() ([][]*model.Todo, []error) {
results := make([]func() ([]*model.Todo, error), len(keys))
for i, key := range keys {
results[i] = l.LoadThunk(key)
}
return func() ([][]*model.Todo, []error) {
todos := make([][]*model.Todo, len(keys))
errors := make([]error, len(keys))
for i, thunk := range results {
todos[i], errors[i] = thunk()
}
return todos, errors
}
}
// Prime the cache with the provided key and value. If the key already exists, no change is made
// and false is returned.
// (To forcefully prime the cache, clear the key first with loader.clear(key).prime(key, value).)
func (l *TodoLoader) Prime(key int64, value []*model.Todo) bool {
l.mu.Lock()
var found bool
if _, found = l.cache[key]; !found {
// make a copy when writing to the cache, its easy to pass a pointer in from a loop var
// and end up with the whole cache pointing to the same value.
cpy := make([]*model.Todo, len(value))
copy(cpy, value)
l.unsafeSet(key, cpy)
}
l.mu.Unlock()
return !found
}
// Clear the value at key from the cache, if it exists
func (l *TodoLoader) Clear(key int64) {
l.mu.Lock()
delete(l.cache, key)
l.mu.Unlock()
}
func (l *TodoLoader) unsafeSet(key int64, value []*model.Todo) {
if l.cache == nil {
l.cache = map[int64][]*model.Todo{}
}
l.cache[key] = value
}
// keyIndex will return the location of the key in the batch, if its not found
// it will add the key to the batch
func (b *todoLoaderBatch) keyIndex(l *TodoLoader, key int64) int {
for i, existingKey := range b.keys {
if key == existingKey {
return i
}
}
pos := len(b.keys)
b.keys = append(b.keys, key)
if pos == 0 {
go b.startTimer(l)
}
if l.maxBatch != 0 && pos >= l.maxBatch-1 {
if !b.closing {
b.closing = true
l.batch = nil
go b.end(l)
}
}
return pos
}
func (b *todoLoaderBatch) startTimer(l *TodoLoader) {
time.Sleep(l.wait)
l.mu.Lock()
// we must have hit a batch limit and are already finalizing this batch
if b.closing {
l.mu.Unlock()
return
}
l.batch = nil
l.mu.Unlock()
b.end(l)
}
func (b *todoLoaderBatch) end(l *TodoLoader) {
b.data, b.error = l.fetch(b.keys)
close(b.done)
}
Die Theorie ist wie folgt. Wenn beispielsweise alle Aufgaben einschließlich Benutzerinformationen erfasst wurden, wurde für jede Anforderung die folgende SQL ausgegeben.
2020/10/22 00:24:44 SELECT * FROM todo
2020/10/22 00:24:44 SELECT * FROM user WHERE id = 5
2020/10/22 00:24:44 SELECT * FROM user WHERE id = 3
2020/10/22 00:24:44 SELECT * FROM user WHERE id = 1
2020/10/22 00:24:44 SELECT * FROM user WHERE id = 1
2020/10/22 00:24:44 SELECT * FROM user WHERE id = 1
2020/10/22 00:24:44 SELECT * FROM user WHERE id = 1
2020/10/22 00:24:44 SELECT * FROM user WHERE id = 2
2020/10/22 00:24:44 SELECT * FROM user WHERE id = 2
2020/10/22 00:24:44 SELECT * FROM user WHERE id = 2
2020/10/22 00:24:44 SELECT * FROM user WHERE id = 2
2020/10/22 00:24:44 SELECT * FROM user WHERE id = 4
2020/10/22 00:24:44 SELECT * FROM user WHERE id = 3
2020/10/22 00:24:44 SELECT * FROM user WHERE id = 3
2020/10/22 00:24:44 SELECT * FROM user WHERE id = 3
2020/10/22 00:24:44 SELECT * FROM user WHERE id = 4
2020/10/22 00:24:44 SELECT * FROM user WHERE id = 5
2020/10/22 00:24:44 SELECT * FROM user WHERE id = 4
2020/10/22 00:24:44 SELECT * FROM user WHERE id = 5
2020/10/22 00:24:44 SELECT * FROM user WHERE id = 4
2020/10/22 00:24:44 SELECT * FROM user WHERE id = 5
Auf der anderen Seite wartet der Datenlader beim Empfangen einer Anforderung und beim Auslösen verschiedener Resolver eine bestimmte Zeitspanne (oder bis eine bestimmte Anzahl von Such-IDs akkumuliert ist). Infolgedessen wird das, was früher "WHERE id = 1" usw. war und mehrmals SQL ausgeben musste, auf "WHERE id IN (1, 2, 3, ..)" einmal gesetzt (2, abhängig von der Anzahl der Fälle). ~ N mal).
Um dies zu erreichen, definieren Sie Middleware, die den HTTP-Anforderungsbereich einbindet, und geben Sie eine SQL-Anweisung vom Typ ID-Zusammenfassung aus, während Sie die automatisch generierte Quellfunktion verwenden.
server.go(package,Die import-Anweisung wird weggelassen)
func main() {
db := sqlx.MustOpen("sqlite3", "./data.db")
http.Handle("/", playground.Handler("GraphQL playground", "/query"))
http.Handle("/query", graph.Middleware( <--hinzufügen!
db,
handler.NewDefaultServer(
generated.NewExecutableSchema(
generated.Config{
Resolvers: &graph.Resolver{
DB: db,
},
},
),
)),
)
log.Fatal(http.ListenAndServe(":8080", nil))
}
Wickeln Sie den Handler mit graph.Middleware (~~)
ein.
Es gibt keine detaillierte Erklärung, da die Schrift die unten beschriebene Quelle nachzeichnet. https://gqlgen.com/reference/dataloaders/#dataloader
Dies ermöglicht es, das durch die Abruffunktion in "UserLoader" und "TodoLoader" definierte SQL-Problem aufzurufen, wenn auf maximal 1 Millisekunde gewartet wird oder wenn maximal 100 IDs akkumuliert werden.
graph/dataloaders.go
package graph
import (
"context"
"log"
"net/http"
"strconv"
"strings"
"time"
"github.com/jmoiron/sqlx"
"github.com/sky0621/study-gqlgen/dataloaders/graph/model"
)
const loadersKey = "dataLoaders"
type Loaders struct {
UsersByIDs UserLoader
TodosByUserIDs TodoLoader
}
func Middleware(conn *sqlx.DB, next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
ctx := context.WithValue(r.Context(), loadersKey, &Loaders{
UsersByIDs: UserLoader{
maxBatch: 100,
wait: 1 * time.Millisecond,
//Als Ergebnis des Wartens auf bis zu 1 Millisekunde oder eines ID-Slice für bis zu 100 GraphQL-Abfragen wird unter den Namen-IDs übergeben.
fetch: func(ids []int64) ([]*model.User, []error) {
if len(ids) == 0 {
return nil, nil
}
sql := "SELECT * FROM user WHERE id IN (" + toPKs(ids) + ")"
log.Print(sql)
var users []*model.User
if err := conn.SelectContext(r.Context(), &users, sql); err != nil {
log.Print(err)
return nil, []error{err}
}
//Sie müssen die Daten für jede ID in IDs zuordnen.
userById := map[int64]*model.User{}
for _, user := range users {
userById[user.ID] = user
}
results := make([]*model.User, len(ids))
for i, id := range ids {
results[i] = userById[id]
}
return results, nil
},
},
TodosByUserIDs: TodoLoader{
maxBatch: 100,
wait: 1 * time.Millisecond,
//Als Ergebnis des Wartens auf bis zu 1 Millisekunde oder eines ID-Slice für bis zu 100 GraphQL-Abfragen wird unter den Namen-IDs übergeben.
fetch: func(userIDs []int64) ([][]*model.Todo, []error) {
if len(userIDs) == 0 {
return nil, nil
}
sql := "SELECT * FROM todo WHERE user_id IN (" + toPKs(userIDs) + ")"
log.Print(sql)
var todos []*model.Todo
if err := conn.SelectContext(r.Context(), &todos, sql); err != nil {
log.Print(err)
return nil, []error{err}
}
//Sie müssen die Daten für jede ID in IDs zuordnen.
todoByUserId := map[int64][]*model.Todo{}
for _, todo := range todos {
todoByUserId[todo.UserID] = append(todoByUserId[todo.UserID], todo)
}
results := make([][]*model.Todo, len(userIDs))
for i, id := range userIDs {
results[i] = todoByUserId[id]
}
return results, nil
},
},
})
r = r.WithContext(ctx)
next.ServeHTTP(w, r)
})
}
func For(ctx context.Context) *Loaders {
return ctx.Value(loadersKey).(*Loaders)
}
func toPKs(ids []int64) string {
//Konvertieren Sie IDs in ein Formular, das in der IN-Klausel einer SQL-Anweisung angegeben werden kann
var pks []string
for _, id := range ids {
pks = append(pks, strconv.FormatInt(id, 10))
}
return strings.Join(pks, ",")
}
Vor der Verwendung von dataloader wurde die SQL-Ausgabe für die ToDo-Erfassung für jeden Benutzer in jeder der folgenden Funktionen geschrieben, aber die SQL-Ausgabe für die Benutzererfassung für jedes ToDo wurde geschrieben. Da die Logik jedoch an die Seite des Datenladers gesendet wurde, ist das Innere des Resolvers wie folgt einfach. werden.
go:graph/schema.resolvers.go(Auszug nur für die Teile, die sich von vor Verwendung des Datenladers unterscheiden)
func (r *userResolver) Todos(ctx context.Context, obj *model.User) ([]*model.Todo, error) {
if obj == nil {
return []*model.Todo{}, nil
}
return For(ctx).TodosByUserIDs.Load(obj.ID)
}
func (r *todoResolver) User(ctx context.Context, obj *model.Todo) (*model.User, error) {
if obj == nil {
return nil, nil
}
return For(ctx).UsersByIDs.Load(obj.UserID)
}
Die Abfrage und die Ergebnisse sind dieselben wie vor der Verwendung von dataloader, daher nur das Ergebnis der SQL-Ausgabe. In diesem Fall erhöht sich die Anzahl der SQL-Probleme nicht entsprechend, unabhängig davon, wie viele Aufgaben oder Benutzer zunehmen.
Benutzer
(mit todos
Anfrage)2020/10/23 02:33:03 SELECT * FROM user
2020/10/23 02:33:03 SELECT * FROM todo WHERE user_id IN (5,1,3,4,2)
to dos
(mit` Benutzeranfrage)2020/10/23 02:33:59 SELECT * FROM todo
2020/10/23 02:33:59 SELECT * FROM user WHERE id IN (5,1,2,3,4)
Erstens ist es unmöglich, SQL für jede übergeordnete Information auszugeben, um die damit verbundenen Informationen und die Informationen der untergeordneten Hierarchie zu erhalten, aber es scheint, dass ein solches N + 1-Problem schon lange besteht. In den meisten Fällen bieten die Frameworks, die Sie häufig in Ihrer Sprache verwenden, Lösungen als Bibliotheken, sodass Sie sich dessen möglicherweise nicht bewusst sind.
Übrigens, wenn Sie sich an die automatische Generierung durch Dataloader gewöhnt haben, ist dies kein Problem, sondern was mit dem Schlüsseltyp zu tun ist (obwohl der wichtige Teil die automatische Generierung ist) und ob der Rückgabewert der Funktion ein Zeiger ist Zunächst herrscht große Verwirrung, da Sie entscheiden müssen, wie Sie es verwenden möchten, z. B. ob Sie es in Scheiben schneiden möchten.
Ich habe meine Bemühungen, aufgrund des Zirkelverweises der Schemastruktur so viele komplexe Abfragen wie möglich zu beantworten, erschöpft, daher werde ich eine weitere Gelegenheit nutzen.
Recommended Posts