account.go 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. package sqlstore
  2. import (
  3. "time"
  4. "github.com/go-xorm/xorm"
  5. "github.com/torkelo/grafana-pro/pkg/bus"
  6. m "github.com/torkelo/grafana-pro/pkg/models"
  7. )
  8. func init() {
  9. bus.AddHandler("sql", GetAccountById)
  10. bus.AddHandler("sql", CreateAccount)
  11. bus.AddHandler("sql", SetUsingAccount)
  12. bus.AddHandler("sql", UpdateAccount)
  13. bus.AddHandler("sql", GetAccountByName)
  14. }
  15. func GetAccountById(query *m.GetAccountByIdQuery) error {
  16. var account m.Account
  17. exists, err := x.Id(query.Id).Get(&account)
  18. if err != nil {
  19. return err
  20. }
  21. if !exists {
  22. return m.ErrAccountNotFound
  23. }
  24. query.Result = &account
  25. return nil
  26. }
  27. func GetAccountByName(query *m.GetAccountByNameQuery) error {
  28. var account m.Account
  29. exists, err := x.Where("name=?", query.Name).Get(&account)
  30. if err != nil {
  31. return err
  32. }
  33. if !exists {
  34. return m.ErrAccountNotFound
  35. }
  36. query.Result = &account
  37. return nil
  38. }
  39. func CreateAccount(cmd *m.CreateAccountCommand) error {
  40. return inTransaction(func(sess *xorm.Session) error {
  41. account := m.Account{
  42. Name: cmd.Name,
  43. Created: time.Now(),
  44. Updated: time.Now(),
  45. }
  46. if _, err := sess.Insert(&account); err != nil {
  47. return err
  48. }
  49. // create inital admin account user
  50. user := m.AccountUser{
  51. AccountId: account.Id,
  52. UserId: cmd.UserId,
  53. Role: m.ROLE_ADMIN,
  54. Created: time.Now(),
  55. Updated: time.Now(),
  56. }
  57. _, err := sess.Insert(&user)
  58. cmd.Result = account
  59. return err
  60. })
  61. }
  62. func UpdateAccount(cmd *m.UpdateAccountCommand) error {
  63. return inTransaction(func(sess *xorm.Session) error {
  64. account := m.Account{
  65. Name: cmd.Name,
  66. Updated: time.Now(),
  67. }
  68. _, err := sess.Id(cmd.AccountId).Update(&account)
  69. return err
  70. })
  71. }