From 895fa32707d718b8d9eed2926c1023e47b8441ea Mon Sep 17 00:00:00 2001 From: Drew DeVault Date: Mon, 11 May 2020 13:05:21 -0400 Subject: [PATCH] api: more cursor riggings --- api/graph/schema.resolvers.go | 34 ++++++++++++++++++++++++++-------- 1 file changed, 26 insertions(+), 8 deletions(-) diff --git a/api/graph/schema.resolvers.go b/api/graph/schema.resolvers.go index 742f2aa..4a1cc96 100644 --- a/api/graph/schema.resolvers.go +++ b/api/graph/schema.resolvers.go @@ -80,13 +80,18 @@ func (r *queryResolver) Repositories(ctx context.Context, cursor *model.Cursor, err error rows *sql.Rows ) + + if cursor == nil { + cursor = model.NewCursor(filter) + } + repo := (&model.Repository{}).As(`repo`) query := database. Select(ctx, repo). From(`repository repo`). - Where(`repo.owner_id = ?`, auth.ForContext(ctx).ID). - OrderBy(`repo.id DESC`). - Limit(25) + Where(`repo.owner_id = ?`, auth.ForContext(ctx).ID) + query = repo.ApplyCursor(query, cursor) + if rows, err = query.RunWith(r.DB).QueryContext(ctx); err != nil { panic(err) } @@ -100,8 +105,20 @@ func (r *queryResolver) Repositories(ctx context.Context, cursor *model.Cursor, } repos = append(repos, &repo) } - // TODO: Cursor - return &model.RepositoryCursor{repos, nil}, nil + + if len(repos) > cursor.Count { + cursor = &model.Cursor{ + Count: cursor.Count, + Next: strconv.Itoa(repos[len(repos)-1].ID), + OrderBy: `id DESC`, + Search: "", + } + repos = repos[:cursor.Count] + } else { + cursor = nil + } + + return &model.RepositoryCursor{repos, cursor}, nil } func (r *queryResolver) Repository(ctx context.Context, id int) (*model.Repository, error) { @@ -161,14 +178,15 @@ func (r *userResolver) Repositories(ctx context.Context, obj *model.User, cursor rows *sql.Rows ) + if cursor == nil { + cursor = model.NewCursor(filter) + } + repo := (&model.Repository{}).As(`repo`) query := database. Select(ctx, repo). From(`repository repo`). Where(`repo.owner_id = ?`, obj.ID) - if cursor == nil { - cursor = model.NewCursor(filter) - } query = repo.ApplyCursor(query, cursor) if rows, err = query.RunWith(r.DB).QueryContext(ctx); err != nil { -- 2.38.4