ripple-api/app/v1/badge.go

59 lines
1.1 KiB
Go

package v1
import (
"database/sql"
"github.com/osuripple/api/common"
)
type badgeData struct {
ID int `json:"id"`
Name string `json:"name"`
Icon string `json:"icon"`
}
// BadgeByIDGET is the handler for /badge/:id
func BadgeByIDGET(md common.MethodData) (r common.Response) {
b := badgeData{}
err := md.DB.QueryRow("SELECT id, name, icon FROM badges WHERE id=? LIMIT 1", md.C.Param("id")).Scan(&b.ID, &b.Name, &b.Icon)
switch {
case err == sql.ErrNoRows:
r.Code = 404
r.Message = "No such badge was found"
return
case err != nil:
md.Err(err)
r = Err500
return
}
r.Code = 200
r.Data = b
return
}
// BadgesGET retrieves all the badges on this ripple instance.
func BadgesGET(md common.MethodData) (r common.Response) {
var badges []badgeData
rows, err := md.DB.Query("SELECT id, name, icon FROM badges")
if err != nil {
md.Err(err)
r = Err500
return
}
defer rows.Close()
for rows.Next() {
nb := badgeData{}
err = rows.Scan(&nb.ID, &nb.Name, &nb.Icon)
if err != nil {
md.Err(err)
}
badges = append(badges, nb)
}
if err := rows.Err(); err != nil {
md.Err(err)
}
r.Code = 200
r.Data = badges
return
}