func (s SqlTeamStore) UpdateMember(member *model.TeamMember) StoreChannel { storeChannel := make(StoreChannel, 1) go func() { result := StoreResult{} member.PreUpdate() if result.Err = member.IsValid(); result.Err != nil { storeChannel <- result close(storeChannel) return } if _, err := s.GetMaster().Update(member); err != nil { result.Err = model.NewLocAppError("SqlTeamStore.UpdateMember", "store.sql_team.save_member.save.app_error", nil, err.Error()) } else { result.Data = member } storeChannel <- result close(storeChannel) }() return storeChannel }
func (s SqlTeamStore) SaveMember(member *model.TeamMember) StoreChannel { storeChannel := make(StoreChannel) go func() { result := StoreResult{} if result.Err = member.IsValid(); result.Err != nil { storeChannel <- result close(storeChannel) return } if count, err := s.GetMaster().SelectInt("SELECT COUNT(0) FROM TeamMembers WHERE TeamId = :TeamId", map[string]interface{}{"TeamId": member.TeamId}); err != nil { result.Err = model.NewLocAppError("SqlUserStore.Save", "store.sql_user.save.member_count.app_error", nil, "teamId="+member.TeamId+", "+err.Error()) storeChannel <- result close(storeChannel) return } else if int(count) > utils.Cfg.TeamSettings.MaxUsersPerTeam { result.Err = model.NewLocAppError("SqlUserStore.Save", "store.sql_user.save.max_accounts.app_error", nil, "teamId="+member.TeamId) storeChannel <- result close(storeChannel) return } if err := s.GetMaster().Insert(member); err != nil { if IsUniqueConstraintError(err.Error(), []string{"TeamId", "teammembers_pkey", "PRIMARY"}) { result.Err = model.NewLocAppError("SqlTeamStore.SaveMember", TEAM_MEMBER_EXISTS_ERROR, nil, "team_id="+member.TeamId+", user_id="+member.UserId+", "+err.Error()) } else { result.Err = model.NewLocAppError("SqlTeamStore.SaveMember", "store.sql_team.save_member.save.app_error", nil, "team_id="+member.TeamId+", user_id="+member.UserId+", "+err.Error()) } } else { result.Data = member } storeChannel <- result close(storeChannel) }() return storeChannel }