diff --git a/main.go b/main.go index d36b6ab..eecd733 100644 --- a/main.go +++ b/main.go @@ -15,4 +15,9 @@ func main() { storage.RenameFolder(folder.Id, "bar") storage.ToggleFolderExpanded(folder.Id, false) */ + /* + feed := storage.CreateFeed( + "title", "description", "link", "feedlink", "icon", 1) + storage.RenameFeed(feed.Id, "newtitle") + */ } diff --git a/storage/feed.go b/storage/feed.go new file mode 100644 index 0000000..d45cda2 --- /dev/null +++ b/storage/feed.go @@ -0,0 +1,51 @@ +package storage + +type Feed struct { + Id int64 + FolderId int64 + Title string + Description string + Link string + FeedLink string + Icon string +} + +func (s *Storage) CreateFeed(title, description, link, feedLink, icon string, folderId int64) *Feed { + result, err := s.db.Exec(` + insert into feeds (title, description, link, feed_link, icon, folder_id) + values (?, ?, ?, ?, ?, ?)`, + title, description, link, feedLink, icon, intOrNil(folderId), + ) + if err != nil { + return nil + } + id, idErr := result.LastInsertId() + if idErr != nil { + return nil + } + return &Feed{ + Id: id, + Title: title, + Description: description, + Link: link, + FeedLink: feedLink, + Icon: icon, + FolderId: folderId, + } +} + +func (s *Storage) DeleteFeed(feedId int64) bool { + _, err1 := s.db.Exec(`delete from items where feed_id = ?`, feedId) + _, err2 := s.db.Exec(`delete from feeds where id = ?`, feedId) + return err1 == nil && err2 == nil +} + +func (s *Storage) RenameFeed(feedId int64, newTitle string) bool { + _, err := s.db.Exec(`update feeds set title = ? where id = ?`, newTitle, feedId) + 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) + return err == nil +} diff --git a/storage/storage.go b/storage/storage.go index 81af3d5..a6ef80e 100644 --- a/storage/storage.go +++ b/storage/storage.go @@ -58,3 +58,10 @@ func New() (*Storage, error) { } return &Storage{db: db}, nil } + +func intOrNil(id int64) interface{} { + if id == 0 { + return nil + } + return id +}