Skip to content

Commit

Permalink
feat: remove old feed items
Browse files Browse the repository at this point in the history
when feed is removed from config.yml remove the old items

closes #43
  • Loading branch information
guyfedwards committed Nov 30, 2023
1 parent 38fa43d commit fdd0d1b
Show file tree
Hide file tree
Showing 2 changed files with 77 additions and 0 deletions.
40 changes: 40 additions & 0 deletions internal/commands/commands.go
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,43 @@ func GetWslHostName() string {
return strings.TrimSpace(string(out))
}

func (c Commands) CleanFeeds() error {
urls, err := c.store.GetAllFeedURLs()
if err != nil {
return fmt.Errorf("[commands.go]: %w", err)
}

var urlsToRemove []string

for _, u := range urls {
inFeeds := false
for _, f := range c.config.Feeds {
if f.URL == u {
inFeeds = true
}
}

if !inFeeds {
urlsToRemove = append(urlsToRemove, u)
}
}

for _, url := range urlsToRemove {
err := c.store.DeleteByFeedURL(url)
if err != nil {
return fmt.Errorf("[commands.go]: %w", err)
}
}

return nil
}

func (c Commands) TUI() error {
err := c.CleanFeeds()
if err != nil {
return fmt.Errorf("commands List: %w", err)
}

its, err := c.GetAllFeeds()
if err != nil {
return fmt.Errorf("commands List: %w", err)
Expand Down Expand Up @@ -117,6 +153,10 @@ func (c Commands) TUI() error {
}

func (c Commands) List(numResults int) error {
err := c.CleanFeeds()
if err != nil {
return fmt.Errorf("commands List: %w", err)
}
its, err := c.GetAllFeeds()
if err != nil {
return fmt.Errorf("commands List: %w", err)
Expand Down
37 changes: 37 additions & 0 deletions internal/store/store.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,9 @@ func (i Item) Read() bool {
type Store interface {
UpsertItem(item Item) error
GetAllItems() ([]Item, error)
GetAllFeedURLs() ([]string, error)
ToggleRead(ID int) error
DeleteByFeedURL(feedurl string) error
}

type SQLiteStore struct {
Expand Down Expand Up @@ -217,3 +219,38 @@ func (sls SQLiteStore) ToggleRead(ID int) error {

return nil
}

func (sls SQLiteStore) GetAllFeedURLs() ([]string, error) {
var urls []string

stmt, _ := sls.db.Prepare(`select feedurl from items group by feedurl;`)

rows, err := stmt.Query()
if err != nil {
return urls, fmt.Errorf("[store.go] GetAllFeedURLs: %w", err)
}

for rows.Next() {
var feedurl string

err := rows.Scan(&feedurl)
if err != nil {
return urls, fmt.Errorf("[store.go] GetAllFeedURLs: %w", err)
}

urls = append(urls, feedurl)
}

return urls, nil
}

func (sls SQLiteStore) DeleteByFeedURL(feedurl string) error {
stmt, _ := sls.db.Prepare(`delete from items where feedurl = ?`)

_, err := stmt.Exec(feedurl)
if err != nil {
return fmt.Errorf("[store.go] DeleteByFeedURL: %w", err)
}

return nil
}

0 comments on commit fdd0d1b

Please sign in to comment.