use atomic_lib::errors::AtomicResult;
use atomic_lib::{storelike::Query, Store, Storelike};
#[tokio::main(flavor = "current_thread")]
async fn main() -> AtomicResult<()> {
let store = Store::init().await?;
store.populate().await?;
let mut query = Query::new_class("https://atomicdata.dev/classes/Class");
query.include_external = true;
let result = store.query(&query).await?;
println!("Found {} instances of Class:", result.subjects.len());
for subject in result.subjects {
match store.get_resource(&subject.clone()).await {
Ok(resource) => {
let shortname = resource
.get_shortname("shortname", &store)
.await
.map(|v| v.to_string())
.unwrap_or_else(|_| "No shortname".to_string());
let description = resource
.get_shortname("description", &store)
.await
.map(|v| v.to_string())
.unwrap_or_else(|_| "No description".to_string());
println!("\nClass: {}", shortname);
println!("Subject: {}", subject);
println!("Description: {}", description);
}
Err(e) => eprintln!("Error fetching resource {}: {}", subject, e),
}
}
Ok(())
}