Overview
When Labox saves a Storable object, it goes through a series of
steps to convert the object into a format suitable for storage. This process involves
unpacking the object into its constituent parts,
serializing those parts, and then storing the serialized data in a
backend storage system. At the end of this process, a
ManifestRecord is created in the Labox database to
preserve metadata about the components used in the process.
flowchart LR
START:::hidden -- Storable --> U[Unpacker]
U -- UnpackedValue --> S1[Serializer]
U -- UnpackedValue --> S2[Serializer]
U --> S3[...]
S1 -- SerializedData --> R1[Storage]
S2 -- SerializedData --> R2[Storage]
S3 --> R3[...]
classDef hidden display: none;
To faciliate loading a Storable, the user must provide the ManifestRecord that was
created when the Storable object was saved. Labox uses this manifest to find its
associated ContentRecords, which point to the
serialized data in the storage system. Labox then retrieves the data and the various
components (unpackers, serializers, and storages) by their names from a
registry to reconstruct the original Storable object.