github.com/aiven/aiven-go-client@v1.36.0/clickhouse_query.go (about)

     1  package aiven
     2  
     3  type (
     4  	// ClickhouseQueryHandler aiven go-client handler for Clickhouse Queries
     5  	ClickhouseQueryHandler struct {
     6  		client *Client
     7  	}
     8  
     9  	ClickhouseQueryRequest struct {
    10  		Database string `json:"database"`
    11  		Query    string `json:"query"`
    12  	}
    13  
    14  	ClickhouseQueryColumnMeta struct {
    15  		Name string `json:"name"`
    16  		Type string `json:"type"`
    17  	}
    18  
    19  	// ClickhouseQueryResponse aiven go-client clickhouse query response
    20  	ClickhouseQueryResponse struct {
    21  		APIResponse
    22  		Meta []ClickhouseQueryColumnMeta
    23  		Data []interface{}
    24  	}
    25  
    26  	ClickhouseCurrentQuery struct {
    27  		ClientName string  `json:"client_name"`
    28  		Database   string  `json:"database"`
    29  		Elapsed    float64 `json:"elapsed"`
    30  		Query      string  `json:"query"`
    31  		User       string  `json:"user"`
    32  	}
    33  
    34  	// ClickhouseCurrentQueriesResponse aiven go-client clickhouse current queries response
    35  	ClickhouseCurrentQueriesResponse struct {
    36  		APIResponse
    37  		Queries []ClickhouseCurrentQuery
    38  	}
    39  )
    40  
    41  // CurrentQueries list current queries
    42  func (h *ClickhouseQueryHandler) CurrentQueries(project, service string) (*ClickhouseCurrentQueriesResponse, error) {
    43  	path := buildPath("project", project, "service", service, "clickhouse", "query")
    44  	bts, err := h.client.doGetRequest(path, nil)
    45  	if err != nil {
    46  		return nil, err
    47  	}
    48  
    49  	var r ClickhouseCurrentQueriesResponse
    50  	errR := checkAPIResponse(bts, &r)
    51  
    52  	return &r, errR
    53  }
    54  
    55  // Query creates a ClickHouse job
    56  func (h *ClickhouseQueryHandler) Query(project, service, database, query string) (*ClickhouseQueryResponse, error) {
    57  	path := buildPath("project", project, "service", service, "clickhouse", "query")
    58  	bts, err := h.client.doPostRequest(path, ClickhouseQueryRequest{
    59  		Database: database,
    60  		Query:    query,
    61  	})
    62  	if err != nil {
    63  		return nil, err
    64  	}
    65  
    66  	var r ClickhouseQueryResponse
    67  	errR := checkAPIResponse(bts, &r)
    68  
    69  	return &r, errR
    70  }