Commit 593b2ef8 by Torkel Ödegaard

annotation: added region support to annoations

parent b867921b
...@@ -40,6 +40,7 @@ func GetAnnotations(c *middleware.Context) Response { ...@@ -40,6 +40,7 @@ func GetAnnotations(c *middleware.Context) Response {
Metric: item.Metric, Metric: item.Metric,
Title: item.Title, Title: item.Title,
PanelId: item.PanelId, PanelId: item.PanelId,
RegionId: item.RegionId,
}) })
} }
...@@ -57,15 +58,30 @@ func PostAnnotation(c *middleware.Context, cmd dtos.PostAnnotationsCmd) Response ...@@ -57,15 +58,30 @@ func PostAnnotation(c *middleware.Context, cmd dtos.PostAnnotationsCmd) Response
Title: cmd.Title, Title: cmd.Title,
Text: cmd.Text, Text: cmd.Text,
CategoryId: cmd.CategoryId, CategoryId: cmd.CategoryId,
NewState: cmd.FillColor,
Type: annotations.EventType, Type: annotations.EventType,
} }
err := repo.Save(&item) if err := repo.Save(&item); err != nil {
if err != nil {
return ApiError(500, "Failed to save annotation", err) return ApiError(500, "Failed to save annotation", err)
} }
// handle regions
if cmd.IsRegion {
item.RegionId = item.Id
if err := repo.Update(&item); err != nil {
return ApiError(500, "Failed set regionId on annotation", err)
}
item.Id = 0
item.Epoch = cmd.EndTime
if err := repo.Save(&item); err != nil {
return ApiError(500, "Failed save annotation for region end time", err)
}
}
return ApiSuccess("Annotation added") return ApiSuccess("Annotation added")
} }
......
...@@ -12,6 +12,7 @@ type Annotation struct { ...@@ -12,6 +12,7 @@ type Annotation struct {
Title string `json:"title"` Title string `json:"title"`
Text string `json:"text"` Text string `json:"text"`
Metric string `json:"metric"` Metric string `json:"metric"`
RegionId int64 `json:"regionId"`
Data *simplejson.Json `json:"data"` Data *simplejson.Json `json:"data"`
} }
...@@ -23,6 +24,10 @@ type PostAnnotationsCmd struct { ...@@ -23,6 +24,10 @@ type PostAnnotationsCmd struct {
Time int64 `json:"time"` Time int64 `json:"time"`
Title string `json:"title"` Title string `json:"title"`
Text string `json:"text"` Text string `json:"text"`
FillColor string `json:"fillColor"`
IsRegion bool `json:"isRegion"`
EndTime int64 `json:"endTime"`
} }
type DeleteAnnotationsCmd struct { type DeleteAnnotationsCmd struct {
......
...@@ -4,6 +4,7 @@ import "github.com/grafana/grafana/pkg/components/simplejson" ...@@ -4,6 +4,7 @@ import "github.com/grafana/grafana/pkg/components/simplejson"
type Repository interface { type Repository interface {
Save(item *Item) error Save(item *Item) error
Update(item *Item) error
Find(query *ItemQuery) ([]*Item, error) Find(query *ItemQuery) ([]*Item, error)
Delete(params *DeleteParams) error Delete(params *DeleteParams) error
} }
...@@ -58,6 +59,7 @@ type Item struct { ...@@ -58,6 +59,7 @@ type Item struct {
DashboardId int64 `json:"dashboardId"` DashboardId int64 `json:"dashboardId"`
PanelId int64 `json:"panelId"` PanelId int64 `json:"panelId"`
CategoryId int64 `json:"categoryId"` CategoryId int64 `json:"categoryId"`
RegionId int64 `json:"regionId"`
Type ItemType `json:"type"` Type ItemType `json:"type"`
Title string `json:"title"` Title string `json:"title"`
Text string `json:"text"` Text string `json:"text"`
......
...@@ -23,6 +23,17 @@ func (r *SqlAnnotationRepo) Save(item *annotations.Item) error { ...@@ -23,6 +23,17 @@ func (r *SqlAnnotationRepo) Save(item *annotations.Item) error {
}) })
} }
func (r *SqlAnnotationRepo) Update(item *annotations.Item) error {
return inTransaction(func(sess *xorm.Session) error {
if _, err := sess.Table("annotation").Id(item.Id).Update(item); err != nil {
return err
}
return nil
})
}
func (r *SqlAnnotationRepo) Find(query *annotations.ItemQuery) ([]*annotations.Item, error) { func (r *SqlAnnotationRepo) Find(query *annotations.ItemQuery) ([]*annotations.Item, error) {
var sql bytes.Buffer var sql bytes.Buffer
params := make([]interface{}, 0) params := make([]interface{}, 0)
......
...@@ -54,4 +54,8 @@ func addAnnotationMig(mg *Migrator) { ...@@ -54,4 +54,8 @@ func addAnnotationMig(mg *Migrator) {
{Name: "new_state", Type: DB_NVarchar, Length: 25, Nullable: false}, {Name: "new_state", Type: DB_NVarchar, Length: 25, Nullable: false},
{Name: "data", Type: DB_Text, Nullable: false}, {Name: "data", Type: DB_Text, Nullable: false},
})) }))
mg.AddMigration("Add column region_id to annotation table", NewAddColumnMigration(table, &Column{
Name: "region_id", Type: DB_BigInt, Nullable: true, Default: "0",
}))
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment