account.go 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. package sqlstore
  2. import (
  3. "time"
  4. "github.com/grafana/grafana/pkg/bus"
  5. "github.com/grafana/grafana/pkg/events"
  6. m "github.com/grafana/grafana/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 inTransaction2(func(sess *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. user := m.AccountUser{
  50. AccountId: account.Id,
  51. UserId: cmd.UserId,
  52. Role: m.ROLE_ADMIN,
  53. Created: time.Now(),
  54. Updated: time.Now(),
  55. }
  56. _, err := sess.Insert(&user)
  57. cmd.Result = account
  58. sess.publishAfterCommit(&events.AccountCreated{
  59. Timestamp: account.Created,
  60. Id: account.Id,
  61. Name: account.Name,
  62. })
  63. return err
  64. })
  65. }
  66. func UpdateAccount(cmd *m.UpdateAccountCommand) error {
  67. return inTransaction2(func(sess *session) error {
  68. account := m.Account{
  69. Name: cmd.Name,
  70. Updated: time.Now(),
  71. }
  72. if _, err := sess.Id(cmd.AccountId).Update(&account); err != nil {
  73. return err
  74. }
  75. sess.publishAfterCommit(&events.AccountUpdated{
  76. Timestamp: account.Updated,
  77. Id: account.Id,
  78. Name: account.Name,
  79. })
  80. return nil
  81. })
  82. }