aboutsummaryrefslogtreecommitdiff
path: root/internal/database/database.go
diff options
context:
space:
mode:
authorJulie Qiu <julie@golang.org>2021-09-14 15:34:12 -0400
committerJulie Qiu <julie@golang.org>2021-09-20 20:07:48 +0000
commita450401dda5da2fb2f47874402d7d05a74fee95a (patch)
tree0e1dc344ac0de9a8d9a6aa294c5ec1c2d0f084ce /internal/database/database.go
parent2890a233b666fb64d35bfbbcb8c116dd8afddba1 (diff)
downloadgo-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.go18
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) {