Documentation ¶
Index ¶
- Constants
- func GraphQLJSONToCSV(ctx context.Context, r io.Reader, w io.Writer) (int32, error)
- type Category
- type Client
- func (c *Client) Checker(ctx context.Context, state *healthcheck.CheckState) error
- func (c *Client) CheckerAPIExt(ctx context.Context, state *healthcheck.CheckState) error
- func (c *Client) GetCodebook(ctx context.Context, req GetCodebookRequest) (*GetCodebookResponse, error)
- func (c *Client) ParseTable(table Table) (*bufio.Reader, error)
- func (c *Client) StaticDatasetQuery(ctx context.Context, req StaticDatasetQueryRequest) (*StaticDatasetQuery, error)
- func (c *Client) StaticDatasetQueryStreamCSV(ctx context.Context, req StaticDatasetQueryRequest, consume Consumer) (int32, error)
- type Codebook
- type Config
- type Consumer
- type Dataset
- type Dimension
- type Dimensions
- type ErrorResponse
- type GetCodebookRequest
- type GetCodebookResponse
- type GraphQLClient
- type Iterator
- type MapFrom
- type StaticDataset
- type StaticDatasetQuery
- type StaticDatasetQueryRequest
- type Table
- type Variable
- type VariableBase
Constants ¶
const ( Service = "cantabular" ServiceAPIExt = "cantabularAPIExt" )
Cantabular service names
const QueryStaticDataset = `` /* 268-byte string literal not displayed */
QueryStaticDataset represents a full graphQL query to be encoded into the body of a plain http post request for a static dataset query
Variables ¶
This section is empty.
Functions ¶
Types ¶
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
Client is the client for interacting with the Cantabular API
func NewClient ¶
func NewClient(cfg Config, ua httpClient, g GraphQLClient) *Client
NewClient returns a new Client
func (*Client) Checker ¶
func (c *Client) Checker(ctx context.Context, state *healthcheck.CheckState) error
Checker contacts the /v9/datasets endpoint and updates the healthcheck state accordingly.
func (*Client) CheckerAPIExt ¶ added in v2.4.0
func (c *Client) CheckerAPIExt(ctx context.Context, state *healthcheck.CheckState) error
CheckerAPIExt contacts the /graphql endpoint with an empty query and updates the healthcheck state accordingly.
func (*Client) GetCodebook ¶
func (c *Client) GetCodebook(ctx context.Context, req GetCodebookRequest) (*GetCodebookResponse, error)
GetCodebook gets a Codebook from cantabular.
func (*Client) ParseTable ¶ added in v2.1.13
ParseTable takes a table from a GraphQL response and parses it into a header and rows of counts (observations) ready to be read line-by-line.
func (*Client) StaticDatasetQuery ¶
func (c *Client) StaticDatasetQuery(ctx context.Context, req StaticDatasetQueryRequest) (*StaticDatasetQuery, error)
StaticDatasetQuery performs a query for a static dataset against the Cantabular Extended API using the /graphql endpoint and returns a StaticDatasetQuery, loading the whole response to memory. Use this method only if large query responses are NOT expected
func (*Client) StaticDatasetQueryStreamCSV ¶ added in v2.4.0
func (c *Client) StaticDatasetQueryStreamCSV(ctx context.Context, req StaticDatasetQueryRequest, consume Consumer) (int32, error)
StaticDatasetQueryStreamCSV performs a StaticDatasetQuery call and then starts 2 go-routines to transform the response body into a CSV stream and consume the transformed output with the provided Consumer concurrently. The number of CSV rows, including the header, is returned along with any error during the process. Use this method if large query responses are expected.
type Codebook ¶
type Codebook []Variable
Codebook represents a 'codebook' object returned from Cantabular Server
type Dataset ¶
type Dataset struct { Name string `json:"name"` Digest string `json:"digest"` Description string `json:"description"` Size int `json:"size"` RulebaseVariable string `json:"ruleBaseVariable"` DateTime time.Time `json:"datetime"` }
Dataset represents a 'dataset' object returned from Cantabular Server
type Dimension ¶
type Dimension struct { Count int `json:"count"` Categories []Category `json:"categories"` Variable VariableBase `json:"variable"` }
Dimension represents the 'dimension' field from a GraphQL query dataset response
type Dimensions ¶ added in v2.4.0
type Dimensions []Dimension
Dimensions describes the structure of a table
func (Dimensions) NewIterator ¶ added in v2.4.0
func (dims Dimensions) NewIterator(ctx context.Context) *Iterator
NewIterator creates an iterator over a table on these Dimensions
type ErrorResponse ¶
type ErrorResponse struct {
Message string `json:"message"`
}
ErrorResponse models the error response from cantabular
type GetCodebookRequest ¶
GetCodebookRequest holds the query parameters for GET [cantabular-srv]/codebook/{dataset}?cats=xxx&v=xxx
type GetCodebookResponse ¶
type GetCodebookResponse struct { Codebook Codebook `json:"codebook"` Dataset Dataset `json:"dataset"` }
GetCodebookResponse holds the response body for GET [cantabular-srv]/codebook/{dataset}?cats=xxx&v=xxx
type GraphQLClient ¶
type GraphQLClient interface {
Query(ctx context.Context, query interface{}, vars map[string]interface{}) error
}
GraphQLClient is the Client used by the GraphQL package to make queries
type Iterator ¶ added in v2.4.0
type Iterator struct {
// contains filtered or unexported fields
}
Iterator facilitates reading the coordinates of each cell in row-major order
func (*Iterator) CategoryAtColumn ¶ added in v2.4.0
CategoryAtColumn returns the i-th coordinate of the current cell
type MapFrom ¶
type MapFrom struct { SourceNames []string `json:"sourceNames,omitempty"` Code []string `json:"codes,omitempty"` }
MapFrom represents the 'mapFrom' object from variable when category information is included
type StaticDataset ¶
type StaticDataset struct {
Table Table `json:"table" graphql:"table(variables: $variables)"`
}
StaticDataset represents the 'dataset' field from a GraphQL static dataset query response
type StaticDatasetQuery ¶
type StaticDatasetQuery struct {
Dataset StaticDataset `json:"dataset" graphql:"dataset(name: $name)"`
}
StaticDatasetQuery holds the query for a static dataset landing page from POST [cantabular-ext]/graphql. It is used both as the internal query request to GraphQL as well as the response to the caller, as GraphQL query responses are essentially unmarshalled into the requests.
type StaticDatasetQueryRequest ¶
type StaticDatasetQueryRequest struct { Dataset string `json:"dataset"` Variables []string `json:"variables"` }
StaticDatasetQueryRequest holds the request variables required from the caller for making a request for a static dataset landing page from POST [cantabular-ext]/graphql
type Table ¶
type Table struct { Dimensions []Dimension `json:"dimensions"` Values []int `json:"values"` Error string `json:"error,omitempty" ` }
Table represents the 'table' field from the GraphQL dataset query response
type Variable ¶
type Variable struct { VariableBase Len int `json:"len"` Codes []string `json:"codes,omitempty"` Labels []string `json:"labels,omitempty"` MapFrom []MapFrom `json:"mapFrom,omitempty"` }
Variable represents a 'variable' object returned from Cantabular
type VariableBase ¶
VariableBase represents the minimum amount of fields returned by Cantabular for a 'variable' object. Is kept separate from the full Variable struct because GraphQL/Cantabular has difficulty unmarshaling into a struct with unexpected objects (in this case MapFrom), even if they're set to not be included