user.go 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  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. Company string
  18. IsAdmin bool
  19. AccountId int64
  20. Created time.Time
  21. Updated time.Time
  22. }
  23. // ---------------------
  24. // COMMANDS
  25. type CreateUserCommand struct {
  26. Email string `json:"email" binding:"Required"`
  27. Login string `json:"login"`
  28. Name string `json:"name"`
  29. Company string `json:"compay"`
  30. Password string `json:"password" binding:"Required"`
  31. Salt string `json:"-"`
  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. UserId int64
  69. AccountId int64
  70. AccountName string
  71. AccountRole RoleType
  72. Login string
  73. Name string
  74. Email string
  75. ApiKeyId int64
  76. IsGrafanaAdmin bool
  77. }
  78. type UserDTO struct {
  79. Email string `json:"email"`
  80. Name string `json:"name"`
  81. Login string `json:"login"`
  82. }
  83. type UserSearchHitDTO struct {
  84. Id int64 `json:"id"`
  85. Name string `json:"name"`
  86. Login string `json:"login"`
  87. Email string `json:"email"`
  88. IsAdmin bool `json:"isAdmin"`
  89. }