evergreen/common/
circ.rs

1//! Shared, circ-focused utility functions
2use crate as eg;
3use eg::Editor;
4use eg::EgResult;
5use eg::EgValue;
6
7pub fn summarize_circ_chain(e: &mut Editor, circ_id: i64) -> EgResult<EgValue> {
8    let query = eg::hash! {
9        from: ["action.summarize_all_circ_chain", circ_id]
10    };
11
12    if let Some(circ) = e.json_query(query)?.pop() {
13        Ok(EgValue::create("accs", circ)?)
14    } else {
15        Err(format!("No such circulation: {circ_id}").into())
16    }
17}
18
19pub fn circ_chain(e: &mut Editor, circ_id: i64) -> EgResult<Vec<EgValue>> {
20    let query = eg::hash! {
21        from: ["action.all_circ_chain", circ_id]
22    };
23
24    let mut circ_list = e.json_query(query)?;
25
26    if circ_list.is_empty() {
27        Err("No such circulation: {circ_id}")?;
28    }
29
30    let mut chains = Vec::new();
31    for circ in circ_list.drain(..) {
32        chains.push(EgValue::create("aacs", circ)?);
33    }
34
35    Ok(chains)
36}