user.go 1.9 KB

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