leptos_sync_core/crdt/tree/
config.rs

1//! Configuration types for tree CRDTs
2
3use serde::{Deserialize, Serialize};
4
5/// Strategy for handling tree conflicts
6#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
7pub enum TreeStrategy {
8    /// Add-Wins: Nodes are never removed, only marked as deleted
9    AddWins,
10    /// Remove-Wins: Deleted nodes are completely removed
11    RemoveWins,
12}
13
14/// Configuration for tree CRDTs
15#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
16pub struct TreeConfig {
17    /// Conflict resolution strategy
18    pub strategy: TreeStrategy,
19    /// Whether to preserve deleted nodes in metadata
20    pub preserve_deleted: bool,
21    /// Maximum depth of the tree
22    pub max_depth: Option<usize>,
23    /// Maximum number of children per node
24    pub max_children: Option<usize>,
25}
26
27impl Default for TreeConfig {
28    fn default() -> Self {
29        Self {
30            strategy: TreeStrategy::AddWins,
31            preserve_deleted: true,
32            max_depth: None,
33            max_children: None,
34        }
35    }
36}