From 774874137921c9c33c88e9f17cf4522eb52cd9c4 Mon Sep 17 00:00:00 2001 From: Drew DeVault Date: Tue, 14 Apr 2020 14:54:40 -0400 Subject: [PATCH] api: user { repositories }: use squirrel for SQL --- api/go.mod | 2 +- api/graph/schema.resolvers.go | 21 ++++++++++++--------- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/api/go.mod b/api/go.mod index 4229e0f..41eed32 100644 --- a/api/go.mod +++ b/api/go.mod @@ -3,7 +3,7 @@ module git.sr.ht/~sircmpwn/git.sr.ht/api go 1.14 require ( - git.sr.ht/~sircmpwn/getopt v0.0.0-20191230200459-23622cc906b3 // indirect + git.sr.ht/~sircmpwn/getopt v0.0.0-20191230200459-23622cc906b3 git.sr.ht/~sircmpwn/gqlgen v0.0.0-20200412134447-57d7234737d4 github.com/Masterminds/squirrel v1.2.0 github.com/cpuguy83/go-md2man/v2 v2.0.0 // indirect diff --git a/api/graph/schema.resolvers.go b/api/graph/schema.resolvers.go index 2048db2..ca87673 100644 --- a/api/graph/schema.resolvers.go +++ b/api/graph/schema.resolvers.go @@ -11,10 +11,12 @@ import ( "strings" "git.sr.ht/~sircmpwn/git.sr.ht/api/auth" + "git.sr.ht/~sircmpwn/git.sr.ht/api/database" "git.sr.ht/~sircmpwn/git.sr.ht/api/graph/generated" "git.sr.ht/~sircmpwn/git.sr.ht/api/graph/model" "git.sr.ht/~sircmpwn/git.sr.ht/api/loaders" "git.sr.ht/~sircmpwn/gqlgen/graphql" + sq "github.com/Masterminds/squirrel" "github.com/go-git/go-git/v5/plumbing" ) @@ -140,15 +142,16 @@ func (r *userResolver) Repositories(ctx context.Context, obj *model.User, count err error rows *sql.Rows ) - if rows, err = r.DB.QueryContext(ctx, ` - SELECT `+(&model.Repository{}).Columns(ctx, "repo")+` - FROM repository repo - WHERE - repo.owner_id = $1 - AND CASE WHEN $2 != 0 THEN repo.id < $2 ELSE true END - ORDER BY id DESC - LIMIT $3; - `, obj.ID, next, count); err != nil { + query := database. + Select(ctx, (&model.Repository{}).As(`repo`)). + From(`repository repo`). + Where(sq.And{ + sq.Expr(`repo.owner_id = ?`, obj.ID), + sq.Expr(`CASE WHEN ? != 0 THEN repo.id < ? ELSE true END`, next, next), + }). + OrderBy(`id DESC`). + Limit(uint64(*count)) + if rows, err = query.RunWith(r.DB).QueryContext(ctx); err != nil { panic(err) } defer rows.Close() -- 2.38.4