Skip to content

Commit

Permalink
Storage.mark_as_{read,important} -> set_entry_{read,important}.
Browse files Browse the repository at this point in the history
mark_as_read(f, e, r, m) -> set_entry_read((f, e), r, m)
mark_as_important(f, e, i, m) -> set_entry_important((f, e), i, m)

For #325.
  • Loading branch information
lemon24 committed Oct 25, 2023
1 parent 3d62c8d commit 47d234f
Show file tree
Hide file tree
Showing 5 changed files with 37 additions and 55 deletions.
14 changes: 6 additions & 8 deletions src/reader/_storage.py
Original file line number Diff line number Diff line change
Expand Up @@ -711,9 +711,10 @@ def mark_as_stale(self, url: str) -> None:
rowcount_exactly_one(cursor, lambda: FeedNotFoundError(url))

@wrap_exceptions(StorageError)
def mark_as_read(
self, feed_url: str, entry_id: str, read: bool, modified: datetime | None
def set_entry_read(
self, entry: tuple[str, str], read: bool, modified: datetime | None
) -> None:
feed_url, entry_id = entry
with self.get_db() as db:
cursor = db.execute(
"""
Expand All @@ -730,13 +731,10 @@ def mark_as_read(
rowcount_exactly_one(cursor, lambda: EntryNotFoundError(feed_url, entry_id))

@wrap_exceptions(StorageError)
def mark_as_important(
self,
feed_url: str,
entry_id: str,
important: bool | None,
modified: datetime | None,
def set_entry_important(
self, entry: tuple[str, str], important: bool | None, modified: datetime | None
) -> None:
feed_url, entry_id = entry
with self.get_db() as db:
cursor = db.execute(
"""
Expand Down
22 changes: 10 additions & 12 deletions src/reader/_types.py
Original file line number Diff line number Diff line change
Expand Up @@ -669,10 +669,8 @@ class StorageType(Protocol): # pragma: no cover
* delete_entries
* get_entries
* get_entry_counts
* mark_as_read
* rename to set_entry_read(entry, read, /, modified)
* mark_as_important
* rename to set_entry_important(entry, read, /, modified)
* set_entry_read
* set_entry_important
Update methods:
Expand All @@ -692,6 +690,10 @@ class StorageType(Protocol): # pragma: no cover
* set_tag
* delete_tag
Other renames:
* filter_options -> filter?
"""

def __enter__(self) -> None:
Expand Down Expand Up @@ -743,17 +745,13 @@ def set_feed_updates_enabled(self, url: str, enabled: bool) -> None:
def mark_as_stale(self, url: str) -> None:
...

def mark_as_read(
self, feed_url: str, entry_id: str, read: bool, modified: datetime | None
def set_entry_read(
self, entry: tuple[str, str], read: bool, modified: datetime | None
) -> None:
...

def mark_as_important(
self,
feed_url: str,
entry_id: str,
important: bool | None,
modified: datetime | None,
def set_entry_important(
self, entry: tuple[str, str], important: bool | None, modified: datetime | None
) -> None:
...

Expand Down
8 changes: 4 additions & 4 deletions src/reader/core.py
Original file line number Diff line number Diff line change
Expand Up @@ -1364,8 +1364,7 @@ def set_entry_read(
else:
modified_naive = modified.astimezone(timezone.utc).replace(tzinfo=None)

feed_url, entry_id = _entry_argument(entry)
self._storage.mark_as_read(feed_url, entry_id, read, modified_naive)
self._storage.set_entry_read(_entry_argument(entry), read, modified_naive)

def mark_entry_as_read(self, entry: EntryInput, /) -> None:
"""Mark an entry as read.
Expand Down Expand Up @@ -1457,8 +1456,9 @@ def set_entry_important(
else:
modified_naive = modified.astimezone(timezone.utc).replace(tzinfo=None)

feed_url, entry_id = _entry_argument(entry)
self._storage.mark_as_important(feed_url, entry_id, important, modified_naive)
self._storage.set_entry_important(
_entry_argument(entry), important, modified_naive
)

def mark_entry_as_important(self, entry: EntryInput, /) -> None:
"""Mark an entry as important.
Expand Down
22 changes: 4 additions & 18 deletions tests/test_reader.py
Original file line number Diff line number Diff line change
Expand Up @@ -1517,10 +1517,8 @@ def __init__(self, exc=None):
def close(self):
self.calls.append(('close',))

def mark_as_important(self, feed_url, entry_id, important, modified):
self.calls.append(
('mark_as_important', feed_url, entry_id, important, modified)
)
def set_entry_important(self, entry, important, modified):
self.calls.append(('set_entry_important', entry, important, modified))
if self.exc:
raise self.exc

Expand All @@ -1541,13 +1539,7 @@ def test_mark_as_important(reader, entry_arg):
entry = Entry('entry', None, feed=Feed('feed'))
reader.mark_entry_as_important(entry_arg(entry))
assert reader._storage.calls == [
(
'mark_as_important',
'feed',
'entry',
True,
naive_datetime(2010, 1, 1),
)
('set_entry_important', ('feed', 'entry'), True, naive_datetime(2010, 1, 1))
]


Expand All @@ -1557,13 +1549,7 @@ def test_mark_as_unimportant(reader, entry_arg):
entry = Entry('entry', None, feed=Feed('feed'))
reader.mark_entry_as_unimportant(entry_arg(entry))
assert reader._storage.calls == [
(
'mark_as_important',
'feed',
'entry',
False,
naive_datetime(2010, 1, 1),
)
('set_entry_important', ('feed', 'entry'), False, naive_datetime(2010, 1, 1))
]


Expand Down
26 changes: 13 additions & 13 deletions tests/test_storage.py
Original file line number Diff line number Diff line change
Expand Up @@ -200,12 +200,12 @@ def mark_as_stale(storage, feed, __):
storage.mark_as_stale(feed.url)


def mark_as_read(storage, feed, entry):
storage.mark_as_read(feed.url, entry.id, 1, None)
def set_entry_read(storage, feed, entry):
storage.set_entry_read(entry.resource_id, 1, None)


def mark_as_important(storage, feed, entry):
storage.mark_as_important(feed.url, entry.id, 1, None)
def set_entry_important(storage, feed, entry):
storage.set_entry_important(entry.resource_id, 1, None)


def get_entry_recent_sort(storage, feed, entry):
Expand Down Expand Up @@ -315,8 +315,8 @@ def get_entry_last(storage, feed, entry):
set_feed_user_title,
set_feed_updates_enabled,
mark_as_stale,
mark_as_read,
mark_as_important,
set_entry_read,
set_entry_important,
get_entry_recent_sort,
set_entry_recent_sort,
update_feed,
Expand Down Expand Up @@ -486,9 +486,9 @@ def check_iter_locked(db_path, pre_stuff, iter_stuff):

# shouldn't raise an exception
storage = Storage(db_path, timeout=0, wal_enabled=False)
storage.mark_as_read(feed.url, entry.id, 1, None)
storage.set_entry_read((feed.url, entry.id), 1, None)
storage = Storage(db_path, timeout=0)
storage.mark_as_read(feed.url, entry.id, 0, None)
storage.set_entry_read((feed.url, entry.id), 0, None)


def test_update_feed_last_updated_not_found(db_path):
Expand Down Expand Up @@ -542,7 +542,7 @@ def test_important_unimportant_by_default(storage):

@rename_argument('storage', 'storage_with_two_entries')
def test_important_get_entries(storage):
storage.mark_as_important('feed', 'one', True, datetime(2010, 1, 2))
storage.set_entry_important(('feed', 'one'), True, datetime(2010, 1, 2))

assert {e.id for e in storage.get_entries(now=datetime(2010, 1, 1))} == {
'one',
Expand Down Expand Up @@ -570,7 +570,7 @@ def test_important_get_entries(storage):

@rename_argument('storage', 'storage_with_two_entries')
def test_important_entry_important(storage):
storage.mark_as_important('feed', 'one', True, None)
storage.set_entry_important(('feed', 'one'), True, None)

assert {e.id: e.important for e in storage.get_entries(datetime(2010, 1, 1))} == {
'one': True,
Expand All @@ -580,8 +580,8 @@ def test_important_entry_important(storage):

@rename_argument('storage', 'storage_with_two_entries')
def test_important_mark_as_unimportant(storage):
storage.mark_as_important('feed', 'one', True, None)
storage.mark_as_important('feed', 'one', False, None)
storage.set_entry_important(('feed', 'one'), True, None)
storage.set_entry_important(('feed', 'one'), False, None)

assert {
e.id
Expand All @@ -593,7 +593,7 @@ def test_important_mark_as_unimportant(storage):

def test_important_mark_entry_not_found(storage):
with pytest.raises(EntryNotFoundError):
storage.mark_as_important('feed', 'one', True, None)
storage.set_entry_important(('feed', 'one'), True, None)


def test_minimum_sqlite_version(db_path, monkeypatch):
Expand Down

0 comments on commit 47d234f

Please sign in to comment.