models.go 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  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. type QueryResult struct {
  47. Error error `json:"error"`
  48. RefId string `json:"refId"`
  49. Series TimeSeriesSlice `json:"series"`
  50. }
  51. type TimeSeries struct {
  52. Name string `json:"name"`
  53. Points TimeSeriesPoints `json:"points"`
  54. }
  55. type TimePoint [2]null.Float
  56. type TimeSeriesPoints []TimePoint
  57. type TimeSeriesSlice []*TimeSeries
  58. func NewQueryResult() *QueryResult {
  59. return &QueryResult{
  60. Series: make(TimeSeriesSlice, 0),
  61. }
  62. }
  63. func NewTimePoint(value float64, timestamp float64) TimePoint {
  64. return TimePoint{null.FloatFrom(value), null.FloatFrom(timestamp)}
  65. }
  66. func NewTimeSeriesPointsFromArgs(values ...float64) TimeSeriesPoints {
  67. points := make(TimeSeriesPoints, 0)
  68. for i := 0; i < len(values); i += 2 {
  69. points = append(points, NewTimePoint(values[i], values[i+1]))
  70. }
  71. return points
  72. }
  73. func NewTimeSeries(name string, points TimeSeriesPoints) *TimeSeries {
  74. return &TimeSeries{
  75. Name: name,
  76. Points: points,
  77. }
  78. }