1
0
Fork 0
empact/db/members.go

98 lines
2.2 KiB
Go
Raw Normal View History

2015-03-19 12:50:18 +00:00
package db
import (
"fmt"
"strconv"
"strings"
"time"
)
2015-03-20 15:22:49 +00:00
func SaveOrgMembers(orgID int, members []int) {
2015-03-21 14:58:40 +00:00
defer measure(time.Now(), "SaveOrgMembers")
2015-03-19 12:50:18 +00:00
tx := db.MustBegin()
var ids = []string{}
for _, id := range members {
2015-03-20 15:22:49 +00:00
ids = append(ids, strconv.Itoa(id))
2015-03-19 12:50:18 +00:00
}
tx.MustExec(fmt.Sprintf(`
delete from org_members
where
org_id = %d and
user_id not in (%s)
2015-03-19 13:31:28 +00:00
`, orgID, strings.Join(ids, ", ")))
2015-03-19 12:50:18 +00:00
var values = []string{}
for _, id := range members {
2015-03-19 13:31:28 +00:00
values = append(values, fmt.Sprintf("(%d, %d)", orgID, id))
2015-03-19 12:50:18 +00:00
}
tx.MustExec(`
2015-03-21 14:16:09 +00:00
insert ignore into org_members (org_id, user_id)
2015-03-19 12:50:18 +00:00
values ` + strings.Join(values, ", ") + `
`)
if err := tx.Commit(); err != nil {
panic(err)
}
}
2015-03-19 13:31:28 +00:00
2015-03-20 15:22:49 +00:00
func SaveTeamMembers(orgID, teamID int, members []int) {
2015-03-21 14:58:40 +00:00
defer measure(time.Now(), "SaveTeamMembers")
2015-03-19 13:31:28 +00:00
tx := db.MustBegin()
var ids = []string{}
for _, id := range members {
2015-03-20 15:22:49 +00:00
ids = append(ids, strconv.Itoa(id))
2015-03-19 13:31:28 +00:00
}
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(`
2015-03-21 14:16:09 +00:00
insert ignore into team_members (org_id, team_id, user_id)
2015-03-19 13:31:28 +00:00
values ` + strings.Join(values, ", ") + `
`)
if err := tx.Commit(); err != nil {
panic(err)
}
}
2015-03-20 10:45:04 +00:00
2015-03-20 15:22:49 +00:00
func SaveTeamRepos(orgID, teamID int, repos []int) {
2015-03-21 14:58:40 +00:00
defer measure(time.Now(), "SaveTeamRepos")
2015-03-20 10:45:04 +00:00
tx := db.MustBegin()
var ids = []string{}
for _, id := range repos {
2015-03-20 15:22:49 +00:00
ids = append(ids, strconv.Itoa(id))
2015-03-20 10:45:04 +00:00
}
tx.MustExec(fmt.Sprintf(`
delete from team_repos
where
org_id = %d and
team_id = %d and
repo_id not in (%s)
`, orgID, teamID, strings.Join(ids, ", ")))
var values = []string{}
for _, id := range repos {
values = append(values, fmt.Sprintf("(%d, %d, %d)", orgID, teamID, id))
}
tx.MustExec(`
2015-03-21 14:16:09 +00:00
insert ignore into team_repos (org_id, team_id, repo_id)
2015-03-20 10:45:04 +00:00
values ` + strings.Join(values, ", ") + `
`)
if err := tx.Commit(); err != nil {
panic(err)
}
}