diff --git a/api/check.go b/api/check.go index 14fe77c..92e1c73 100644 --- a/api/check.go +++ b/api/check.go @@ -11,14 +11,17 @@ import ( ) func init() { - router.GET("/api/checks/", apiHandler(func (_ httprouter.Params, _ []byte) (interface{}, error) { + router.GET("/api/checks", apiHandler(func (_ httprouter.Params, _ []byte) (interface{}, error) { return ckh.GetChecks() })) + router.DELETE("/api/checks", apiHandler(func (_ httprouter.Params, _ []byte) (interface{}, error) { + return ckh.ClearChecks() + })) - router.GET("/api/items/:iid/checks/", apiHandler(itemHandler(func (item ckh.Item, _ []byte) (interface{}, error) { + router.GET("/api/items/:iid/checks", apiHandler(itemHandler(func (item ckh.Item, _ []byte) (interface{}, error) { return item.GetChecks() }))) - router.POST("/api/items/:iid/checks/", apiHandler(itemHandler(newCheck))) + router.POST("/api/items/:iid/checks", apiHandler(itemHandler(newCheck))) router.GET("/api/items/:iid/checks/:cid", apiHandler(checkHandler(func (check ckh.Check, _ ckh.Item, _ []byte) (interface{}, error) { return check, nil @@ -29,10 +32,10 @@ func init() { }))) // in room - router.GET("/api/rooms/:rid/items/:iid/checks/", apiHandler(itemInRoomHandler(func (item ckh.Item, _ ckh.Room, _ []byte) (interface{}, error) { + 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.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 diff --git a/api/item.go b/api/item.go index 1c9b2f0..378d202 100644 --- a/api/item.go +++ b/api/item.go @@ -11,30 +11,64 @@ import ( ) func init() { - router.GET("/api/items/", apiHandler(func (_ httprouter.Params, _ []byte) (interface{}, error) { + router.GET("/api/items", apiHandler(func (_ httprouter.Params, _ []byte) (interface{}, error) { return ckh.GetItems() })) - router.DELETE("/api/items/", apiHandler(func (_ httprouter.Params, _ []byte) (interface{}, error) { + router.DELETE("/api/items", apiHandler(func (_ httprouter.Params, _ []byte) (interface{}, error) { return ckh.ClearItems() })) - router.GET("/api/rooms/:rid/items/", apiHandler(roomHandler(func (room ckh.Room, _ []byte) (interface{}, error) { - return room.GetItems() + router.GET("/api/rooms/:rid/items", apiHandler(roomHandler(func (room ckh.Room, _ []byte) (interface{}, error) { + if items, err := room.GetItems(); err != nil { + return nil, err + } else { + var res []item + for _, item := range items { + if i, err := displayItem(item); err != nil { + return nil, err + } else { + res = append(res, i) + } + } + return res, nil + } }))) - router.POST("/api/rooms/:rid/items/", apiHandler(roomHandler(newItem))) - router.DELETE("/api/rooms/:rid/items/", apiHandler(roomHandler(func (room ckh.Room, _ []byte) (interface{}, error) { + router.POST("/api/rooms/:rid/items", apiHandler(roomHandler(newItem))) + router.DELETE("/api/rooms/:rid/items", apiHandler(roomHandler(func (room ckh.Room, _ []byte) (interface{}, error) { return room.ClearItems() }))) - router.GET("/api/rooms/:rid/items/:iid/", apiHandler(itemInRoomHandler(func (item ckh.Item, _ ckh.Room, _ []byte) (interface{}, error) { - return item, nil + router.GET("/api/rooms/:rid/items/:iid", apiHandler(itemInRoomHandler(func (item ckh.Item, _ ckh.Room, _ []byte) (interface{}, error) { + return displayItem(item) }))) - router.PUT("/api/rooms/:rid/items/:iid/", apiHandler(itemInRoomHandler(updateItem))) - router.DELETE("/api/rooms/:rid/items/:iid/", apiHandler(itemInRoomHandler(func (item ckh.Item, _ ckh.Room, _ []byte) (interface{}, error) { + router.PUT("/api/rooms/:rid/items/:iid", apiHandler(itemInRoomHandler(updateItem))) + router.DELETE("/api/rooms/:rid/items/:iid", apiHandler(itemInRoomHandler(func (item ckh.Item, _ ckh.Room, _ []byte) (interface{}, error) { return item.Delete() }))) } +type item struct { + Id int64 `json:"id"` + Label string `json:"label"` + Description string `json:"description"` + Tags []string `json:"tags"` +} + +func displayItem(item ckh.Item) (i item, err error) { + var tags []ckh.Tag + if tags, err = item.GetTags(); err != nil { + return + } else { + for _, t := range tags { + i.Tags = append(i.Tags, t.Label) + } + } + i.Id = item.Id + i.Label = item.Label + i.Description = item.Description + return +} + func itemHandler(f func(ckh.Item, []byte) (interface{}, error)) func(httprouter.Params, []byte) (interface{}, error) { return func(ps httprouter.Params, body []byte) (interface{}, error) { if iid, err := strconv.ParseInt(string(ps.ByName("iid")), 10, 64); err != nil { diff --git a/api/room.go b/api/room.go index e9ce5d5..e23b03a 100644 --- a/api/room.go +++ b/api/room.go @@ -11,11 +11,11 @@ import ( ) func init() { - router.GET("/api/rooms/", apiHandler(func (_ httprouter.Params, _ []byte) (interface{}, error) { + router.GET("/api/rooms", apiHandler(func (_ httprouter.Params, _ []byte) (interface{}, error) { return ckh.GetRooms() })) - router.POST("/api/rooms/", apiHandler(newRoom)) - router.DELETE("/api/rooms/", apiHandler(func (_ httprouter.Params, _ []byte) (interface{}, error) { + router.POST("/api/rooms", apiHandler(newRoom)) + router.DELETE("/api/rooms", apiHandler(func (_ httprouter.Params, _ []byte) (interface{}, error) { return ckh.ClearRooms() })) diff --git a/api/tag.go b/api/tag.go index 48b1435..e40a2a5 100644 --- a/api/tag.go +++ b/api/tag.go @@ -11,11 +11,11 @@ import ( ) func init() { - router.GET("/api/tags/", apiHandler(func (_ httprouter.Params, _ []byte) (interface{}, error) { + router.GET("/api/tags", apiHandler(func (_ httprouter.Params, _ []byte) (interface{}, error) { return ckh.GetTags() })) - router.POST("/api/tags/", apiHandler(newTag)) - router.DELETE("/api/tags/", apiHandler(func (_ httprouter.Params, _ []byte) (interface{}, error) { + router.POST("/api/tags", apiHandler(newTag)) + router.DELETE("/api/tags", apiHandler(func (_ httprouter.Params, _ []byte) (interface{}, error) { return ckh.ClearTags() })) @@ -35,6 +35,9 @@ func init() { router.GET("/api/items/:iid/tags", apiHandler(itemHandler(func (item ckh.Item, _ []byte) (interface{}, error) { return item.GetTags() }))) + router.DELETE("/api/items/:iid/tags", apiHandler(itemHandler(func (item ckh.Item, _ []byte) (interface{}, error) { + return item.ClearItemTags() + }))) router.PUT("/api/items/:iid/tags/:tid", apiHandler(itemTagHandler(func (item ckh.Item, tag ckh.Tag, _ []byte) (interface{}, error) { _, err := tag.AddItem(item) return tag, err diff --git a/api/user.go b/api/user.go index 5aecae3..6341c16 100644 --- a/api/user.go +++ b/api/user.go @@ -11,11 +11,11 @@ import ( ) func init() { - router.GET("/api/users/", apiHandler(func (_ httprouter.Params, _ []byte) (interface{}, error) { + router.GET("/api/users", apiHandler(func (_ httprouter.Params, _ []byte) (interface{}, error) { return ckh.GetUsers() })) - router.POST("/api/users/", apiHandler(newUser)) - router.DELETE("/api/users/", apiHandler(func (_ httprouter.Params, _ []byte) (interface{}, error) { + router.POST("/api/users", apiHandler(newUser)) + router.DELETE("/api/users", apiHandler(func (_ httprouter.Params, _ []byte) (interface{}, error) { return ckh.ClearUsers() })) diff --git a/static/index.html b/static/index.html index 96c902b..6919793 100644 --- a/static/index.html +++ b/static/index.html @@ -2,18 +2,36 @@ + + Terrasses de la Bièvre - remise des clefs -