MCPcopy Index your code
hub / github.com/ccfos/nightingale / QueryData

Method QueryData

datasource/postgresql/postgresql.go:159–216  ·  view source on GitHub ↗
(ctx context.Context, query interface{})

Source from the content-addressed store, hash-verified

157}
158
159func (p *PostgreSQL) QueryData(ctx context.Context, query interface{}) ([]models.DataResp, error) {
160 postgresqlQueryParam := new(QueryParam)
161 if err := mapstructure.Decode(query, postgresqlQueryParam); err != nil {
162 return nil, err
163 }
164
165 postgresqlQueryParam.SQL = formatSQLDatabaseNameWithRegex(postgresqlQueryParam.SQL)
166 if strings.Contains(postgresqlQueryParam.SQL, "$__") {
167 var err error
168 postgresqlQueryParam.SQL, err = macros.Macro(postgresqlQueryParam.SQL, postgresqlQueryParam.From, postgresqlQueryParam.To)
169 if err != nil {
170 return nil, err
171 }
172 }
173 if postgresqlQueryParam.Database != "" {
174 p.Shards[0].DB = postgresqlQueryParam.Database
175 } else {
176 db, err := parseDBName(postgresqlQueryParam.SQL)
177 if err != nil {
178 return nil, err
179 }
180 p.Shards[0].DB = db
181 }
182
183 timeout := p.Shards[0].Timeout
184 if timeout == 0 {
185 timeout = 60
186 }
187 timeoutCtx, cancel := context.WithTimeout(ctx, time.Duration(timeout)*time.Second)
188 defer cancel()
189
190 items, err := p.Shards[0].QueryTimeseries(timeoutCtx, &sqlbase.QueryParam{
191 Sql: postgresqlQueryParam.SQL,
192 Keys: types.Keys{
193 ValueKey: postgresqlQueryParam.Keys.ValueKey,
194 LabelKey: postgresqlQueryParam.Keys.LabelKey,
195 TimeKey: postgresqlQueryParam.Keys.TimeKey,
196 },
197 })
198
199 if err != nil {
200 logger.Warningf("query:%+v get data err:%v", postgresqlQueryParam, err)
201 return []models.DataResp{}, err
202 }
203 data := make([]models.DataResp, 0)
204 for i := range items {
205 data = append(data, models.DataResp{
206 Ref: postgresqlQueryParam.Ref,
207 Metric: items[i].Metric,
208 Values: items[i].Values,
209 })
210 }
211
212 // parse resp to time series data
213 logger.Infof("req:%+v keys:%+v \n data:%v", postgresqlQueryParam, postgresqlQueryParam.Keys, data)
214
215 return data, nil
216}

Callers

nothing calls this directly

Calls 3

parseDBNameFunction · 0.85
QueryTimeseriesMethod · 0.45

Tested by

no test coverage detected