Change ListServers to use SeachWhere (#300)

pull/303/head
Jeff Mitchell 6 years ago committed by GitHub
parent ac4d9fa311
commit 647d5502b5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -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

Loading…
Cancel
Save