mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Default datasource and event system test
This commit is contained in:
@@ -64,12 +64,13 @@ func AddDataSource(c *middleware.Context) {
|
|||||||
|
|
||||||
cmd.AccountId = c.Account.Id
|
cmd.AccountId = c.Account.Id
|
||||||
|
|
||||||
err := bus.Dispatch(&cmd)
|
if err := bus.Dispatch(&cmd); err != nil {
|
||||||
if err != nil {
|
|
||||||
c.JsonApiErr(500, "Failed to add datasource", err)
|
c.JsonApiErr(500, "Failed to add datasource", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//bus.Publish(&m.DataSourceCreatedEvent{Account: c.GetAccountId(), })
|
||||||
|
|
||||||
c.JsonOK("Datasource added")
|
c.JsonOK("Datasource added")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -6,49 +6,31 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
// Typed errors
|
// Typed errors
|
||||||
|
|
||||||
var (
|
var (
|
||||||
ErrAccountNotFound = errors.New("Account not found")
|
ErrAccountNotFound = errors.New("Account not found")
|
||||||
)
|
)
|
||||||
|
|
||||||
type Account struct {
|
type Account struct {
|
||||||
Id int64
|
Id int64
|
||||||
Login string `xorm:"UNIQUE NOT NULL"`
|
Login string `xorm:"UNIQUE NOT NULL"`
|
||||||
Email string `xorm:"UNIQUE NOT NULL"`
|
Email string `xorm:"UNIQUE NOT NULL"`
|
||||||
Name string
|
Name string
|
||||||
FullName string
|
FullName string
|
||||||
Password string
|
Password string
|
||||||
IsAdmin bool
|
IsAdmin bool
|
||||||
Rands string `xorm:"VARCHAR(10)"`
|
Salt string `xorm:"VARCHAR(10)"`
|
||||||
Salt string `xorm:"VARCHAR(10)"`
|
Company string
|
||||||
Company string
|
NextDashboardId int
|
||||||
NextDashboardId int
|
UsingAccountId int64
|
||||||
UsingAccountId int64
|
DefaultDataSourceId int64
|
||||||
|
|
||||||
Created time.Time
|
Created time.Time
|
||||||
Updated time.Time
|
Updated time.Time
|
||||||
}
|
}
|
||||||
|
|
||||||
// api projection
|
// ---------------------
|
||||||
type OtherAccountDTO struct {
|
// COMMANDS
|
||||||
Id int64 `json:"id"`
|
|
||||||
Email string `json:"email"`
|
|
||||||
Role string `json:"role"`
|
|
||||||
IsUsing bool `json:"isUsing"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// api projection model
|
|
||||||
type CollaboratorDTO struct {
|
|
||||||
AccountId int64 `json:"accountId"`
|
|
||||||
Email string `json:"email"`
|
|
||||||
Role string `json:"role"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// api view projection
|
|
||||||
type AccountDTO struct {
|
|
||||||
Email string `json:"email"`
|
|
||||||
Name string `json:"name"`
|
|
||||||
Collaborators []*CollaboratorDTO `json:"collaborators"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type CreateAccountCommand struct {
|
type CreateAccountCommand struct {
|
||||||
Email string `json:"email" binding:"required"`
|
Email string `json:"email" binding:"required"`
|
||||||
@@ -66,13 +48,19 @@ type SetUsingAccountCommand struct {
|
|||||||
UsingAccountId int64
|
UsingAccountId int64
|
||||||
}
|
}
|
||||||
|
|
||||||
// returns a view projection
|
type SetDefaultDataSourceCommand struct {
|
||||||
|
AccountId int64
|
||||||
|
DataSourceId int64
|
||||||
|
}
|
||||||
|
|
||||||
|
// ----------------------
|
||||||
|
// QUERIES
|
||||||
|
|
||||||
type GetAccountInfoQuery struct {
|
type GetAccountInfoQuery struct {
|
||||||
Id int64
|
Id int64
|
||||||
Result AccountDTO
|
Result AccountDTO
|
||||||
}
|
}
|
||||||
|
|
||||||
// returns a view projection
|
|
||||||
type GetOtherAccountsQuery struct {
|
type GetOtherAccountsQuery struct {
|
||||||
AccountId int64
|
AccountId int64
|
||||||
Result []*OtherAccountDTO
|
Result []*OtherAccountDTO
|
||||||
@@ -87,3 +75,25 @@ type GetAccountByLoginQuery struct {
|
|||||||
Login string
|
Login string
|
||||||
Result *Account
|
Result *Account
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ------------------------
|
||||||
|
// DTO & Projections
|
||||||
|
|
||||||
|
type OtherAccountDTO struct {
|
||||||
|
Id int64 `json:"id"`
|
||||||
|
Email string `json:"email"`
|
||||||
|
Role string `json:"role"`
|
||||||
|
IsUsing bool `json:"isUsing"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type CollaboratorDTO struct {
|
||||||
|
AccountId int64 `json:"accountId"`
|
||||||
|
Email string `json:"email"`
|
||||||
|
Role string `json:"role"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type AccountDTO struct {
|
||||||
|
Email string `json:"email"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Collaborators []*CollaboratorDTO `json:"collaborators"`
|
||||||
|
}
|
||||||
|
|||||||
@@ -25,55 +25,6 @@ type Dashboard struct {
|
|||||||
Data map[string]interface{}
|
Data map[string]interface{}
|
||||||
}
|
}
|
||||||
|
|
||||||
type SearchResult struct {
|
|
||||||
Dashboards []*DashboardSearchHit `json:"dashboards"`
|
|
||||||
Tags []*DashboardTagCloudItem `json:"tags"`
|
|
||||||
TagsOnly bool `json:"tagsOnly"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type DashboardSearchHit struct {
|
|
||||||
Title string `json:"title"`
|
|
||||||
Slug string `json:"slug"`
|
|
||||||
Tags []string `json:"tags"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type DashboardTagCloudItem struct {
|
|
||||||
Term string `json:"term"`
|
|
||||||
Count int `json:"count"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type SearchDashboardsQuery struct {
|
|
||||||
Title string
|
|
||||||
Tag string
|
|
||||||
AccountId int64
|
|
||||||
|
|
||||||
Result []*DashboardSearchHit
|
|
||||||
}
|
|
||||||
|
|
||||||
type GetDashboardTagsQuery struct {
|
|
||||||
AccountId int64
|
|
||||||
Result []*DashboardTagCloudItem
|
|
||||||
}
|
|
||||||
|
|
||||||
type SaveDashboardCommand struct {
|
|
||||||
Dashboard map[string]interface{} `json:"dashboard"`
|
|
||||||
AccountId int64 `json:"-"`
|
|
||||||
|
|
||||||
Result *Dashboard
|
|
||||||
}
|
|
||||||
|
|
||||||
type DeleteDashboardCommand struct {
|
|
||||||
Slug string
|
|
||||||
AccountId int64
|
|
||||||
}
|
|
||||||
|
|
||||||
type GetDashboardQuery struct {
|
|
||||||
Slug string
|
|
||||||
AccountId int64
|
|
||||||
|
|
||||||
Result *Dashboard
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewDashboard(title string) *Dashboard {
|
func NewDashboard(title string) *Dashboard {
|
||||||
dash := &Dashboard{}
|
dash := &Dashboard{}
|
||||||
dash.Data = make(map[string]interface{})
|
dash.Data = make(map[string]interface{})
|
||||||
@@ -121,3 +72,30 @@ func (dash *Dashboard) UpdateSlug() {
|
|||||||
re2 := regexp.MustCompile("\\s")
|
re2 := regexp.MustCompile("\\s")
|
||||||
dash.Slug = re2.ReplaceAllString(re.ReplaceAllString(title, ""), "-")
|
dash.Slug = re2.ReplaceAllString(re.ReplaceAllString(title, ""), "-")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// COMMANDS
|
||||||
|
//
|
||||||
|
|
||||||
|
type SaveDashboardCommand struct {
|
||||||
|
Dashboard map[string]interface{} `json:"dashboard"`
|
||||||
|
AccountId int64 `json:"-"`
|
||||||
|
|
||||||
|
Result *Dashboard
|
||||||
|
}
|
||||||
|
|
||||||
|
type DeleteDashboardCommand struct {
|
||||||
|
Slug string
|
||||||
|
AccountId int64
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// QUERIES
|
||||||
|
//
|
||||||
|
|
||||||
|
type GetDashboardQuery struct {
|
||||||
|
Slug string
|
||||||
|
AccountId int64
|
||||||
|
|
||||||
|
Result *Dashboard
|
||||||
|
}
|
||||||
|
|||||||
@@ -38,16 +38,8 @@ type DataSource struct {
|
|||||||
Updated time.Time
|
Updated time.Time
|
||||||
}
|
}
|
||||||
|
|
||||||
type GetDataSourcesQuery struct {
|
// ----------------------
|
||||||
AccountId int64
|
// COMMANDS
|
||||||
Result []*DataSource
|
|
||||||
}
|
|
||||||
|
|
||||||
type GetDataSourceByIdQuery struct {
|
|
||||||
Id int64
|
|
||||||
AccountId int64
|
|
||||||
Result DataSource
|
|
||||||
}
|
|
||||||
|
|
||||||
type AddDataSourceCommand struct {
|
type AddDataSourceCommand struct {
|
||||||
AccountId int64
|
AccountId int64
|
||||||
@@ -58,6 +50,8 @@ type AddDataSourceCommand struct {
|
|||||||
Password string
|
Password string
|
||||||
Database string
|
Database string
|
||||||
User string
|
User string
|
||||||
|
|
||||||
|
Result *DataSource
|
||||||
}
|
}
|
||||||
|
|
||||||
type UpdateDataSourceCommand struct {
|
type UpdateDataSourceCommand struct {
|
||||||
@@ -76,3 +70,22 @@ type DeleteDataSourceCommand struct {
|
|||||||
Id int64
|
Id int64
|
||||||
AccountId int64
|
AccountId int64
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ---------------------
|
||||||
|
// QUERIES
|
||||||
|
|
||||||
|
type GetDataSourcesQuery struct {
|
||||||
|
AccountId int64
|
||||||
|
Result []*DataSource
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetDataSourceByIdQuery struct {
|
||||||
|
Id int64
|
||||||
|
AccountId int64
|
||||||
|
Result DataSource
|
||||||
|
}
|
||||||
|
|
||||||
|
// ---------------------
|
||||||
|
// EVENTS
|
||||||
|
type DataSourceCreatedEvent struct {
|
||||||
|
}
|
||||||
|
|||||||
31
pkg/models/search.go
Normal file
31
pkg/models/search.go
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
package models
|
||||||
|
|
||||||
|
type SearchResult struct {
|
||||||
|
Dashboards []*DashboardSearchHit `json:"dashboards"`
|
||||||
|
Tags []*DashboardTagCloudItem `json:"tags"`
|
||||||
|
TagsOnly bool `json:"tagsOnly"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type DashboardSearchHit struct {
|
||||||
|
Title string `json:"title"`
|
||||||
|
Slug string `json:"slug"`
|
||||||
|
Tags []string `json:"tags"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type DashboardTagCloudItem struct {
|
||||||
|
Term string `json:"term"`
|
||||||
|
Count int `json:"count"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type SearchDashboardsQuery struct {
|
||||||
|
Title string
|
||||||
|
Tag string
|
||||||
|
AccountId int64
|
||||||
|
|
||||||
|
Result []*DashboardSearchHit
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetDashboardTagsQuery struct {
|
||||||
|
AccountId int64
|
||||||
|
Result []*DashboardTagCloudItem
|
||||||
|
}
|
||||||
9
pkg/services/account/handlers.go
Normal file
9
pkg/services/account/handlers.go
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
package account
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/torkelo/grafana-pro/pkg/bus"
|
||||||
|
)
|
||||||
|
|
||||||
|
func InitAccountService() {
|
||||||
|
bus.ListenTo()
|
||||||
|
}
|
||||||
@@ -60,7 +60,8 @@ func AddDataSource(cmd *m.AddDataSourceCommand) error {
|
|||||||
Updated: time.Now(),
|
Updated: time.Now(),
|
||||||
}
|
}
|
||||||
|
|
||||||
_, err = sess.Insert(ds)
|
_, err = sess.Insert(&ds)
|
||||||
|
cmd.Result = &ds
|
||||||
|
|
||||||
return err
|
return err
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user