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) GetDimensionOptions(ctx context.Context, req GetDimensionOptionsRequest) (*GetDimensionOptionsResponse, error)
- func (c *Client) GetDimensions(ctx context.Context, dataset string) (*GetDimensionsResponse, error)
- func (c *Client) GetDimensionsByName(ctx context.Context, req GetDimensionsByNameRequest) (*GetDimensionsResponse, error)
- func (c *Client) GetGeographyDimensions(ctx context.Context, dataset string) (*GetGeographyDimensionsResponse, error)
- func (c *Client) ListDatasets(ctx context.Context) ([]string, 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 DimensionsTable
- type ErrorResponse
- type GetCodebookRequest
- type GetCodebookResponse
- type GetDimensionOptionsRequest
- type GetDimensionOptionsResponse
- type GetDimensionsByNameRequest
- type GetDimensionsResponse
- type GetGeographyDimensionsResponse
- type GraphQLClient
- type Iterator
- type ListDatasetsItem
- type ListDatasetsQuery
- type MapFrom
- type QueryData
- type StaticDataset
- type StaticDatasetDimensionOptions
- type StaticDatasetQuery
- type StaticDatasetQueryRequest
- type Table
- type Variable
- type VariableBase
Constants ¶
const ( Service = "cantabular" ServiceAPIExt = "cantabularAPIExt" )
Cantabular service names
const QueryDimensionOptions = `` /* 258-byte string literal not displayed */
QueryDimensionOptions is the graphQL query to obtain static dataset dimension options (variables with categories)
const QueryDimensions = `` /* 286-byte string literal not displayed */
QueryDimensions is the graphQL query to obtain dimensions (variables without categories)
const QueryDimensionsByName = `` /* 329-byte string literal not displayed */
QueryDimensionsByName is the graphQL query to obtain dimensions by name (subset of variables, without categories)
const QueryGeographyDimensions = `` /* 331-byte string literal not displayed */
QueryGeographyDimensions is the graphQL query to obtain geography dimensions (subset of variables, without categories)
const QueryStaticDataset = `` /* 268-byte string literal not displayed */
QueryStaticDataset is the graphQL query to obtain static dataset counts (variables with categories and counts)
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) GetDimensionOptions ¶ added in v2.7.1
func (c *Client) GetDimensionOptions(ctx context.Context, req GetDimensionOptionsRequest) (*GetDimensionOptionsResponse, error)
GetDimensionOptions performs a graphQL query to obtain the requested dimension options. It returns a Table with a list of Cantabular dimensions, where 'Variable' is the dimension and 'Categories' are the options The whole response is loaded to memory.
func (*Client) GetDimensions ¶ added in v2.7.1
GetDimensions performs a graphQL query to obtain all the dimensions for the provided cantabular dataset. The whole response is loaded to memory.
func (*Client) GetDimensionsByName ¶ added in v2.7.1
func (c *Client) GetDimensionsByName(ctx context.Context, req GetDimensionsByNameRequest) (*GetDimensionsResponse, error)
GetDimensionsByName performs a graphQL query to obtain only the dimensions that match the provided dimension names for the provided cantabular dataset. The whole response is loaded to memory.
func (*Client) GetGeographyDimensions ¶ added in v2.8.1
func (c *Client) GetGeographyDimensions(ctx context.Context, dataset string) (*GetGeographyDimensionsResponse, error)
GetGeographyDimensions performs a graphQL query to obtain the geography dimensions for the provided cantabular dataset. The whole response is loaded to memory.
func (*Client) ListDatasets ¶ added in v2.9.0
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 DimensionsTable ¶ added in v2.7.1
type DimensionsTable struct { Dimensions []Dimension `json:"dimensions"` Error string `json:"error,omitempty" ` }
DimensionsTable represents the 'table' field from the GraphQL dataset response, which contains only dimensions and error fields
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 GetDimensionOptionsRequest ¶ added in v2.8.1
GetDimensionOptionsRequest holds the request variables required from the caller for making a request to obtain dimension options (categories) for the provided cantabular Dataset and dimension names (Cantabular variables)
POST [cantabular-ext]/graphql with the encoded query
type GetDimensionOptionsResponse ¶ added in v2.7.1
type GetDimensionOptionsResponse struct {
Dataset StaticDatasetDimensionOptions `json:"dataset"`
}
GetDimensionOptionsResponse holds the response body for POST [cantabular-ext]/graphql with a query to obtain static dataset variables and categories, without values.
type GetDimensionsByNameRequest ¶ added in v2.8.1
GetDimensionsByNameRequest holds the request variables required from the caller for making a request to obtain dimensions (Cantabular variables) by name POST [cantabular-ext]/graphql
type GetDimensionsResponse ¶ added in v2.7.1
type GetDimensionsResponse struct {
Dataset gql.DatasetVariables `json:"dataset"`
}
GetDimensionsResponse holds the response body for POST [cantabular-ext]/graphql with a query to obtain variables
type GetGeographyDimensionsResponse ¶ added in v2.8.1
type GetGeographyDimensionsResponse struct {
Dataset gql.DatasetRuleBase `json:"dataset"`
}
GetGeographyDimensionsResponse holds the response body for POST [cantabular-ext]/graphql with a query to obtain geography variables
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 ListDatasetsItem ¶ added in v2.9.0
type ListDatasetsQuery ¶ added in v2.9.0
type ListDatasetsQuery struct {
Datasets []ListDatasetsItem
}
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 StaticDatasetDimensionOptions ¶ added in v2.7.1
type StaticDatasetDimensionOptions struct {
Table DimensionsTable `json:"table"`
}
StaticDatasetDimensionOptions represents the 'dataset' field from a GraphQL static dataset query response, containing a DimensionsTable, without values
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