stac_duckdb/
lib.rs

1//! Use [duckdb](https://duckdb.org/) with [STAC](https://stacspec.org).
2
3#![warn(unused_crate_dependencies)]
4
5mod client;
6mod error;
7mod extension;
8
9pub use {client::Client, error::Error, extension::Extension};
10
11use getrandom as _;
12
13/// Searches a stac-geoparquet file.
14///
15/// # Examples
16///
17/// ```
18/// let item_collection = stac_duckdb::search("data/100-sentinel-2-items.parquet", Default::default(), None).unwrap();
19/// ```
20pub fn search(
21    href: &str,
22    mut search: stac_api::Search,
23    max_items: Option<usize>,
24) -> Result<stac_api::ItemCollection> {
25    if let Some(max_items) = max_items {
26        search.limit = Some(max_items.try_into()?);
27    } else {
28        search.limit = None;
29    };
30    let client = Client::new()?;
31    client.search(href, search)
32}
33
34/// A crate-specific result type.
35pub type Result<T> = std::result::Result<T, Error>;
36
37/// Return this crate's version.
38///
39/// # Examples
40///
41/// ```
42/// println!("{}", stac_duckdb::version());
43/// ```
44pub fn version() -> &'static str {
45    env!("CARGO_PKG_VERSION")
46}