///|
/// Return only the requested keys from a two-clock snapshot. Duplicate keys
/// are removed, results are in lexical order, and the key budget is checked
/// before any point queries. Useful when an API response needs a small field
/// set from a ledger containing many unrelated keys.
pub fn Ledger::snapshot_selected(
self : Ledger,
keys : Array[String],
valid_at : Int64,
known_at : Int64,
max_keys? : Int = 1024,
) -> Array[Fact] raise TemporalError {
let selected = unique_query_keys(keys, max_keys)
let result : Array[Fact] = []
for key in selected {
match self.observe(key, valid_at, known_at) {
Some(source) =>
match source.value {
Some(value) => result.push({ key, value, source, })
None => ()
}
None => ()
}
}
result
}