models.go 1.9 KB

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