team_member.go 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. package models
  2. import (
  3. "errors"
  4. "time"
  5. )
  6. // Typed errors
  7. var (
  8. ErrTeamMemberAlreadyAdded = errors.New("User is already added to this team")
  9. )
  10. // TeamMember model
  11. type TeamMember struct {
  12. Id int64
  13. OrgId int64
  14. TeamId int64
  15. UserId int64
  16. External bool
  17. Permission int64
  18. Created time.Time
  19. Updated time.Time
  20. }
  21. // ---------------------
  22. // COMMANDS
  23. type AddTeamMemberCommand struct {
  24. UserId int64 `json:"userId" binding:"Required"`
  25. OrgId int64 `json:"-"`
  26. TeamId int64 `json:"-"`
  27. External bool `json:"-"`
  28. Permission int64 `json:"-"`
  29. }
  30. type RemoveTeamMemberCommand struct {
  31. OrgId int64 `json:"-"`
  32. UserId int64
  33. TeamId int64
  34. }
  35. // ----------------------
  36. // QUERIES
  37. type GetTeamMembersQuery struct {
  38. OrgId int64
  39. TeamId int64
  40. UserId int64
  41. External bool
  42. Result []*TeamMemberDTO
  43. }
  44. // ----------------------
  45. // Projections and DTOs
  46. type TeamMemberDTO struct {
  47. OrgId int64 `json:"orgId"`
  48. TeamId int64 `json:"teamId"`
  49. UserId int64 `json:"userId"`
  50. External bool `json:"-"`
  51. Email string `json:"email"`
  52. Login string `json:"login"`
  53. AvatarUrl string `json:"avatarUrl"`
  54. Labels []string `json:"labels"`
  55. Permission int64 `json:"permission"`
  56. }