mirror of
https://github.com/grafana/grafana.git
synced 2025-02-14 17:43:35 -06:00
104 lines
1.9 KiB
Go
104 lines
1.9 KiB
Go
package sqlstore
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/torkelo/grafana-pro/pkg/bus"
|
|
"github.com/torkelo/grafana-pro/pkg/events"
|
|
m "github.com/torkelo/grafana-pro/pkg/models"
|
|
)
|
|
|
|
func init() {
|
|
bus.AddHandler("sql", GetAccountById)
|
|
bus.AddHandler("sql", CreateAccount)
|
|
bus.AddHandler("sql", SetUsingAccount)
|
|
bus.AddHandler("sql", UpdateAccount)
|
|
bus.AddHandler("sql", GetAccountByName)
|
|
}
|
|
|
|
func GetAccountById(query *m.GetAccountByIdQuery) error {
|
|
var account m.Account
|
|
exists, err := x.Id(query.Id).Get(&account)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
if !exists {
|
|
return m.ErrAccountNotFound
|
|
}
|
|
|
|
query.Result = &account
|
|
return nil
|
|
}
|
|
|
|
func GetAccountByName(query *m.GetAccountByNameQuery) error {
|
|
var account m.Account
|
|
exists, err := x.Where("name=?", query.Name).Get(&account)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
if !exists {
|
|
return m.ErrAccountNotFound
|
|
}
|
|
|
|
query.Result = &account
|
|
return nil
|
|
}
|
|
|
|
func CreateAccount(cmd *m.CreateAccountCommand) error {
|
|
return inTransaction2(func(sess *session) error {
|
|
|
|
account := m.Account{
|
|
Name: cmd.Name,
|
|
Created: time.Now(),
|
|
Updated: time.Now(),
|
|
}
|
|
|
|
if _, err := sess.Insert(&account); err != nil {
|
|
return err
|
|
}
|
|
|
|
user := m.AccountUser{
|
|
AccountId: account.Id,
|
|
UserId: cmd.UserId,
|
|
Role: m.ROLE_ADMIN,
|
|
Created: time.Now(),
|
|
Updated: time.Now(),
|
|
}
|
|
|
|
_, err := sess.Insert(&user)
|
|
cmd.Result = account
|
|
|
|
sess.publishAfterCommit(&events.AccountCreated{
|
|
Timestamp: account.Created,
|
|
Id: account.Id,
|
|
Name: account.Name,
|
|
})
|
|
|
|
return err
|
|
})
|
|
}
|
|
|
|
func UpdateAccount(cmd *m.UpdateAccountCommand) error {
|
|
return inTransaction2(func(sess *session) error {
|
|
|
|
account := m.Account{
|
|
Name: cmd.Name,
|
|
Updated: time.Now(),
|
|
}
|
|
|
|
if _, err := sess.Id(cmd.AccountId).Update(&account); err != nil {
|
|
return err
|
|
}
|
|
|
|
sess.publishAfterCommit(&events.AccountUpdated{
|
|
Timestamp: account.Updated,
|
|
Id: account.Id,
|
|
Name: account.Name,
|
|
})
|
|
|
|
return nil
|
|
})
|
|
}
|