diff --git a/src/grung/db.py b/src/grung/db.py index a231306..183c6b9 100644 --- a/src/grung/db.py +++ b/src/grung/db.py @@ -32,10 +32,10 @@ class RecordTable(table.Table): last_insert_id = super().insert(dict(doc)) return self.get(doc_id=last_insert_id) - def get(self, doc_id: int): + def get(self, doc_id: int, recurse: bool = True): document = super().get(doc_id=doc_id) if document: - return document.deserialize(self._db) + return document.deserialize(self._db, recurse=recurse) def search(self, *args, recurse: bool = True, **kwargs) -> List[Record]: results = super().search(*args, **kwargs) diff --git a/src/grung/types.py b/src/grung/types.py index 187ad2a..3303c2f 100644 --- a/src/grung/types.py +++ b/src/grung/types.py @@ -118,6 +118,8 @@ class Collection(Field): Recursively deserialize the objects in this collection """ vals = [] + if not recurse: + return rec for member in rec: pt, puid = member.split("::") vals.append(db.table(pt).search(where("uid") == puid)[0]) diff --git a/test/test_db.py b/test/test_db.py index b63ad04..35121fe 100644 --- a/test/test_db.py +++ b/test/test_db.py @@ -95,3 +95,7 @@ def test_search(db): assert kirk in crew.members assert bones in crew.members assert ricky in crew.members + + Group = Query() + crew = db.Group.search(Group.name == "Crew", recurse=False) + assert f"User::{kirk.uid}" in crew[0].members