Skip to content

Commit

Permalink
Add remove_feed reader method.
Browse files Browse the repository at this point in the history
Closes #7.
  • Loading branch information
lemon24 committed Jan 29, 2018
1 parent 337ed00 commit 824a2f7
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 0 deletions.
13 changes: 13 additions & 0 deletions reader/cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,19 @@ def add(db_path, url, update, verbose):
reader.update_feed(url)


@cli.command()
@click.argument('url')
@click.option('-v', '--verbose', count=True)
@click.pass_obj
def remove(db_path, url, verbose):
setup_logging(verbose)
try:
reader = Reader(db_path)
except Exception as e:
abort("{}: {}", db_path, e)
reader.remove_feed(url)


@cli.command()
@click.option('-v', '--verbose', count=True)
@click.pass_obj
Expand Down
15 changes: 15 additions & 0 deletions reader/reader.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,21 @@ def add_feed(self, url):
VALUES (:url);
""", locals())

def remove_feed(self, url):
with self.db:
self.db.execute("""
DELETE FROM entry_tags
WHERE feed = :url;
""", locals())
self.db.execute("""
DELETE FROM entries
WHERE feed = :url;
""", locals())
self.db.execute("""
DELETE FROM feeds
WHERE url = :url;
""", locals())

def update_feeds(self):
cursor = self.db.execute("""
SELECT url, updated, http_etag, http_last_modified, stale FROM feeds
Expand Down
15 changes: 15 additions & 0 deletions tests/test_reader.py
Original file line number Diff line number Diff line change
Expand Up @@ -181,3 +181,18 @@ def test_mark_as_read_unread(reader, feed_type):
(feed, entry), = list(reader.get_entries())
assert not entry.read


@pytest.mark.parametrize('feed_type', ['rss', 'atom'])
def test_add_remove_feed(reader, feed_type):

feed = make_feed(1, datetime(2010, 1, 1))
entry = make_entry(1, datetime(2010, 1, 1))
reader.add_feed(feed.url)
write_feed(feed_type, feed, [entry])
reader.update_feeds()

assert set(reader.get_entries()) == {(feed, entry)}

reader.remove_feed(feed.url)
assert set(reader.get_entries()) == set()

0 comments on commit 824a2f7

Please sign in to comment.