user.go 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  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. Email string
  13. Name string
  14. Login string
  15. Password string
  16. Salt string
  17. Rands string
  18. Company string
  19. IsAdmin bool
  20. AccountId int64
  21. Created time.Time
  22. Updated time.Time
  23. }
  24. // ---------------------
  25. // COMMANDS
  26. type CreateUserCommand struct {
  27. Email string `json:"email" binding:"Required"`
  28. Login string `json:"login"`
  29. Name string `json:"name"`
  30. Company string `json:"compay"`
  31. Password string `json:"password" binding:"Required"`
  32. IsAdmin bool `json:"-"`
  33. Result User `json:"-"`
  34. }
  35. type UpdateUserCommand struct {
  36. Name string `json:"name"`
  37. Email string `json:"email"`
  38. Login string `json:"login"`
  39. UserId int64 `json:"-"`
  40. }
  41. type SetUsingAccountCommand struct {
  42. UserId int64
  43. AccountId int64
  44. }
  45. // ----------------------
  46. // QUERIES
  47. type GetUserByLoginQuery struct {
  48. LoginOrEmail string
  49. Result *User
  50. }
  51. type GetSignedInUserQuery struct {
  52. UserId int64
  53. Result *SignedInUser
  54. }
  55. type GetUserInfoQuery struct {
  56. UserId int64
  57. Result UserDTO
  58. }
  59. type SearchUsersQuery struct {
  60. Query string
  61. Page int
  62. Limit int
  63. Result []*UserSearchHitDTO
  64. }
  65. // ------------------------
  66. // DTO & Projections
  67. type SignedInUser struct {
  68. IsSignedIn bool
  69. IsAnonymous bool
  70. UserId int64
  71. AccountId int64
  72. AccountName string
  73. AccountRole RoleType
  74. Login string
  75. Name string
  76. Email string
  77. ApiKeyId int64
  78. IsGrafanaAdmin bool
  79. }
  80. type UserDTO struct {
  81. Email string `json:"email"`
  82. Name string `json:"name"`
  83. Login string `json:"login"`
  84. }
  85. type UserSearchHitDTO struct {
  86. Id int64 `json:"id"`
  87. Name string `json:"name"`
  88. Login string `json:"login"`
  89. Email string `json:"email"`
  90. IsAdmin bool `json:"isAdmin"`
  91. }