sz-rust-sdk-configtool

Pure Rust library for manipulating Senzing configuration JSON

Version: 0.1.0

License: Apache-2.0

Rust Version: 1.85+ (Edition 2024)

🎯 Key Features

  • Pure Library: No CLI code, interactive features, or display logic
  • 147 Rust Functions: Across 30 modules for complete config management
  • 121 C FFI Functions: Full C-compatible interface with proper memory management
  • Clean API: Parameter structs for self-documenting code
  • Type-Safe Errors: Custom SzConfigError enum for all error conditions
  • Command Processing: Process .gtc upgrade scripts (27/27 commands)
  • Zero Dependencies: Only serde, serde_json, and anyhow

✨ Modern API Design

All functions use parameter structs for clean, self-documenting code:

use sz_configtool_lib::features::{set_feature, SetFeatureParams};

// ✨ Named fields - crystal clear!
let config = set_feature(&config, SetFeatureParams {
    feature: "NAME",
    candidates: Some("Yes"),
    behavior: Some("NAME"),
    version: Some(2),
    ..Default::default()
})?;

Benefits: Self-documenting • Type-safe • Extensible • IDE-friendly

📝 More Examples

Add a Data Source (minimal)

datasources::add_data_source(&config, AddDataSourceParams {
    code: "CUSTOMERS",
    ..Default::default()  // Use all defaults
})?;

Add an Attribute

attributes::add_attribute(&config, AddAttributeParams {
    attribute: "EMAIL_ADDR",
    feature: "EMAIL",
    element: "EMAIL_ADDRESS",
    class: "IDENTIFIER",
    internal: Some("No"),
    required: Some("Yes"),
    ..Default::default()  // default_value = None
})?;

Update a Feature (set only what changes)

features::set_feature(&config, SetFeatureParams {
    feature: "SEMANTIC_VALUE",
    candidates: Some("Yes"),
    behavior: Some("NAME"),  // Prevent generic threshold hits!
    ..Default::default()  // Keep all other settings
})?;

Process Upgrade Script

use command_processor::CommandProcessor;

let mut processor = CommandProcessor::new(config);
let upgraded = processor.process_file("upgrade-10-to-11.gtc")?;
println!("{}", processor.summary()); // "Executed 90 commands"

🔧 Modules

attributes (8)
datasources (7)
elements (8)
features (24)
thresholds (6)
calls (32)
functions (28)
behavior_overrides (4)
command_processor
+ 20 more