team_member.go 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  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. Created time.Time
  18. Updated time.Time
  19. }
  20. // ---------------------
  21. // COMMANDS
  22. type AddTeamMemberCommand struct {
  23. UserId int64 `json:"userId" binding:"Required"`
  24. OrgId int64 `json:"-"`
  25. TeamId int64 `json:"-"`
  26. External bool `json:"-"`
  27. }
  28. type RemoveTeamMemberCommand struct {
  29. OrgId int64 `json:"-"`
  30. UserId int64
  31. TeamId int64
  32. }
  33. // ----------------------
  34. // QUERIES
  35. type GetTeamMembersQuery struct {
  36. OrgId int64
  37. TeamId int64
  38. UserId int64
  39. External bool
  40. Result []*TeamMemberDTO
  41. }
  42. // ----------------------
  43. // Projections and DTOs
  44. type TeamMemberDTO struct {
  45. OrgId int64 `json:"orgId"`
  46. TeamId int64 `json:"teamId"`
  47. UserId int64 `json:"userId"`
  48. External bool `json:"-"`
  49. Email string `json:"email"`
  50. Login string `json:"login"`
  51. AvatarUrl string `json:"avatarUrl"`
  52. Labels []string `json:"labels"`
  53. }