diff --git a/pkg/routes/api/api_dashboard.go b/pkg/routes/api/api_dashboard.go index c71c2530875..3a0152f8909 100644 --- a/pkg/routes/api/api_dashboard.go +++ b/pkg/routes/api/api_dashboard.go @@ -54,6 +54,15 @@ func Search(c *middleware.Context) { c.JSON(200, results) } +func convertToStringArray(arr []interface{}) []string { + b := make([]string, len(arr)) + for i := range arr { + b[i] = arr[i].(string) + } + + return b +} + func PostDashboard(c *middleware.Context) { var command apimodel.SaveDashboardCommand @@ -66,6 +75,7 @@ func PostDashboard(c *middleware.Context) { dashboard.Data = command.Dashboard dashboard.Title = dashboard.Data["title"].(string) dashboard.AccountId = c.GetAccountId() + dashboard.Tags = convertToStringArray(dashboard.Data["tags"].([]interface{})) dashboard.UpdateSlug() if dashboard.Data["id"] != nil { diff --git a/pkg/stores/sqlstore/sqlstore.go b/pkg/stores/sqlstore/sqlstore.go index 1b02c8d8faa..43e48886750 100644 --- a/pkg/stores/sqlstore/sqlstore.go +++ b/pkg/stores/sqlstore/sqlstore.go @@ -34,6 +34,7 @@ func Init() { models.GetAccountByLogin = GetAccountByLogin models.GetDashboard = GetDashboard models.SaveDashboard = SaveDashboard + models.SearchQuery = SearchQuery } func LoadModelsConfig() { diff --git a/pkg/stores/sqlstore/sqlstore_dashboards.go b/pkg/stores/sqlstore/sqlstore_dashboards.go index 27e148d0a29..7b9af7d0f4d 100644 --- a/pkg/stores/sqlstore/sqlstore_dashboards.go +++ b/pkg/stores/sqlstore/sqlstore_dashboards.go @@ -14,7 +14,13 @@ func SaveDashboard(dash *models.Dashboard) error { return err } - if _, err = sess.Insert(dash); err != nil { + if dash.Id == 0 { + _, err = sess.Insert(dash) + } else { + _, err = sess.Update(dash) + } + + if err != nil { sess.Rollback() return err } else if err = sess.Commit(); err != nil { @@ -36,3 +42,13 @@ func GetDashboard(slug string, accountId int64) (*models.Dashboard, error) { return &dashboard, nil } + +func SearchQuery(query string, accountId int64) ([]*models.SearchResult, error) { + sess := x.Limit(100, 0).Where("account_id=?", accountId) + sess.Table("Dashboard") + + var results []*models.SearchResult + err := sess.Find(&results) + + return results, err +}