| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- package models
- import (
- "errors"
- "time"
- )
- // Typed errors
- var (
- ErrTeamNotFound = errors.New("Team not found")
- ErrTeamNameTaken = errors.New("Team name is taken")
- ErrTeamMemberNotFound = errors.New("Team member not found")
- ErrLastTeamAdmin = errors.New("Not allowed to remove last admin")
- ErrNotAllowedToUpdateTeam = errors.New("User not allowed to update team")
- ErrNotAllowedToUpdateTeamInDifferentOrg = errors.New("User not allowed to update team in another org")
- )
- // Team model
- type Team struct {
- Id int64 `json:"id"`
- OrgId int64 `json:"orgId"`
- Name string `json:"name"`
- Email string `json:"email"`
- Created time.Time `json:"created"`
- Updated time.Time `json:"updated"`
- }
- // ---------------------
- // COMMANDS
- type CreateTeamCommand struct {
- Name string `json:"name" binding:"Required"`
- Email string `json:"email"`
- OrgId int64 `json:"-"`
- Result Team `json:"-"`
- }
- type UpdateTeamCommand struct {
- Id int64
- Name string
- Email string
- OrgId int64 `json:"-"`
- }
- type DeleteTeamCommand struct {
- OrgId int64
- Id int64
- }
- type GetTeamByIdQuery struct {
- OrgId int64
- Id int64
- Result *TeamDTO
- }
- type GetTeamsByUserQuery struct {
- OrgId int64
- UserId int64 `json:"userId"`
- Result []*TeamDTO `json:"teams"`
- }
- type SearchTeamsQuery struct {
- Query string
- Name string
- Limit int
- Page int
- OrgId int64
- UserIdFilter int64
- Result SearchTeamQueryResult
- }
- type TeamDTO struct {
- Id int64 `json:"id"`
- OrgId int64 `json:"orgId"`
- Name string `json:"name"`
- Email string `json:"email"`
- AvatarUrl string `json:"avatarUrl"`
- MemberCount int64 `json:"memberCount"`
- Permission PermissionType `json:"permission"`
- }
- type SearchTeamQueryResult struct {
- TotalCount int64 `json:"totalCount"`
- Teams []*TeamDTO `json:"teams"`
- Page int `json:"page"`
- PerPage int `json:"perPage"`
- }
- type IsAdminOfTeamsQuery struct {
- SignedInUser *SignedInUser
- Result bool
- }
|