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 pub write_amplification_bytes: u64,
60 pub lock_wait_nanos: u64,
62 pub persist_operations: u64,
64}