From a67e301bef1c53b0dc02183302675985dd793170 Mon Sep 17 00:00:00 2001 From: Pete Gadomski Date: Wed, 28 Aug 2024 08:20:50 -0600 Subject: [PATCH] feat(stac-cli): auto create collections when serving --- stac-cli/CHANGELOG.md | 1 + stac-cli/src/args.rs | 4 ++++ stac-cli/src/subcommand/serve.rs | 8 ++++++-- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/stac-cli/CHANGELOG.md b/stac-cli/CHANGELOG.md index 399e61eb..97b2eb64 100644 --- a/stac-cli/CHANGELOG.md +++ b/stac-cli/CHANGELOG.md @@ -10,6 +10,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ### Added - Geoparquet support ([#300](https://github.com/stac-utils/stac-rs/pull/300)) +- Auto-create collections when serving ([#304](https://github.com/stac-utils/stac-rs/pull/304)) ## [0.2.0] - 2024-08-12 diff --git a/stac-cli/src/args.rs b/stac-cli/src/args.rs index 931d2783..683203cf 100644 --- a/stac-cli/src/args.rs +++ b/stac-cli/src/args.rs @@ -151,6 +151,10 @@ pub struct ServeArgs { /// The pgstac connection string. #[arg(long)] pub pgstac: Option, + + /// Don't auto-create collections for items that are missing them. + #[arg(short, long)] + pub dont_auto_create_collections: bool, } /// Arguments for sorting a STAC value. diff --git a/stac-cli/src/subcommand/serve.rs b/stac-cli/src/subcommand/serve.rs index bc6ab83a..127a5d1e 100644 --- a/stac-cli/src/subcommand/serve.rs +++ b/stac-cli/src/subcommand/serve.rs @@ -12,7 +12,9 @@ impl Subcommand { { let mut backend = stac_server::PgstacBackend::new_from_stringlike(pgstac).await?; if !args.href.is_empty() { - backend.add_from_hrefs(&args.href).await?; + backend + .add_from_hrefs(&args.href, !args.dont_auto_create_collections) + .await?; } let api = Api::new(backend, root)?; let router = stac_server::routes::from_api(api); @@ -29,7 +31,9 @@ impl Subcommand { } else { let mut backend = MemoryBackend::new(); if !args.href.is_empty() { - backend.add_from_hrefs(&args.href).await?; + backend + .add_from_hrefs(&args.href, !args.dont_auto_create_collections) + .await?; } let api = Api::new(backend, root)?; let router = stac_server::routes::from_api(api);