SzConfigManager

Trait SzConfigManager 

Source
pub trait SzConfigManager {
    // Required methods
    fn create_config(&self) -> SzResult<Box<dyn SzConfig>>;
    fn create_config_from_id(
        &self,
        config_id: ConfigId,
    ) -> SzResult<Box<dyn SzConfig>>;
    fn create_config_from_definition(
        &self,
        config_definition: &str,
    ) -> SzResult<Box<dyn SzConfig>>;
    fn get_config_registry(&self) -> SzResult<JsonString>;
    fn get_default_config_id(&self) -> SzResult<ConfigId>;
    fn register_config(
        &self,
        config_definition: &str,
        config_comment: Option<&str>,
    ) -> SzResult<ConfigId>;
    fn replace_default_config_id(
        &self,
        current_default_config_id: ConfigId,
        new_default_config_id: ConfigId,
    ) -> SzResult<()>;
    fn set_default_config(
        &self,
        config_definition: &str,
        config_comment: Option<&str>,
    ) -> SzResult<ConfigId>;
    fn set_default_config_id(&self, config_id: ConfigId) -> SzResult<()>;
}
Expand description

Configuration lifecycle management.

The SzConfigManager trait provides methods for managing configuration versions, registration, and deployment. Use this to create, modify, and activate configuration versions.

§Obtaining an Instance

use sz_rust_sdk::prelude::*;

let config_mgr = env.get_config_manager()?;

Required Methods§

Source

fn create_config(&self) -> SzResult<Box<dyn SzConfig>>

Creates a new configuration instance from the default template.

Returns a configuration object that can be modified (e.g., adding data sources) before being registered and activated.

§Returns

A new SzConfig instance based on the default configuration template.

§Examples
use sz_rust_sdk::prelude::*;

let config_mgr = env.get_config_manager()?;
let config = config_mgr.create_config()?;
let json = config.export()?;
assert!(!json.is_empty());
Source

fn create_config_from_id( &self, config_id: ConfigId, ) -> SzResult<Box<dyn SzConfig>>

Creates a configuration from an existing registered configuration.

Loads a previously registered configuration for viewing or modification.

§Arguments
  • config_id - ID of a registered configuration
§Returns

An SzConfig instance with the specified configuration loaded.

§Examples
use sz_rust_sdk::prelude::*;

let config_mgr = env.get_config_manager()?;
let config_id = config_mgr.get_default_config_id()?;
let config = config_mgr.create_config_from_id(config_id)?;
let json = config.export()?;
assert!(!json.is_empty());
§Errors
  • SzError::NotFound - Configuration ID does not exist
Source

fn create_config_from_definition( &self, config_definition: &str, ) -> SzResult<Box<dyn SzConfig>>

Creates a configuration from a JSON definition string.

Parses a configuration JSON (e.g., from a file or SzConfig::export()) into a configuration object.

§Arguments
  • config_definition - JSON string containing the configuration
§Returns

An SzConfig instance with the parsed configuration.

§Examples
use sz_rust_sdk::prelude::*;

let config_mgr = env.get_config_manager()?;
let config = config_mgr.create_config()?;
let json = config.export()?;
let config2 = config_mgr.create_config_from_definition(&json)?;
§Errors
  • SzError::BadInput - Invalid JSON or configuration format
Source

fn get_config_registry(&self) -> SzResult<JsonString>

Gets the configuration registry.

Returns information about all registered configuration versions.

§Returns

JSON string with array of configuration metadata including IDs, comments, and timestamps.

§Examples
use sz_rust_sdk::prelude::*;

let config_mgr = env.get_config_manager()?;
let registry = config_mgr.get_config_registry()?;
println!("Registered configs: {}", registry);
Source

fn get_default_config_id(&self) -> SzResult<ConfigId>

Gets the currently active default configuration ID.

§Returns

The configuration ID that is currently active for entity resolution.

§Examples
use sz_rust_sdk::prelude::*;

let config_mgr = env.get_config_manager()?;
let config_id = config_mgr.get_default_config_id()?;
println!("Default config ID: {}", config_id);
Source

fn register_config( &self, config_definition: &str, config_comment: Option<&str>, ) -> SzResult<ConfigId>

Registers a new configuration version.

Saves a configuration to the repository, making it available for activation. Does not activate the configuration - use set_default_config_id for that.

§Arguments
  • config_definition - JSON string from SzConfig::export()
  • config_comment - Optional description for this configuration version
§Returns

The assigned configuration ID for the newly registered configuration.

§Examples
use sz_rust_sdk::prelude::*;

let config_mgr = env.get_config_manager()?;
let config = config_mgr.create_config()?;
let config_json = config.export()?;
let config_id = config_mgr.register_config(&config_json, Some("Test config"))?;
println!("Registered config ID: {}", config_id);
Source

fn replace_default_config_id( &self, current_default_config_id: ConfigId, new_default_config_id: ConfigId, ) -> SzResult<()>

Atomically replaces the default configuration ID.

Updates the active configuration only if the current default matches the expected value. This prevents race conditions when multiple processes may be updating the configuration.

§Arguments
  • current_default_config_id - Expected current default (for optimistic locking)
  • new_default_config_id - New configuration to activate
§Examples
use sz_rust_sdk::prelude::*;

let config_mgr = env.get_config_manager()?;
let current_id = config_mgr.get_default_config_id()?;
let config = config_mgr.create_config()?;
let config_json = config.export()?;
let new_id = config_mgr.register_config(&config_json, Some("Replacement config"))?;
config_mgr.replace_default_config_id(current_id, new_id)?;
§Errors
  • SzError::ReplaceConflict - Current default doesn’t match expected value
  • SzError::NotFound - New configuration ID does not exist
Source

fn set_default_config( &self, config_definition: &str, config_comment: Option<&str>, ) -> SzResult<ConfigId>

Registers and activates a configuration in one operation.

Convenience method that combines register_config and set_default_config_id.

§Arguments
  • config_definition - JSON string from SzConfig::export()
  • config_comment - Optional description for this configuration version
§Returns

The assigned configuration ID.

§Examples
use sz_rust_sdk::prelude::*;

let config_mgr = env.get_config_manager()?;
let config = config_mgr.create_config()?;
let config_json = config.export()?;
let config_id = config_mgr.set_default_config(&config_json, Some("New default"))?;
println!("New default config ID: {}", config_id);
Source

fn set_default_config_id(&self, config_id: ConfigId) -> SzResult<()>

Sets the active configuration by ID.

Activates a previously registered configuration. The engine will use this configuration for all subsequent operations.

§Arguments
  • config_id - ID of a registered configuration to activate
§Examples
use sz_rust_sdk::prelude::*;

let config_mgr = env.get_config_manager()?;
let config_id = config_mgr.get_default_config_id()?;
config_mgr.set_default_config_id(config_id)?;
§Errors
  • SzError::NotFound - Configuration ID does not exist

Implementors§