Development Documentation (main branch) - For stable release docs, see docs.rs/eidetica

merge_sync_settings

Function merge_sync_settings 

Source
pub fn merge_sync_settings(settings: Vec<SyncSettings>) -> SyncSettings
Expand description

Merge multiple user sync settings into a single combined setting.

Uses the “most aggressive” strategy:

  • sync_enabled: OR (true if any user wants sync)
  • sync_on_commit: OR (true if any user wants it)
  • interval_seconds: MIN (most frequent sync wins)
  • properties: UNION (combine all properties, later values override)

§Arguments

  • settings - Vector of sync settings from different users

§Returns

Combined sync settings, or a default if the input is empty

§Examples

use eidetica::instance::settings_merge::merge_sync_settings;
use eidetica::user::types::SyncSettings;

let settings1 = SyncSettings {
    sync_enabled: true,
    sync_on_commit: false,
    interval_seconds: Some(300),
    properties: Default::default(),
};

let settings2 = SyncSettings {
    sync_enabled: false,
    sync_on_commit: true,
    interval_seconds: Some(60),
    properties: Default::default(),
};

let combined = merge_sync_settings(vec![settings1, settings2]);

// Most aggressive wins
assert_eq!(combined.sync_enabled, true);  // OR
assert_eq!(combined.sync_on_commit, true);  // OR
assert_eq!(combined.interval_seconds, Some(60));  // MIN