From a850d83b33ceadec4e4c5b655a5eb6324288b496 Mon Sep 17 00:00:00 2001 From: Nazar Kanaev Date: Sun, 28 Feb 2021 00:35:19 +0000 Subject: [PATCH] sqlite on delete actions --- src/storage/feed.go | 8 +++++--- src/storage/folder.go | 8 +++++--- src/storage/item.go | 1 + src/storage/storage.go | 9 +++++---- 4 files changed, 16 insertions(+), 10 deletions(-) diff --git a/src/storage/feed.go b/src/storage/feed.go index 9ac6e8a..8f7f50c 100644 --- a/src/storage/feed.go +++ b/src/storage/feed.go @@ -58,9 +58,11 @@ func (s *Storage) CreateFeed(title, description, link, feedLink string, 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 + _, err := s.db.Exec(`delete from feeds where id = ?`, feedId) + if err != nil { + s.log.Print(err) + } + return err == nil } func (s *Storage) RenameFeed(feedId int64, newTitle string) bool { diff --git a/src/storage/folder.go b/src/storage/folder.go index 3259070..dda0b78 100644 --- a/src/storage/folder.go +++ b/src/storage/folder.go @@ -45,9 +45,11 @@ func (s *Storage) CreateFolder(title string) *Folder { } func (s *Storage) DeleteFolder(folderId int64) bool { - _, err1 := s.db.Exec(`update feeds set folder_id = null where folder_id = ?`, folderId) - _, err2 := s.db.Exec(`delete from folders where id = ?`, folderId) - return err1 == nil && err2 == nil + _, err := s.db.Exec(`delete from folders where id = ?`, folderId) + if err != nil { + s.log.Print(err) + } + return err == nil } func (s *Storage) RenameFolder(folderId int64, newTitle string) bool { diff --git a/src/storage/item.go b/src/storage/item.go index 9e4207e..cbe9bca 100644 --- a/src/storage/item.go +++ b/src/storage/item.go @@ -301,6 +301,7 @@ func HTMLText(s string) string { } func (s *Storage) SyncSearch() { + // TODO: cleaning up once feeds/items are deleted? rows, err := s.db.Query(` select id, title, content, description from items diff --git a/src/storage/storage.go b/src/storage/storage.go index 2748e8f..63675d3 100644 --- a/src/storage/storage.go +++ b/src/storage/storage.go @@ -18,7 +18,7 @@ create unique index if not exists idx_folder_title on folders(title); create table if not exists feeds ( id integer primary key autoincrement, - folder_id references folders(id), + folder_id references folders(id) on delete set null, title text not null, description text, link text, @@ -32,7 +32,7 @@ create unique index if not exists idx_feed_feed_link on feeds(feed_link); create table if not exists items ( id integer primary key autoincrement, guid string not null, - feed_id references feeds(id), + feed_id references feeds(id) on delete cascade, title text, link text, description text, @@ -63,7 +63,7 @@ create trigger if not exists del_item_search after delete on items begin end; create table if not exists http_states ( - feed_id references feeds(id) unique, + feed_id references feeds(id) on delete cascade unique, last_refreshed datetime not null, -- http header fields -- @@ -72,7 +72,7 @@ create table if not exists http_states ( ); create table if not exists feed_errors ( - feed_id references feeds(id) unique, + feed_id references feeds(id) on delete cascade unique, error string ); ` @@ -96,6 +96,7 @@ func New(path string, logger *log.Logger) (*Storage, error) { db.SetMaxOpenConns(1) + // TODO: migration for 'on delete' actions if _, err := db.Exec(initQuery); err != nil { return nil, err }