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 }