diff options
| author | Julie Qiu <julie@golang.org> | 2021-09-14 15:34:12 -0400 |
|---|---|---|
| committer | Julie Qiu <julie@golang.org> | 2021-09-20 20:07:48 +0000 |
| commit | a450401dda5da2fb2f47874402d7d05a74fee95a (patch) | |
| tree | 0e1dc344ac0de9a8d9a6aa294c5ec1c2d0f084ce /internal/database/database.go | |
| parent | 2890a233b666fb64d35bfbbcb8c116dd8afddba1 (diff) | |
| download | go-x-pkgsite-a450401dda5da2fb2f47874402d7d05a74fee95a.tar.xz | |
internal/database: add CollectInts
A CollectInts function is added as a shortcut for fetching IDs from a
single column.
Change-Id: Ide61b936382545a73dd9e7c623b6d26364cc8608
Reviewed-on: https://go-review.googlesource.com/c/pkgsite/+/349895
Trust: Julie Qiu <julie@golang.org>
Run-TryBot: Julie Qiu <julie@golang.org>
TryBot-Result: kokoro <noreply+kokoro@google.com>
Reviewed-by: Jamal Carvalho <jamal@golang.org>
Reviewed-by: Jonathan Amsterdam <jba@google.com>
Diffstat (limited to 'internal/database/database.go')
| -rw-r--r-- | internal/database/database.go | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/internal/database/database.go b/internal/database/database.go index ddfd0743..c6443347 100644 --- a/internal/database/database.go +++ b/internal/database/database.go @@ -538,6 +538,24 @@ func buildBulkUpdateQuery(table string, columns, types []string) string { ) } +// CollectInts runs the query, which must select for a single INTEGER or BIGINT +// column, and returns a slice of the resulting ints. +func (db *DB) CollectInts(ctx context.Context, query string, args ...interface{}) (ints []int, err error) { + defer derrors.WrapStack(&err, "DB.CollectInts(%q)", query) + err = db.RunQuery(ctx, query, func(rows *sql.Rows) error { + var i int + if err := rows.Scan(&i); err != nil { + return err + } + ints = append(ints, i) + return nil + }, args...) + if err != nil { + return nil, err + } + return ints, nil +} + // CollectStrings runs the query, which must select for a single string column, and returns // a slice of the resulting strings. func (db *DB) CollectStrings(ctx context.Context, query string, args ...interface{}) (ss []string, err error) { |
