X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=sysdb%2Fstore.go;h=73fe0b530c73cdf5d194c2d7de0dc8b8ecf5c8de;hb=948da971a7ef9e3a075aa7b56cedb1d99c73e98b;hp=4a71428386aaea69bee4d7a7c834a2ca5484ea86;hpb=37f82acfc6dfc00b16b6886cf533efe6a18fb001;p=sysdb%2Fgo.git diff --git a/sysdb/store.go b/sysdb/store.go index 4a71428..73fe0b5 100644 --- a/sysdb/store.go +++ b/sysdb/store.go @@ -40,6 +40,9 @@ const jsonTime = `"2006-01-02 15:04:05 -0700"` // sequence of decimal numbers with a unit suffix). type Duration time.Duration +// Common durations. All values greater than or equal to a day are not exact +// values but subject to daylight savings time changes, leap years, etc. They +// are available mostly for providing human readable display formats. const ( Second = Duration(1000000000) Minute = 60 * Second @@ -49,8 +52,8 @@ const ( Year = Duration(3652425 * 24 * 60 * 60 * 100000) ) -// MarshalJSON implements the json.Marshaler interface. The time is a quoted -// string in the SysDB JSON format. +// MarshalJSON implements the json.Marshaler interface. The duration is a +// quoted string in the SysDB JSON format. func (d Duration) MarshalJSON() ([]byte, error) { if d == 0 { return []byte(`"0s"`), nil @@ -177,6 +180,8 @@ func (d Duration) String() string { return time.Duration(d).String() } // (YYYY-MM-DD hh:mm:ss +-zzzz). type Time time.Time +// MarshalJSON implements the json.Marshaler interface. The time is a quoted +// string in the SysDB JSON format. func (t Time) MarshalJSON() ([]byte, error) { return []byte(time.Time(t).Format(jsonTime)), nil } @@ -211,6 +216,7 @@ type Attribute struct { // A Metric describes a metric known to SysDB. type Metric struct { Name string `json:"name"` + Timeseries bool `json:"timeseries"` LastUpdate Time `json:"last_update"` UpdateInterval Duration `json:"update_interval"` Backends []string `json:"backends"` @@ -240,7 +246,7 @@ type Host struct { // A DataPoint describes a datum at a certain point of time. type DataPoint struct { Timestamp Time `json:"timestamp"` - Value float64 `json:"value"` + Value float64 `json:"value,string"` } // A Timeseries describes a sequence of data-points.