update item status

This commit is contained in:
Nazar Kanaev
2020-07-05 14:38:50 +01:00
parent 7ecdada4ca
commit 533debf708
6 changed files with 52 additions and 8 deletions

View File

@@ -184,7 +184,7 @@ func convertItems(items []*gofeed.Item, feed storage.Feed) []storage.Item {
author = item.Author.Name
}
result = append(result, storage.Item{
Id: item.GUID,
GUID: item.GUID,
FeedId: feed.Id,
Title: item.Title,
Link: item.Link,
@@ -266,3 +266,29 @@ func FeedItemsHandler(rw http.ResponseWriter, req *http.Request) {
items := db(req).ListFeedItems(id)
writeJSON(rw, items)
}
type UpdateItem struct {
Status *storage.ItemStatus `json:"status,omitempty"`
}
func ItemHandler(rw http.ResponseWriter, req *http.Request) {
if req.Method == "PUT" {
id, err := strconv.ParseInt(Vars(req)["id"], 10, 64)
if err != nil {
rw.WriteHeader(http.StatusBadRequest)
return
}
var body UpdateItem
if err := json.NewDecoder(req.Body).Decode(&body); err != nil {
log.Print(err)
rw.WriteHeader(http.StatusBadRequest)
return
}
if body.Status != nil {
db(req).UpdateItemStatus(id, *body.Status)
}
rw.WriteHeader(http.StatusOK)
} else {
rw.WriteHeader(http.StatusMethodNotAllowed)
}
}

View File

@@ -77,6 +77,7 @@ var routes []Route = []Route{
p("/api/feeds/:id", FeedHandler),
p("/api/feeds/:id/items", FeedItemsHandler),
p("/api/feeds/find", FeedHandler),
p("/api/items/:id", ItemHandler),
}
func Vars(req *http.Request) map[string]string {