1use onestore::{ExGuid, RevisionIndex, Store, document::Document};
2use std::collections::BTreeMap;
3
4pub fn current(bytes: &[u8]) -> BTreeMap<ExGuid, String> {
5 let store = Store::parse(bytes).unwrap();
6 assert!(store.checksum_mismatches.is_empty());
7 let index = RevisionIndex::parse(&store).unwrap();
8 index.validate_current().unwrap();
9 Document::parse(&index).unwrap();
10 index
11 .spaces
12 .iter()
13 .map(|(sid, space)| {
14 let rid = space.labels[&(ExGuid::default(), 1)];
15 let revision = index.resolve(*sid, rid).unwrap();
16 for object in revision.objects.values() {
17 if let Some(onestore::FileDataReference::Internal(guid)) =
18 object.file_reference().unwrap()
19 {
20 store.file_data(guid).unwrap();
21 }
22 }
23 (*sid, format!("{revision:?}"))
24 })
25 .collect()
26}