37 lines
697 B
Go
37 lines
697 B
Go
package models
|
|
|
|
// Create creates a new team <-> list relation
|
|
func (tl *TeamList) Create(doer *User) (err error) {
|
|
|
|
// Check if the rights are valid
|
|
if err = tl.Right.isValid(); err != nil {
|
|
return
|
|
}
|
|
|
|
// Check if the team exists
|
|
_, err = GetTeamByID(tl.TeamID)
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
// Check if the list exists
|
|
_, err = GetListByID(tl.ListID)
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
// Check if the team is already on the list
|
|
exists, err := x.Where("team_id = ?", tl.TeamID).
|
|
And("list_id = ?", tl.ListID).
|
|
Get(&TeamList{})
|
|
if err != nil {
|
|
return
|
|
}
|
|
if exists {
|
|
return ErrTeamAlreadyHasAccess{tl.TeamID, tl.ListID}
|
|
}
|
|
|
|
// Insert the new team
|
|
_, err = x.Insert(tl)
|
|
return
|
|
}
|