Export teams.json
This commit is contained in:
parent
664d78f913
commit
47610f0e2a
2 changed files with 46 additions and 1 deletions
|
|
@ -95,6 +95,39 @@ func nginxGenTeam() (string, error) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type exportedTeam struct {
|
||||||
|
Name string `json:"name"`
|
||||||
|
Color string `json:"color"`
|
||||||
|
Rank int64 `json:"rank"`
|
||||||
|
Points int64 `json:"score"`
|
||||||
|
Members []fic.Member `json:"members"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func exportTeams() (interface{}, error) {
|
||||||
|
if teams, err := fic.GetTeams(); err != nil {
|
||||||
|
return nil, err
|
||||||
|
} else {
|
||||||
|
ret := map[string]exportedTeam{}
|
||||||
|
for _, team := range teams {
|
||||||
|
if points, err := team.GetPoints(); err != nil {
|
||||||
|
return nil, err
|
||||||
|
} else if members, err := team.GetMembers(); err != nil {
|
||||||
|
return nil, err
|
||||||
|
} else {
|
||||||
|
ret[fmt.Sprintf("%d", team.Id)] = exportedTeam{
|
||||||
|
team.Name,
|
||||||
|
fmt.Sprintf("#%x", team.Color),
|
||||||
|
1,
|
||||||
|
points,
|
||||||
|
members,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret, nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
type uploadedTeam struct {
|
type uploadedTeam struct {
|
||||||
Name string
|
Name string
|
||||||
Color int64
|
Color int64
|
||||||
|
|
@ -119,7 +152,9 @@ func listTeam(args []string, body []byte) (interface{}, error) {
|
||||||
return CertificateAPI(team, args[2:])
|
return CertificateAPI(team, args[2:])
|
||||||
}
|
}
|
||||||
} else if len(args) == 1 {
|
} else if len(args) == 1 {
|
||||||
if args[0] == "nginx" {
|
if args[0] == "teams.json" {
|
||||||
|
return exportTeams()
|
||||||
|
} else if args[0] == "nginx" {
|
||||||
return nginxGenTeam()
|
return nginxGenTeam()
|
||||||
} else if tid, err := strconv.Atoi(string(args[0])); err != nil {
|
} else if tid, err := strconv.Atoi(string(args[0])); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
|
|
||||||
|
|
@ -71,6 +71,16 @@ func (t Team) Delete() (int64, error) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (t Team) GetPoints() (int64, error) {
|
||||||
|
var nb *int64
|
||||||
|
err := DBQueryRow("SELECT SUM(E.gain) FROM exercice_solved S INNER JOIN exercices E ON E.id_exercice = S.id_exercice WHERE id_team = ?", t.Id).Scan(&nb)
|
||||||
|
if nb != nil {
|
||||||
|
return *nb, err
|
||||||
|
} else {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (t Team) HasAccess(e Exercice) bool {
|
func (t Team) HasAccess(e Exercice) bool {
|
||||||
if e.Depend == nil {
|
if e.Depend == nil {
|
||||||
return true
|
return true
|
||||||
|
|
|
||||||
Reference in a new issue