2014-11-14 10:13:33 -06:00
|
|
|
package sqlstore
|
|
|
|
|
2014-12-19 02:43:16 -06:00
|
|
|
import (
|
2014-12-19 03:45:22 -06:00
|
|
|
"time"
|
|
|
|
|
|
|
|
"github.com/go-xorm/xorm"
|
|
|
|
|
2014-12-19 02:43:16 -06:00
|
|
|
"github.com/torkelo/grafana-pro/pkg/bus"
|
|
|
|
m "github.com/torkelo/grafana-pro/pkg/models"
|
|
|
|
)
|
2014-11-14 10:13:33 -06:00
|
|
|
|
2014-12-19 02:43:16 -06:00
|
|
|
func init() {
|
2015-01-27 08:45:27 -06:00
|
|
|
bus.AddHandler("sql", GetAccountById)
|
2014-12-19 04:53:27 -06:00
|
|
|
bus.AddHandler("sql", CreateAccount)
|
2014-12-19 06:12:47 -06:00
|
|
|
bus.AddHandler("sql", SetUsingAccount)
|
2015-01-15 12:14:47 -06:00
|
|
|
bus.AddHandler("sql", UpdateAccount)
|
2015-01-27 08:45:27 -06:00
|
|
|
bus.AddHandler("sql", GetAccountByName)
|
2014-12-19 04:53:27 -06:00
|
|
|
}
|
|
|
|
|
2015-01-27 08:45:27 -06:00
|
|
|
func GetAccountById(query *m.GetAccountByIdQuery) error {
|
2015-01-26 08:42:22 -06:00
|
|
|
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
|
|
|
|
}
|
|
|
|
|
2015-01-27 08:45:27 -06:00
|
|
|
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
|
|
|
|
}
|
|
|
|
|
2014-12-19 04:53:27 -06:00
|
|
|
func CreateAccount(cmd *m.CreateAccountCommand) error {
|
|
|
|
return inTransaction(func(sess *xorm.Session) error {
|
|
|
|
|
|
|
|
account := m.Account{
|
2015-01-19 11:01:04 -06:00
|
|
|
Name: cmd.Name,
|
|
|
|
Created: time.Now(),
|
|
|
|
Updated: time.Now(),
|
2014-12-19 04:53:27 -06:00
|
|
|
}
|
|
|
|
|
2015-01-20 09:29:48 -06:00
|
|
|
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)
|
2014-12-19 04:53:27 -06:00
|
|
|
cmd.Result = account
|
2015-01-20 09:29:48 -06:00
|
|
|
|
2014-12-19 04:53:27 -06:00
|
|
|
return err
|
|
|
|
})
|
2014-12-19 02:43:16 -06:00
|
|
|
}
|
|
|
|
|
2015-01-15 12:14:47 -06:00
|
|
|
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
|
|
|
|
})
|
|
|
|
}
|