Skip to main content

linkrs_sync/
outbox.rs

1use serde::{Deserialize, Serialize};
2use std::sync::Arc;
3
4use crate::types::ChangeType;
5use linkrs_core::{Edge, Value};
6
7#[derive(Debug, Clone, Serialize, Deserialize)]
8pub enum OutboxPayload {
9    Vertex {
10        space_id: u64,
11        tag_name: String,
12        vertex_id: Value,
13        properties: Vec<(Arc<str>, Value)>,
14        change_type: ChangeType,
15    },
16    EdgeInsert {
17        space_id: u64,
18        edge: Edge,
19    },
20    EdgeDelete {
21        space_id: u64,
22        src: Value,
23        dst: Value,
24        edge_type: String,
25        ranking: i64,
26    },
27    CreateIndex {
28        space_id: u64,
29        index_name: String,
30        schema_name: String,
31        index_type: String,
32        fields: Vec<(String, Value)>,
33        properties: Vec<String>,
34    },
35    DropIndex {
36        space_id: u64,
37        index_name: String,
38        schema_name: String,
39        index_type: String,
40        fields: Vec<String>,
41    },
42    DropSpace {
43        space_id: u64,
44    },
45    DropTag {
46        space_id: u64,
47        tag_name: String,
48    },
49}
50
51#[derive(Debug, Clone, Copy, Default, PartialEq, Eq)]
52pub struct OutboxStats {
53    pub pending: usize,
54    pub retries: u64,
55    pub oldest_event_age_ms: u64,
56    pub dead_lettered: usize,
57    pub leased: usize,
58    /// Current durable SQLite projection size.
59    pub write_amplification_bytes: u64,
60    /// Time spent waiting for the SQLite write lock.
61    pub lock_wait_nanos: u64,
62    /// Number of durable projection writes observed by the collector.
63    pub persist_operations: u64,
64}