From 2380a269872a144261ddaab3b93ef23adaf2af0d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torkel=20=C3=96degaard?= Date: Wed, 17 Sep 2014 09:49:28 +0200 Subject: [PATCH] updated --- grafana | 2 +- pkg/api/api_dashboard.go | 6 ++++-- pkg/api/api_login.go | 11 +++++++++++ pkg/stores/rethinkdb.go | 8 ++++++-- pkg/stores/store.go | 4 ++-- 5 files changed, 24 insertions(+), 7 deletions(-) diff --git a/grafana b/grafana index 477f66f56bd..c00384ad064 160000 --- a/grafana +++ b/grafana @@ -1 +1 @@ -Subproject commit 477f66f56bdd7f310d439ac428cb646fbb9b1949 +Subproject commit c00384ad0644f9db7cdfa426c559d8fc3347a1d2 diff --git a/pkg/api/api_dashboard.go b/pkg/api/api_dashboard.go index 208b25c7b1f..bbcf64528f7 100644 --- a/pkg/api/api_dashboard.go +++ b/pkg/api/api_dashboard.go @@ -29,8 +29,9 @@ func (self *HttpServer) getDashboard(c *gin.Context) { func (self *HttpServer) search(c *gin.Context) { query := c.Params.ByName("q") + accountId, err := c.Get("accountId") - results, err := self.store.Query(query) + results, err := self.store.Query(query, accountId.(int)) if err != nil { log.Error("Store query error: %v", err) c.JSON(500, newErrorResponse("Failed")) @@ -42,12 +43,13 @@ func (self *HttpServer) search(c *gin.Context) { func (self *HttpServer) postDashboard(c *gin.Context) { var command saveDashboardCommand + accountId, _ := c.Get("accountId") if c.EnsureBody(&command) { dashboard := models.NewDashboard("test") dashboard.Data = command.Dashboard dashboard.Title = dashboard.Data["title"].(string) - dashboard.AccountId = 1 + dashboard.AccountId = accountId.(int) dashboard.UpdateSlug() if dashboard.Data["id"] != nil { diff --git a/pkg/api/api_login.go b/pkg/api/api_login.go index fa493ba65b9..275dbc27ac1 100644 --- a/pkg/api/api_login.go +++ b/pkg/api/api_login.go @@ -51,6 +51,17 @@ func (self *HttpServer) logoutPost(c *gin.Context) { c.JSON(200, gin.H{"status": "logged out"}) } +type GrafanaReqContext struct { +} + +type authenticatedAuthRouteFunc func(c *gin.Context, grc GrafanaReqContext) + +func (self *HttpServer) addAuthRoute(route string, handler authenticatedAuthRouteFunc) { + self.router.GET(route, self.auth(), func(c *gin.Context) { + + }) +} + func (self *HttpServer) auth() gin.HandlerFunc { return func(c *gin.Context) { session, _ := sessionStore.Get(c.Request, "grafana-session") diff --git a/pkg/stores/rethinkdb.go b/pkg/stores/rethinkdb.go index abb974fdd29..e0e6679eb43 100644 --- a/pkg/stores/rethinkdb.go +++ b/pkg/stores/rethinkdb.go @@ -44,6 +44,10 @@ func NewRethinkStore(config *RethinkCfg) *rethinkStore { return []interface{}{row.Field("AccountId"), row.Field("Slug")} }).Exec(session) + r.Db(config.DatabaseName).Table("dashboards").IndexCreateFunc("AccountId", func(row r.Term) interface{} { + return []interface{}{row.Field("AccountId")} + }).Exec(session) + r.Db(config.DatabaseName).Table("accounts").IndexCreateFunc("AccountLogin", func(row r.Term) interface{} { return []interface{}{row.Field("Login")} }).Exec(session) @@ -88,9 +92,9 @@ func (self *rethinkStore) GetDashboard(slug string, accountId int) (*models.Dash return &dashboard, nil } -func (self *rethinkStore) Query(query string) ([]*models.SearchResult, error) { +func (self *rethinkStore) Query(query string, accountId int) ([]*models.SearchResult, error) { + docs, err := r.Table("dashboards").GetAllByIndex("AccountId", []interface{}{accountId}).Filter(r.Row.Field("Title").Match(".*")).Run(self.session) - docs, err := r.Table("dashboards").Filter(r.Row.Field("Title").Match(".*")).Run(self.session) if err != nil { return nil, err } diff --git a/pkg/stores/store.go b/pkg/stores/store.go index 8319e7ca86f..4669b344bcc 100644 --- a/pkg/stores/store.go +++ b/pkg/stores/store.go @@ -5,9 +5,9 @@ import ( ) type Store interface { - GetDashboard(title string, accountId int) (*models.Dashboard, error) + GetDashboard(slug string, accountId int) (*models.Dashboard, error) SaveDashboard(dash *models.Dashboard) error - Query(query string) ([]*models.SearchResult, error) + Query(query string, acccountId int) ([]*models.SearchResult, error) SaveUserAccount(acccount *models.UserAccount) error GetUserAccountLogin(emailOrName string) (*models.UserAccount, error) Close()