~tsileo/blobstash-python

f75887e26e4260fe37f2f7b29984400bcbe728e6 — Thomas Sileo 3 years ago d5fabc2
docstore: improve pointers support
1 files changed, 12 insertions(+), 0 deletions(-)

M blobstash/docstore/__init__.py
M blobstash/docstore/__init__.py => blobstash/docstore/__init__.py +12 -0
@@ 238,12 238,24 @@ class DocsQueryIterator(BasePaginationIterator):

def _fill_pointers(doc, pointers):
    """Replace the pointer by actual object representation."""
    if not isinstance(doc, dict):
        return

    for k, v in doc.items():
        if isinstance(v, str):
            if v.startswith("@filetree/ref:"):
                doc[k] = Attachment(v, Node.from_resp(pointers[v]))
        elif isinstance(v, dict):
            _fill_pointers(v, pointers)
        elif isinstance(v, list):
            doc[k] = [
                Attachment(item, Node.from_resp(pointers[item]))
                if isinstance(item, str) and item.startswith("@filetree/ref:")
                else item
                for item in v
            ]
            for item in doc[k]:
                _fill_pointers(item, pointers)


class Collection: