feat(targets): add target-ladybug (Kuzu successor)#95
Conversation
Co-authored-by: bashandbone <89049923+bashandbone@users.noreply.github.com>
Deploying with
|
| Status | Name | Latest Commit | Updated (UTC) |
|---|---|---|---|
| ❌ Deployment failed View logs |
recoco-docs | acdbfb6 | Mar 13 2026, 09:33 PM |
…ature gates Co-authored-by: bashandbone <89049923+bashandbone@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
Adds a new feature-gated target-ladybug graph-db target (Ladybug as Kuzu successor) and wires it into target modules, prelude exports, factory registration, and Cargo features.
Changes:
- Introduces
ops/targets/ladybug.rsimplementing the Ladybug target. - Extends target module wiring/registration and shared gating to include
target-ladybug. - Adds the
target-ladybugCargo feature and includes it inall-targets.
Reviewed changes
Copilot reviewed 5 out of 5 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| crates/recoco-core/src/prelude.rs | Extends recoco_utils::http re-export gating to include target-ladybug. |
| crates/recoco-core/src/ops/targets/mod.rs | Adds ladybug module behind feature flag; includes it in shared target gating. |
| crates/recoco-core/src/ops/targets/ladybug.rs | New Ladybug target implementation (thin Cypher-over-HTTP client, setup/mutation logic). |
| crates/recoco-core/src/ops/registration.rs | Registers Ladybug factory and adjusts reqwest::Client construction/ownership across targets. |
| crates/recoco-core/Cargo.toml | Adds target-ladybug feature and includes it in all-targets. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| cypher.query_mut().push_str( | ||
| keys.iter() | ||
| .chain(values.iter()) | ||
| .map(|(name, ladybug_type)| format!("{name} {ladybug_type}")) | ||
| .join(", ") | ||
| .as_str(), | ||
| ); | ||
| match elem_type { | ||
| ElementType::Node(_) => { | ||
| write!( | ||
| cypher.query_mut(), | ||
| ", {SELF_CONTAINED_TAG_FIELD_NAME} BOOL, PRIMARY KEY ({})", | ||
| keys.iter().map(|(name, _)| name).join(", ") | ||
| )?; |
|
|
||
| #[derive(Debug, Serialize, Deserialize)] | ||
| pub struct Spec { | ||
| connection: spec::AuthEntryReference<ConnectionSpec>, | ||
| mapping: GraphElementMapping, | ||
| } | ||
|
|
|
@copilot apply changes based on the comments in this thread |
… add serde-only doc comments Co-authored-by: bashandbone <89049923+bashandbone@users.noreply.github.com>
Applied both review changes in acdbfb6:
|
Kuzu (property graph DB) was archived Oct 2025. Ladybug is its actively maintained fork with an identical Cypher API server interface. This adds
target-ladybugas a first-class feature-gated target, mirroring the upstream CocoIndex PR #1487.Changes
ops/targets/ladybug.rs— New file, adapted fromkuzu.rsvia mechanicalKuzu*→Ladybug*rename. Also fixes a pre-existing typo (cyper_builder→cypher_builder) and updates the doc URL to the LadybugDB GitHub repo.ops/targets/mod.rs— Addspub mod ladybugunder#[cfg(feature = "target-ladybug")]; extends thepub mod sharedany(...)guard.prelude.rs— Extends therecoco_utils::httpre-export guard to includetarget-ladybug.ops/registration.rs— RegistersLadybugFactory;reqwest_clientis now created when eithertarget-kuzuortarget-ladybugis enabled. When both features are active, kuzu gets.clone()and ladybug gets the move to satisfyclippy::redundant_clone.Cargo.toml— Addstarget-ladybug = ["dep:reqwest", "recoco-utils/reqwest", "target-neo4j"](identical deps totarget-kuzu); includes it inall-targetsandfullbundles.Usage
The
target-kuzufeature remains available; deprecation is a follow-up concern per upstream guidance.Original prompt
📱 Kick off Copilot coding agent tasks wherever you are with GitHub Mobile, available on iOS and Android.