models.go 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. package tsdb
  2. import (
  3. "github.com/grafana/grafana/pkg/components/simplejson"
  4. "gopkg.in/guregu/null.v3"
  5. )
  6. type Query struct {
  7. RefId string
  8. Model *simplejson.Json
  9. Depends []string
  10. DataSource *DataSourceInfo
  11. Results []*TimeSeries
  12. Exclude bool
  13. MaxDataPoints int64
  14. IntervalMs int64
  15. }
  16. type QuerySlice []*Query
  17. type Request struct {
  18. TimeRange *TimeRange
  19. Queries QuerySlice
  20. }
  21. type Response struct {
  22. BatchTimings []*BatchTiming `json:"timings"`
  23. Results map[string]*QueryResult `json:"results"`
  24. }
  25. type DataSourceInfo struct {
  26. Id int64
  27. Name string
  28. PluginId string
  29. Url string
  30. Password string
  31. User string
  32. Database string
  33. BasicAuth bool
  34. BasicAuthUser string
  35. BasicAuthPassword string
  36. JsonData *simplejson.Json
  37. }
  38. type BatchTiming struct {
  39. TimeElapsed int64
  40. }
  41. type BatchResult struct {
  42. Error error
  43. QueryResults map[string]*QueryResult
  44. Timings *BatchTiming
  45. }
  46. func (br *BatchResult) WithError(err error) *BatchResult {
  47. br.Error = err
  48. return br
  49. }
  50. type QueryResult struct {
  51. Error error `json:"error"`
  52. RefId string `json:"refId"`
  53. Series TimeSeriesSlice `json:"series"`
  54. }
  55. type TimeSeries struct {
  56. Name string `json:"name"`
  57. Points TimeSeriesPoints `json:"points"`
  58. }
  59. type TimePoint [2]null.Float
  60. type TimeSeriesPoints []TimePoint
  61. type TimeSeriesSlice []*TimeSeries
  62. func NewQueryResult() *QueryResult {
  63. return &QueryResult{
  64. Series: make(TimeSeriesSlice, 0),
  65. }
  66. }
  67. func NewTimePoint(value null.Float, timestamp float64) TimePoint {
  68. return TimePoint{value, null.FloatFrom(timestamp)}
  69. }
  70. func NewTimeSeriesPointsFromArgs(values ...float64) TimeSeriesPoints {
  71. points := make(TimeSeriesPoints, 0)
  72. for i := 0; i < len(values); i += 2 {
  73. points = append(points, NewTimePoint(null.FloatFrom(values[i]), values[i+1]))
  74. }
  75. return points
  76. }
  77. func NewTimeSeries(name string, points TimeSeriesPoints) *TimeSeries {
  78. return &TimeSeries{
  79. Name: name,
  80. Points: points,
  81. }
  82. }