Update query interface to take database and rp

pull/10616/head
Chris Goller 2016-09-21 08:47:01 -07:00
parent 92225fdc49
commit 1d4d3668d8
5 changed files with 35 additions and 5 deletions

View File

@ -34,7 +34,17 @@ func NewClient(host string) (*Client, error) {
// include both the database and retention policy. In-flight requests can be
// cancelled using the provided context.
func (c *Client) Query(ctx context.Context, query mrfusion.Query) (mrfusion.Response, error) {
q := ixClient.NewQuery(string(query), "", "")
db := ""
if len(query.Database) > 0 {
db = query.Database
}
rp := ""
if len(query.RP) > 0 {
rp = query.RP
}
q := ixClient.NewQuery(query.Command, db, rp)
resps := make(chan (response))
go func() {
resp, err := c.ix.Query(q)

View File

@ -57,8 +57,12 @@ func (m *Handler) SourcesID(ctx context.Context, params op.GetSourcesIDParams) m
}
func (m *Handler) Proxy(ctx context.Context, params op.PostSourcesIDProxyParams) middleware.Responder {
query := params.Query.Query
response, err := m.TimeSeries.Query(ctx, mrfusion.Query(*query))
query := mrfusion.Query{
Command: *params.Query.Query,
Database: params.Query.Database,
RP: params.Query.Rp,
}
response, err := m.TimeSeries.Query(ctx, mrfusion.Query(query))
if err != nil {
return op.NewPostSourcesIDProxyDefault(500)
}

View File

@ -19,6 +19,10 @@ swagger:model Proxy
*/
type Proxy struct {
/* database
*/
Database string `json:"database,omitempty"`
/* format
*/
Format *string `json:"format,omitempty"`
@ -28,6 +32,10 @@ type Proxy struct {
Required: true
*/
Query *string `json:"query"`
/* rp
*/
Rp string `json:"rp,omitempty"`
}
// Validate validates this proxy

View File

@ -788,6 +788,10 @@ definitions:
properties:
query:
type: string
database:
type: string
rp:
type: string
format:
type: string
enum:

View File

@ -6,8 +6,12 @@ import (
"golang.org/x/net/context"
)
// Used to retrieve a Response from a TimeSeries.
type Query string
// Query retrieves a Response from a TimeSeries.
type Query struct {
Command string // Command is the query itself
Database string // Database is optional and if empty will not be used.
RP string // RP is a retention policy and optional; if empty will not be used.
}
// Row represents a single row returned from the execution of a single statement in a `Query`.
type Row interface {