diff --git a/crates/manager-core/src/apply_service.rs b/crates/manager-core/src/apply_service.rs index 07383f9..d5f1a5c 100644 --- a/crates/manager-core/src/apply_service.rs +++ b/crates/manager-core/src/apply_service.rs @@ -110,7 +110,7 @@ fn default_collection_kind() -> String { } /// The shared-collection kinds the apply engine accepts. -const COLLECTION_KINDS: &[&str] = &["kv", "docs"]; +const COLLECTION_KINDS: &[&str] = &["kv", "docs", "files"]; #[derive(Debug, Clone, Deserialize)] pub struct BundleScript { diff --git a/crates/picloud-cli/src/manifest.rs b/crates/picloud-cli/src/manifest.rs index 89ba1d9..451e9c5 100644 --- a/crates/picloud-cli/src/manifest.rs +++ b/crates/picloud-cli/src/manifest.rs @@ -269,6 +269,7 @@ pub struct ManifestGroup { pub enum CollectionKind { Kv, Docs, + Files, } impl CollectionKind { @@ -277,6 +278,7 @@ impl CollectionKind { match self { Self::Kv => "kv", Self::Docs => "docs", + Self::Files => "files", } } } @@ -726,7 +728,8 @@ mod tests { // `{ name, kind }` table sets an explicit kind. Both coexist. let m = Manifest::parse( "[group]\nslug = \"acme\"\nname = \"ACME\"\n\n\ - collections = [\"catalog\", { name = \"articles\", kind = \"docs\" }]\n", + collections = [\"catalog\", { name = \"articles\", kind = \"docs\" }, \ + { name = \"assets\", kind = \"files\" }]\n", ) .expect("string-or-table collections must parse"); assert_eq!( @@ -734,6 +737,7 @@ mod tests { vec![ ("catalog".to_string(), "kv".to_string()), ("articles".to_string(), "docs".to_string()), + ("assets".to_string(), "files".to_string()), ] ); // An app manifest carrying `collections` is rejected (no such field +