-
Notifications
You must be signed in to change notification settings - Fork 1
/
client_manager_query_worker.go
115 lines (94 loc) · 3.6 KB
/
client_manager_query_worker.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
package goC8
import (
"github.com/marvin-hansen/goC8/requests/query_req"
"github.com/marvin-hansen/goC8/requests/qw_req"
"github.com/marvin-hansen/goC8/utils"
"time"
)
type QueryWorkerManager struct {
client *Client
}
func NewQueryWorkerManager(client *Client) *QueryWorkerManager {
return &QueryWorkerManager{client: client}
}
// CreateQueryWorker
// Save a query for a user for a fabric.
// bindVars: bindVars for the query
// name: Name for the query
// value: value of the query
// https://macrometa.com/docs/api#/operations/SaveRestqlByName
func (c QueryWorkerManager) CreateQueryWorker(fabric, workerName, queryString, bindVars string) (res *qw_req.ResponseForQueryWorker, err error) {
if benchmark {
defer utils.TimeTrack(time.Now(), "CreateQueryWorker")
}
req := qw_req.NewRequestForCreateQueryWorker(fabric, workerName, queryString, bindVars)
res = qw_req.NewResponseForQueryWorker()
err = c.client.Request(req, res)
return res, CheckReturnError(err)
}
// RunQueryWorker
// Run a saved query for a given fabric. If there are more that 100 records, the hasMore flag is set to true.
// Note this client fetches all additional records, merges them, and returns just one combined result.
// https://macrometa.com/docs/api#/operations/ExecuteRestqlByName
func (c QueryWorkerManager) RunQueryWorker(fabric, workerName, bindVars string) (res *query_req.Cursor, err error) {
if benchmark {
defer utils.TimeTrack(time.Now(), "RunQueryWorker")
}
req := qw_req.NewRequestForRunQueryWorker(fabric, workerName, bindVars)
res = qw_req.NewResponseForRunQueryWorker()
if err = c.client.requestJsonResponse(req, res); err != nil {
return nil, err
}
if res.HasMore {
for {
// request update for the cursor
reqNext := qw_req.NewRequestForReadNextCursor(fabric, res.Id)
responseNext := qw_req.NewResponseForReadNextCursor()
if err = c.client.requestJsonResponse(reqNext, responseNext); err != nil {
return nil, err
}
// updated cursor with next result
res.Update(responseNext)
if responseNext.HasMore == false {
break
}
}
}
return res, CheckReturnError(err)
}
// ReadAllQueryWorkers
// Get list of saved queries for the fabric.
// https://macrometa.com/docs/api#/operations/ListRestqlAssociatedWithCurrentUser
func (c QueryWorkerManager) ReadAllQueryWorkers(fabric string) (res *qw_req.ResponseForReadAllQueryWorkers, err error) {
if benchmark {
defer utils.TimeTrack(time.Now(), "ReadAllQueryWorkers")
}
req := qw_req.NewRequestForReadAllQueryWorkers(fabric)
res = qw_req.NewResponseForReadAllQueryWorkers()
err = c.client.Request(req, res)
return res, CheckReturnError(err)
}
// UpdateQueryWorker
// Update a saved query for a fabric.
// https://macrometa.com/docs/api#/operations/UpdateRestqlByName
func (c QueryWorkerManager) UpdateQueryWorker(fabric, workerName, queryString, bindVars string) (res *qw_req.ResponseForQueryWorker, err error) {
if benchmark {
defer utils.TimeTrack(time.Now(), "UpdateQueryWorker")
}
req := qw_req.NewRequestForUpdateQueryWorker(fabric, workerName, queryString, bindVars)
res = qw_req.NewResponseForQueryWorker()
err = c.client.Request(req, res)
return res, CheckReturnError(err)
}
// DeleteQueryWorker
// Delete a query under the given fabric.
// https://macrometa.com/docs/api#/operations/DeleteRestqlByName
func (c QueryWorkerManager) DeleteQueryWorker(fabric, workerName string) (err error) {
if benchmark {
defer utils.TimeTrack(time.Now(), "DeleteQueryWorker")
}
req := qw_req.NewRequestForDeleteQueryWorker(fabric, workerName)
res := qw_req.NewResponseForDeleteQueryWorker()
err = c.client.Request(req, res)
return CheckReturnError(err)
}