From 647d5502b54cd4a9b24d2aa82479f3d82eef3325 Mon Sep 17 00:00:00 2001 From: Jeff Mitchell Date: Mon, 24 Aug 2020 14:10:41 -0400 Subject: [PATCH] Change ListServers to use SeachWhere (#300) --- internal/servers/repository.go | 56 +++++++--------------------------- 1 file changed, 11 insertions(+), 45 deletions(-) diff --git a/internal/servers/repository.go b/internal/servers/repository.go index 235aac6dd9..1668a22b53 100644 --- a/internal/servers/repository.go +++ b/internal/servers/repository.go @@ -8,7 +8,6 @@ import ( "github.com/hashicorp/boundary/globals" "github.com/hashicorp/boundary/internal/db" - timestamp "github.com/hashicorp/boundary/internal/db/timestamp" "github.com/hashicorp/boundary/internal/kms" "github.com/hashicorp/boundary/internal/types/resource" ) @@ -52,50 +51,17 @@ func (r *Repository) ListServers(ctx context.Context, serverType string, opt ... liveness = defaultLiveness } updateTime := time.Now().Add(-1 * liveness) - q := ` - select * from servers - where - type = $1 - and - update_time > $2;` - underlying, err := r.reader.DB() - if err != nil { - return nil, fmt.Errorf("error fetching underlying DB for server list operation: %w", err) - } - rows, err := underlying.QueryContext(ctx, q, - serverType, - updateTime.Format(time.RFC3339)) - if err != nil { - return nil, fmt.Errorf("error performing server list: %w", err) - } - results := make([]*Server, 0, 3) - var scanErr error - for rows.Next() { - server := &Server{ - CreateTime: new(timestamp.Timestamp), - UpdateTime: new(timestamp.Timestamp), - } - if err := rows.Scan( - &server.PrivateId, - &server.Type, - &server.Name, - &server.Description, - &server.Address, - server.CreateTime, - server.UpdateTime, - ); err != nil { - scanErr = fmt.Errorf("error scanning server row: %w", err) - break - } - results = append(results, server) - } - if scanErr != nil { - return nil, scanErr - } - if err := rows.Err(); err != nil { - return nil, fmt.Errorf("error performing scan over server rows: %w", err) - } - return results, nil + var servers []*Server + if err := r.reader.SearchWhere( + ctx, + &servers, + "type = $1 and update_time > $2", + []interface{}{serverType, updateTime.Format(time.RFC3339)}, + db.WithLimit(-1), + ); err != nil { + return nil, fmt.Errorf("error listing servers: %w", err) + } + return servers, nil } // UpsertServer adds or updates a server in the DB