diff --git a/src/grung/db.py b/src/grung/db.py index 2b6230f..a231306 100644 --- a/src/grung/db.py +++ b/src/grung/db.py @@ -37,9 +37,9 @@ class RecordTable(table.Table): if document: return document.deserialize(self._db) - def search(self, *args, **kwargs) -> List[Record]: + def search(self, *args, recurse: bool = True, **kwargs) -> List[Record]: results = super().search(*args, **kwargs) - return [r.deserialize(self._db) for r in results] + return [r.deserialize(self._db, recurse=recurse) for r in results] def remove(self, document): if document.doc_id: diff --git a/src/grung/types.py b/src/grung/types.py index 89f192f..187ad2a 100644 --- a/src/grung/types.py +++ b/src/grung/types.py @@ -26,7 +26,7 @@ class Field: def serialize(self, rec: value_type, db: TinyDB) -> str: return str(rec) - def deserialize(self, rec: value_type, db: TinyDB) -> value_type: + def deserialize(self, rec: value_type, db: TinyDB, recurse: bool = True) -> value_type: return rec @@ -35,7 +35,7 @@ class Integer(Field): value_type: type = int default: int = 0 - def deserialize(self, rec: str, db: TinyDB) -> value_type: + def deserialize(self, rec: str, db: TinyDB, recurse: bool = True) -> value_type: return int(rec) @@ -66,13 +66,13 @@ class Record(Dict[(str, Field)]): rec[name] = _field.serialize(self[name], db) return self.__class__(rec, doc_id=self.doc_id) - def deserialize(self, db): + def deserialize(self, db, recurse: bool = True): """ Deserialize every field on the record """ rec = {} for name, _field in self._metadata.fields.items(): - rec[name] = _field.deserialize(self[name], db) + rec[name] = _field.deserialize(self[name], db, recurse=recurse) return self.__class__(rec, doc_id=self.doc_id) def before_insert(self): @@ -113,7 +113,7 @@ class Collection(Field): vals.append(f"{rec._metadata.table}::{rec.uid}") return vals - def deserialize(self, rec: List[value_type], db: TinyDB) -> value_type: + def deserialize(self, rec: List[value_type], db: TinyDB, recurse=True) -> value_type: """ Recursively deserialize the objects in this collection """