account.go 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  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. bus.AddHandler("sql", GetAccountsQuery)
  15. }
  16. func GetAccountsQuery(query *m.GetAccountsQuery) error {
  17. return x.Find(&query.Result)
  18. }
  19. func GetAccountById(query *m.GetAccountByIdQuery) error {
  20. var account m.Account
  21. exists, err := x.Id(query.Id).Get(&account)
  22. if err != nil {
  23. return err
  24. }
  25. if !exists {
  26. return m.ErrAccountNotFound
  27. }
  28. query.Result = &account
  29. return nil
  30. }
  31. func GetAccountByName(query *m.GetAccountByNameQuery) error {
  32. var account m.Account
  33. exists, err := x.Where("name=?", query.Name).Get(&account)
  34. if err != nil {
  35. return err
  36. }
  37. if !exists {
  38. return m.ErrAccountNotFound
  39. }
  40. query.Result = &account
  41. return nil
  42. }
  43. func CreateAccount(cmd *m.CreateAccountCommand) error {
  44. return inTransaction2(func(sess *session) error {
  45. account := m.Account{
  46. Name: cmd.Name,
  47. Created: time.Now(),
  48. Updated: time.Now(),
  49. }
  50. if _, err := sess.Insert(&account); err != nil {
  51. return err
  52. }
  53. user := m.AccountUser{
  54. AccountId: account.Id,
  55. UserId: cmd.UserId,
  56. Role: m.ROLE_ADMIN,
  57. Created: time.Now(),
  58. Updated: time.Now(),
  59. }
  60. _, err := sess.Insert(&user)
  61. cmd.Result = account
  62. sess.publishAfterCommit(&events.AccountCreated{
  63. Timestamp: account.Created,
  64. Id: account.Id,
  65. Name: account.Name,
  66. })
  67. return err
  68. })
  69. }
  70. func UpdateAccount(cmd *m.UpdateAccountCommand) error {
  71. return inTransaction2(func(sess *session) error {
  72. account := m.Account{
  73. Name: cmd.Name,
  74. Updated: time.Now(),
  75. }
  76. if _, err := sess.Id(cmd.AccountId).Update(&account); err != nil {
  77. return err
  78. }
  79. sess.publishAfterCommit(&events.AccountUpdated{
  80. Timestamp: account.Updated,
  81. Id: account.Id,
  82. Name: account.Name,
  83. })
  84. return nil
  85. })
  86. }