fix feed.folder_id

This commit is contained in:
Nazar Kanaev 2020-08-04 16:37:47 +01:00
parent 27d38987a5
commit 718116ff67
3 changed files with 20 additions and 19 deletions

View File

@ -16,6 +16,7 @@ import (
"net/http"
"os"
"path/filepath"
"reflect"
"strconv"
"strings"
)
@ -133,11 +134,6 @@ type NewFeed struct {
FolderID *int64 `json:"folder_id,omitempty"`
}
type UpdateFeed struct {
Title *string `json:"title,omitempty"`
FolderID *int64 `json:"folder_id,omitempty"`
}
func FeedRefreshHandler(rw http.ResponseWriter, req *http.Request) {
if req.Method == "POST" {
handler(req).fetchAllFeeds()
@ -289,17 +285,29 @@ func FeedHandler(rw http.ResponseWriter, req *http.Request) {
return
}
if req.Method == "PUT" {
var body UpdateFeed
feed := db(req).GetFeed(id)
if feed == nil {
rw.WriteHeader(http.StatusBadRequest)
return
}
body := make(map[string]interface{})
if err := json.NewDecoder(req.Body).Decode(&body); err != nil {
log.Print(err)
rw.WriteHeader(http.StatusBadRequest)
return
}
if body.Title != nil {
db(req).RenameFeed(id, *body.Title)
if title, ok := body["title"]; ok {
if reflect.TypeOf(title).Kind() == reflect.String {
db(req).RenameFeed(id, title.(string))
}
}
if f_id, ok := body["folder_id"]; ok {
if f_id == nil {
db(req).UpdateFeedFolder(id, nil)
} else if reflect.TypeOf(f_id).Kind() == reflect.Float64 {
folderId := int64(f_id.(float64))
db(req).UpdateFeedFolder(id, &folderId)
}
if body.FolderID != nil {
db(req).UpdateFeedFolder(id, *body.FolderID)
}
rw.WriteHeader(http.StatusOK)
} else if req.Method == "DELETE" {

View File

@ -51,8 +51,8 @@ func (s *Storage) RenameFeed(feedId int64, newTitle string) bool {
return err == nil
}
func (s *Storage) UpdateFeedFolder(feedId int64, newFolderId int64) bool {
_, err := s.db.Exec(`update feeds set folder_id = ? where id = ?`, intOrNil(newFolderId), feedId)
func (s *Storage) UpdateFeedFolder(feedId int64, newFolderId *int64) bool {
_, err := s.db.Exec(`update feeds set folder_id = ? where id = ?`, newFolderId, feedId)
return err == nil
}

View File

@ -89,10 +89,3 @@ func New(path string, logger *log.Logger) (*Storage, error) {
}
return &Storage{db: db, log: logger}, nil
}
func intOrNil(id int64) interface{} {
if id == 0 {
return nil
}
return id
}