Package-level declarations
Types
A DatasetQueryBackendFactory that creates each dataset's binding once and reuses it while the dataset keeps its declaration; a dataset replaced by another declaration (another table, say) gets a new binding.
The query backend of one dataset: the same four primitives as an aggregate model's.
Pairs a dataset's query backend with its storage adapter. It receives the whole QueryDataset, whose storage says where the records live.
The query gateway of one dataset. A dataset has no domain type, so its records are JSON objects: the typed methods return the same records as the dynamic ones.
The gateways of the datasets this instance serves, by name: what the dataset routes and applications look up. Built from QueryDatasets, it follows them: a dataset that joins gets a gateway, one replaced by another declaration gets a new one (its schema and binding are the new declaration's), one that leaves loses it.