Remove Tree type and adjust API to continue working
This commit is contained in:
parent
6470aee802
commit
b251614667
4 changed files with 38 additions and 126 deletions
|
|
@ -14,7 +14,7 @@ from .db import Sqlite3Trove, NOTE_ROOT_ID
|
|||
|
||||
from . import trove as tr
|
||||
|
||||
from .trove import Note, Trove, TreeNote, TreeEntry, NoteNotFound, ObjectId
|
||||
from .trove import Note, Trove, TreeEntry, NoteNotFound, ObjectId
|
||||
|
||||
|
||||
class NoteImpl(Note):
|
||||
|
|
@ -79,9 +79,6 @@ class NoteImpl(Note):
|
|||
content = content if content is not None else b""
|
||||
object_id = self._db.write_blob(data=content, object_id=None, dtype=mime, executable=executable, hidden=hidden)
|
||||
self._db.link(self._object_id, name, object_id)
|
||||
# TODO fix this
|
||||
if mime == 'inode/directory':
|
||||
return TreeNoteImpl(self._parent, object_id)
|
||||
return NoteImpl(self._parent, object_id)
|
||||
|
||||
def child(self, name: str) -> Note:
|
||||
|
|
@ -103,39 +100,6 @@ class NoteImpl(Note):
|
|||
self._db.unlink(self._object_id, name)
|
||||
|
||||
|
||||
|
||||
class TreeNoteImpl(NoteImpl, TreeNote):
|
||||
"""Concrete TreeNote: a tree object backed by the tree_entries table."""
|
||||
|
||||
# Tree protocol
|
||||
def link(self, name: str, note: Note) -> None:
|
||||
"""Link name to an existing note."""
|
||||
self._db.link(self._object_id, name, NoteImpl.get_impl_id(note))
|
||||
|
||||
def unlink(self, name: str) -> None:
|
||||
"""Remove an entry by name."""
|
||||
self._db.unlink(self._object_id, name)
|
||||
|
||||
def mkdir(self, name: str) -> 'TreeNoteImpl':
|
||||
"""Create a new empty tree, link it under name, and return it."""
|
||||
new_id = self._db.write_tree(b"")
|
||||
tree = TreeNoteImpl(self._parent, new_id)
|
||||
self.link(name, tree)
|
||||
return tree
|
||||
|
||||
def rmdir(self, name: str) -> None:
|
||||
"""Remove a directory from the tree."""
|
||||
self.unlink(name)
|
||||
|
||||
|
||||
|
||||
def entries(self):
|
||||
"""Return all entries as an iterable of TreeEntry."""
|
||||
for name, object_id in self._db.list_tree(self._object_id).items():
|
||||
yield TreeEntry(name, object_id)
|
||||
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Trove
|
||||
# ---------------------------------------------------------------------------
|
||||
|
|
@ -176,8 +140,6 @@ class TroveImpl(Trove):
|
|||
info = self._db.get_info(note_id)
|
||||
if info is None:
|
||||
raise NoteNotFound(note_id)
|
||||
if self._db.is_tree(note_id) or info.type == "inode/directory":
|
||||
return TreeNoteImpl(self, note_id)
|
||||
return NoteImpl(self, note_id)
|
||||
|
||||
@override
|
||||
|
|
@ -197,9 +159,9 @@ class TroveImpl(Trove):
|
|||
obj_id = self._db.write_blob(data or b"", dtype=dtype)
|
||||
return NoteImpl(self, obj_id)
|
||||
|
||||
def get_root(self) -> TreeNote:
|
||||
def get_root(self) -> Note:
|
||||
"""Return the root TreeNote (always id=NOTE_ROOT_ID)."""
|
||||
return TreeNoteImpl(self, NOTE_ROOT_ID)
|
||||
return NoteImpl(self, NOTE_ROOT_ID)
|
||||
|
||||
|
||||
def open_db_trove(path: str | Path, create: bool = False, **kwargs: tr.OpenArguments) -> Trove:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue