From a37a7ce3157fd25e6b71ac9a5e06ffcaffcc5074 Mon Sep 17 00:00:00 2001 From: Gregory Eremin Date: Thu, 19 Mar 2015 20:31:28 +0700 Subject: [PATCH] Save team members function --- db/members.go | 37 ++++++++++++++++++++++++++++++++++--- 1 file changed, 34 insertions(+), 3 deletions(-) diff --git a/db/members.go b/db/members.go index fb30f24..85b93c5 100644 --- a/db/members.go +++ b/db/members.go @@ -7,7 +7,7 @@ import ( "time" ) -func SaveOrgMembers(org uint64, members []uint64) { +func SaveOrgMembers(orgID uint64, members []uint64) { defer measure("SaveOrgMembers", time.Now()) tx := db.MustBegin() @@ -20,11 +20,11 @@ func SaveOrgMembers(org uint64, members []uint64) { where org_id = %d and user_id not in (%s) - `, org, strings.Join(ids, ", "))) + `, orgID, strings.Join(ids, ", "))) var values = []string{} for _, id := range members { - values = append(values, fmt.Sprintf("(%d, %d)", org, id)) + values = append(values, fmt.Sprintf("(%d, %d)", orgID, id)) } tx.MustExec(` insert into org_members (org_id, user_id) @@ -36,3 +36,34 @@ func SaveOrgMembers(org uint64, members []uint64) { panic(err) } } + +func SaveTeamMembers(orgID, teamID uint64, members []uint64) { + defer measure("SaveTeamMembers", time.Now()) + tx := db.MustBegin() + + var ids = []string{} + for _, id := range members { + ids = append(ids, strconv.FormatUint(id, 10)) + } + tx.MustExec(fmt.Sprintf(` + delete from team_members + where + org_id = %d and + team_id = %d and + user_id not in (%s) + `, orgID, teamID, strings.Join(ids, ", "))) + + var values = []string{} + for _, id := range members { + values = append(values, fmt.Sprintf("(%d, %d, %d)", orgID, teamID, id)) + } + tx.MustExec(` + insert into team_members (org_id, team_id, user_id) + values ` + strings.Join(values, ", ") + ` + on duplicate key update org_id = org_id + `) + + if err := tx.Commit(); err != nil { + panic(err) + } +}