mirror of
https://github.com/grafana/grafana.git
synced 2025-02-12 00:25:46 -06:00
91 lines
1.7 KiB
Go
91 lines
1.7 KiB
Go
package sqlstore
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/go-xorm/xorm"
|
|
|
|
"github.com/torkelo/grafana-pro/pkg/bus"
|
|
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 inTransaction(func(sess *xorm.Session) error {
|
|
|
|
account := m.Account{
|
|
Name: cmd.Name,
|
|
Created: time.Now(),
|
|
Updated: time.Now(),
|
|
}
|
|
|
|
if _, err := sess.Insert(&account); err != nil {
|
|
return err
|
|
}
|
|
|
|
// create inital admin account user
|
|
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
|
|
|
|
return err
|
|
})
|
|
}
|
|
|
|
func UpdateAccount(cmd *m.UpdateAccountCommand) error {
|
|
return inTransaction(func(sess *xorm.Session) error {
|
|
|
|
account := m.Account{
|
|
Name: cmd.Name,
|
|
Updated: time.Now(),
|
|
}
|
|
|
|
_, err := sess.Id(cmd.AccountId).Update(&account)
|
|
return err
|
|
})
|
|
}
|