This commit is contained in:
nemunaire 2018-07-10 00:33:00 +02:00
commit f25068075c
7 changed files with 113 additions and 22 deletions

View file

@ -15,35 +15,63 @@ func init() {
return ckh.GetChecks()
}))
router.GET("/api/rooms/:rid/items/:iid/checks/", apiHandler(itemHandler(func (item ckh.Item, _ ckh.Room, _ []byte) (interface{}, error) {
router.GET("/api/items/:iid/checks/", apiHandler(itemHandler(func (item ckh.Item, _ []byte) (interface{}, error) {
return item.GetChecks()
})))
router.POST("/api/rooms/:rid/items/:iid/checks/", apiHandler(itemHandler(newCheck)))
router.POST("/api/items/:iid/checks/", apiHandler(itemHandler(newCheck)))
router.GET("/api/rooms/:rid/items/:iid/checks/:cid", apiHandler(checkHandler(func (check ckh.Check, _ ckh.Item, _ ckh.Room, _ []byte) (interface{}, error) {
router.GET("/api/items/:iid/checks/:cid", apiHandler(checkHandler(func (check ckh.Check, _ ckh.Item, _ []byte) (interface{}, error) {
return check, nil
})))
router.PUT("/api/rooms/:rid/items/:iid/checks/:cid", apiHandler(checkHandler(updateCheck)))
router.DELETE("/api/rooms/:rid/items/:iid/checks/:cid", apiHandler(checkHandler(func (check ckh.Check, _ ckh.Item, _ ckh.Room, _ []byte) (interface{}, error) {
router.PUT("/api/items/:iid/checks/:cid", apiHandler(checkHandler(updateCheck)))
router.DELETE("/api/items/:iid/checks/:cid", apiHandler(checkHandler(func (check ckh.Check, _ ckh.Item, _ []byte) (interface{}, error) {
return check.Delete()
})))
// in room
router.GET("/api/rooms/:rid/items/:iid/checks/", apiHandler(itemInRoomHandler(func (item ckh.Item, _ ckh.Room, _ []byte) (interface{}, error) {
return item.GetChecks()
})))
router.POST("/api/rooms/:rid/items/:iid/checks/", apiHandler(itemInRoomHandler(newCheckInRoom)))
router.GET("/api/rooms/:rid/items/:iid/checks/:cid", apiHandler(checkInRoomHandler(func (check ckh.Check, _ ckh.Item, _ []byte) (interface{}, error) {
return check, nil
})))
router.PUT("/api/rooms/:rid/items/:iid/checks/:cid", apiHandler(checkInRoomHandler(updateCheck)))
router.DELETE("/api/rooms/:rid/items/:iid/checks/:cid", apiHandler(checkInRoomHandler(func (check ckh.Check, _ ckh.Item, _ []byte) (interface{}, error) {
return check.Delete()
})))
}
func checkHandler(f func(ckh.Check, ckh.Item, ckh.Room, []byte) (interface{}, error)) func(httprouter.Params, []byte) (interface{}, error) {
func checkHandler(f func(ckh.Check, ckh.Item, []byte) (interface{}, error)) func(httprouter.Params, []byte) (interface{}, error) {
return func(ps httprouter.Params, body []byte) (interface{}, error) {
return itemHandler(func (item ckh.Item, room ckh.Room, _ []byte) (interface{}, error) {
return itemHandler(func (item ckh.Item, _ []byte) (interface{}, error) {
if cid, err := strconv.ParseInt(string(ps.ByName("cid")), 10, 64); err != nil {
return nil, err
} else if check, err := item.GetCheck(cid); err != nil {
return nil, err
} else {
return f(check, item, room, body)
return f(check, item, body)
}
})(ps, body)
}
}
func newCheck(item ckh.Item, _ ckh.Room, body []byte) (interface{}, error) {
func checkInRoomHandler(f func(ckh.Check, ckh.Item, []byte) (interface{}, error)) func(httprouter.Params, []byte) (interface{}, error) {
return func(ps httprouter.Params, body []byte) (interface{}, error) {
return itemInRoomHandler(func (item ckh.Item, room ckh.Room, _ []byte) (interface{}, error) {
if cid, err := strconv.ParseInt(string(ps.ByName("cid")), 10, 64); err != nil {
return nil, err
} else if check, err := item.GetCheck(cid); err != nil {
return nil, err
} else {
return f(check, item, body)
}
})(ps, body)
}
}
func newCheck(item ckh.Item, body []byte) (interface{}, error) {
var uc ckh.Check
if err := json.Unmarshal(body, &uc); err != nil {
return nil, err
@ -56,7 +84,11 @@ func newCheck(item ckh.Item, _ ckh.Room, body []byte) (interface{}, error) {
return item.NewCheck(ckh.User{}, uc.Passed, uc.Comment)
}
func updateCheck(check ckh.Check, _ ckh.Item, _ ckh.Room, body []byte) (interface{}, error) {
func newCheckInRoom(item ckh.Item, _ ckh.Room, body []byte) (interface{}, error) {
return newCheck(item, body)
}
func updateCheck(check ckh.Check, _ ckh.Item, body []byte) (interface{}, error) {
var uc ckh.Check
if err := json.Unmarshal(body, &uc); err != nil {
return nil, err