Constellation, Spacedust, Slingshot, UFOs: atproto crates and services for microcosm

did-filtering: ship it

Changed files
+35 -17
constellation
+3 -3
constellation/src/storage/mem_store.rs
···
let did_rkeys: Vec<_> = if let Some(dids) = filter_dids {
did_rkeys
-
.into_iter()
-
.cloned()
+
.iter()
.filter(|m| {
-
m.clone()
+
Option::<(Did, RKey)>::clone(m)
.map(|(did, _)| dids.contains(&did))
.unwrap_or(false)
})
+
.cloned()
.collect()
} else {
did_rkeys.to_vec()
+3 -3
constellation/src/storage/mod.rs
···
storage.push(
&ActionableEvent::CreateLinks {
record_id: RecordId {
-
did: format!("did:plc:linker").into(),
+
did: "did:plc:linker".into(),
collection: "app.t.c".into(),
rkey: "asdf".into(),
},
···
storage.push(
&ActionableEvent::CreateLinks {
record_id: RecordId {
-
did: format!("did:plc:linker").into(),
+
did: "did:plc:linker".into(),
collection: "app.t.c".into(),
rkey: "asdf-2".into(),
},
···
storage.push(
&ActionableEvent::CreateLinks {
record_id: RecordId {
-
did: format!("did:plc:someone-else").into(),
+
did: "did:plc:someone-else".into(),
collection: "app.t.c".into(),
rkey: "asdf".into(),
},
+18 -1
constellation/src/storage/rocks_store.rs
···
});
};
-
let linkers = self.get_target_linkers(&target_id)?;
+
let mut linkers = self.get_target_linkers(&target_id)?;
+
if let Some(dids) = filter_dids {
+
let mut did_filter = HashSet::new();
+
for did in dids {
+
let Some(DidIdValue(did_id, active)) =
+
self.did_id_table.get_id_val(&self.db, did)?
+
else {
+
eprintln!("failed to find a did_id for {did:?}");
+
continue;
+
};
+
if !active {
+
eprintln!("excluding inactive did from filtered results");
+
continue;
+
}
+
did_filter.insert(did_id);
+
}
+
linkers.0.retain(|linker| did_filter.contains(&linker.0));
+
}
let (alive, gone) = linkers.count();
let total = alive + gone;