reifydb_core/event/
metric.rs1use reifydb_type::value::{datetime::DateTime, duration::Duration};
10use serde::{Deserialize, Serialize};
11
12use crate::{
13 common::CommitVersion, encoded::key::EncodedKey, fingerprint::RequestFingerprint, metric::StatementMetric,
14};
15
16define_event! {
17 pub struct MultiCommittedEvent {
20 pub writes: Vec<MultiWrite>,
21 pub deletes: Vec<MultiDelete>,
22 pub drops: Vec<MultiDrop>,
23 pub version: CommitVersion,
24 }
25}
26
27#[derive(Clone, Debug)]
29pub struct MultiWrite {
30 pub key: EncodedKey,
31 pub value_bytes: u64,
32}
33
34#[derive(Clone, Debug)]
36pub struct MultiDelete {
37 pub key: EncodedKey,
38 pub value_bytes: u64,
39}
40
41#[derive(Clone, Debug)]
43pub struct MultiDrop {
44 pub key: EncodedKey,
45 pub value_bytes: u64,
46}
47
48define_event! {
49 pub struct CdcWrittenEvent {
51 pub entries: Vec<CdcWrite>,
52 pub version: CommitVersion,
53 }
54}
55
56#[derive(Clone, Debug)]
58pub struct CdcWrite {
59 pub key: EncodedKey,
60 pub value_bytes: u64,
61}
62
63#[derive(Clone, Debug)]
65pub struct CdcEviction {
66 pub key: EncodedKey,
67 pub value_bytes: u64,
68}
69
70define_event! {
71 pub struct CdcEvictedEvent {
73 pub entries: Vec<CdcEviction>,
74 pub version: CommitVersion,
75 }
76}
77
78#[derive(Debug, Clone, Serialize, Deserialize)]
80pub enum Request {
81 Query {
82 fingerprint: RequestFingerprint,
83 statements: Vec<StatementMetric>,
84 },
85 Command {
86 fingerprint: RequestFingerprint,
87 statements: Vec<StatementMetric>,
88 },
89 Admin {
90 fingerprint: RequestFingerprint,
91 statements: Vec<StatementMetric>,
92 },
93}
94
95define_event! {
96 pub struct RequestExecutedEvent {
98 pub request: Request,
99 pub total: Duration,
100 pub compute: Duration,
101 pub success: bool,
102 pub timestamp: DateTime,
103 }
104}