Compare commits
2 Commits
500f90fdf1
...
5c287ce3a1
| Author | SHA1 | Date | |
|---|---|---|---|
| 5c287ce3a1 | |||
| d8e58313f3 |
@ -107,7 +107,9 @@ def clear_dir(dir_path: Path,
|
|||||||
"""
|
"""
|
||||||
file_iter = dir_path.glob(glob) if glob else dir_path.iterdir()
|
file_iter = dir_path.glob(glob) if glob else dir_path.iterdir()
|
||||||
for file_path in file_iter:
|
for file_path in file_iter:
|
||||||
if file_path.is_file() and file_path.suffix in Message.file_suffixes:
|
if (file_path.is_file()
|
||||||
|
and file_path.name not in ignored_files # noqa: W503
|
||||||
|
and file_path.suffix in Message.file_suffixes): # noqa: W503
|
||||||
file_path.unlink(missing_ok=True)
|
file_path.unlink(missing_ok=True)
|
||||||
|
|
||||||
|
|
||||||
@ -494,13 +496,13 @@ class ChatDB(Chat):
|
|||||||
else:
|
else:
|
||||||
return len(self.msg_find([message], loc='db')) > 0
|
return len(self.msg_find([message], loc='db')) > 0
|
||||||
|
|
||||||
def cache_read(self) -> None:
|
def cache_read(self, glob: Optional[str] = None, mfilter: Optional[MessageFilter] = None) -> None:
|
||||||
"""
|
"""
|
||||||
Read messages from the cache directory. New ones are added to the internal list,
|
Read messages from the cache directory. New ones are added to the internal list,
|
||||||
existing ones are replaced. A message is determined as 'existing' if a message
|
existing ones are replaced. A message is determined as 'existing' if a message
|
||||||
with the same base filename (i. e. 'file_path.name') is already in the list.
|
with the same base filename (i. e. 'file_path.name') is already in the list.
|
||||||
"""
|
"""
|
||||||
new_messages = read_dir(self.cache_path, self.glob, self.mfilter)
|
new_messages = read_dir(self.cache_path, glob, mfilter)
|
||||||
# remove all messages from self.messages that are in the new list
|
# remove all messages from self.messages that are in the new list
|
||||||
self.messages = [m for m in self.messages if not message_in(m, new_messages)]
|
self.messages = [m for m in self.messages if not message_in(m, new_messages)]
|
||||||
# copy the messages from the temporary list to self.messages and sort them
|
# copy the messages from the temporary list to self.messages and sort them
|
||||||
@ -537,11 +539,11 @@ class ChatDB(Chat):
|
|||||||
self.messages += messages
|
self.messages += messages
|
||||||
self.msg_sort()
|
self.msg_sort()
|
||||||
|
|
||||||
def cache_clear(self) -> None:
|
def cache_clear(self, glob: Optional[str] = None) -> None:
|
||||||
"""
|
"""
|
||||||
Delete all message files from the cache dir and remove them from the internal list.
|
Delete all message files from the cache dir and remove them from the internal list.
|
||||||
"""
|
"""
|
||||||
clear_dir(self.cache_path, self.glob)
|
clear_dir(self.cache_path, glob)
|
||||||
# only keep messages from DB dir (or those that have not yet been written)
|
# only keep messages from DB dir (or those that have not yet been written)
|
||||||
self.messages = [m for m in self.messages if not m.file_path or m.file_path.parent.samefile(self.db_path)]
|
self.messages = [m for m in self.messages if not m.file_path or m.file_path.parent.samefile(self.db_path)]
|
||||||
|
|
||||||
@ -561,7 +563,7 @@ class ChatDB(Chat):
|
|||||||
# (re)add it to the internal list
|
# (re)add it to the internal list
|
||||||
self.msg_add([message])
|
self.msg_add([message])
|
||||||
|
|
||||||
def db_read(self) -> None:
|
def db_read(self, glob: Optional[str] = None, mfilter: Optional[MessageFilter] = None) -> None:
|
||||||
"""
|
"""
|
||||||
Read messages from the DB directory. New ones are added to the internal list,
|
Read messages from the DB directory. New ones are added to the internal list,
|
||||||
existing ones are replaced. A message is determined as 'existing' if a message
|
existing ones are replaced. A message is determined as 'existing' if a message
|
||||||
|
|||||||
@ -605,6 +605,15 @@ class TestChatDB(unittest.TestCase):
|
|||||||
self.assertSequenceEqual(chat_db.msg_gather(loc='db'), all_messages)
|
self.assertSequenceEqual(chat_db.msg_gather(loc='db'), all_messages)
|
||||||
self.assertSequenceEqual(chat_db.msg_gather(loc='disk'), all_messages)
|
self.assertSequenceEqual(chat_db.msg_gather(loc='disk'), all_messages)
|
||||||
self.assertSequenceEqual(chat_db.msg_gather(loc='cache'), [])
|
self.assertSequenceEqual(chat_db.msg_gather(loc='cache'), [])
|
||||||
|
# test with MessageFilter
|
||||||
|
self.assertSequenceEqual(chat_db.msg_gather(loc='all', mfilter=MessageFilter(tags_or={Tag('tag1')})),
|
||||||
|
[self.message1])
|
||||||
|
self.assertSequenceEqual(chat_db.msg_gather(loc='disk', mfilter=MessageFilter(tags_or={Tag('tag2')})),
|
||||||
|
[self.message2])
|
||||||
|
self.assertSequenceEqual(chat_db.msg_gather(loc='cache', mfilter=MessageFilter(tags_or={Tag('tag3')})),
|
||||||
|
[])
|
||||||
|
self.assertSequenceEqual(chat_db.msg_gather(loc='mem', mfilter=MessageFilter(question_contains="What")),
|
||||||
|
[new_message])
|
||||||
|
|
||||||
def test_msg_move_and_gather(self) -> None:
|
def test_msg_move_and_gather(self) -> None:
|
||||||
chat_db = ChatDB.from_dir(pathlib.Path(self.cache_path.name),
|
chat_db = ChatDB.from_dir(pathlib.Path(self.cache_path.name),
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user