user.go 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. package models
  2. import (
  3. "errors"
  4. "time"
  5. )
  6. // Typed errors
  7. var (
  8. ErrUserNotFound = errors.New("User not found")
  9. )
  10. type User struct {
  11. Id int64
  12. Version int
  13. Email string
  14. Name string
  15. Login string
  16. Password string
  17. Salt string
  18. Rands string
  19. Company string
  20. EmailVerified bool
  21. Theme string
  22. IsAdmin bool
  23. AccountId int64
  24. Created time.Time
  25. Updated time.Time
  26. }
  27. // ---------------------
  28. // COMMANDS
  29. type CreateUserCommand struct {
  30. Email string `json:"email" binding:"Required"`
  31. Login string `json:"login"`
  32. Name string `json:"name"`
  33. Company string `json:"compay"`
  34. Password string `json:"password" binding:"Required"`
  35. IsAdmin bool `json:"-"`
  36. Result User `json:"-"`
  37. }
  38. type UpdateUserCommand struct {
  39. Name string `json:"name"`
  40. Email string `json:"email"`
  41. Login string `json:"login"`
  42. UserId int64 `json:"-"`
  43. }
  44. type DeleteUserCommand struct {
  45. UserId int64
  46. }
  47. type SetUsingAccountCommand struct {
  48. UserId int64
  49. AccountId int64
  50. }
  51. // ----------------------
  52. // QUERIES
  53. type GetUserByLoginQuery struct {
  54. LoginOrEmail string
  55. Result *User
  56. }
  57. type GetUserByIdQuery struct {
  58. Id int64
  59. Result *User
  60. }
  61. type GetSignedInUserQuery struct {
  62. UserId int64
  63. Result *SignedInUser
  64. }
  65. type GetUserInfoQuery struct {
  66. UserId int64
  67. Result UserDTO
  68. }
  69. type SearchUsersQuery struct {
  70. Query string
  71. Page int
  72. Limit int
  73. Result []*UserSearchHitDTO
  74. }
  75. // ------------------------
  76. // DTO & Projections
  77. type SignedInUser struct {
  78. UserId int64
  79. AccountId int64
  80. AccountName string
  81. AccountRole RoleType
  82. Login string
  83. Name string
  84. Email string
  85. ApiKeyId int64
  86. IsGrafanaAdmin bool
  87. }
  88. type UserDTO struct {
  89. Email string `json:"email"`
  90. Name string `json:"name"`
  91. Login string `json:"login"`
  92. }
  93. type UserSearchHitDTO struct {
  94. Id int64 `json:"id"`
  95. Name string `json:"name"`
  96. Login string `json:"login"`
  97. Email string `json:"email"`
  98. IsAdmin bool `json:"isAdmin"`
  99. }