reifydb_core/event/
metric.rs1use reifydb_codec::key::encoded::EncodedKey;
5use reifydb_value::{
6 byte_size::ByteSize,
7 count::Count,
8 value::{datetime::DateTime, duration::Duration},
9};
10use serde::{Deserialize, Serialize};
11
12use crate::{
13 common::CommitVersion, fingerprint::RequestFingerprint, interface::catalog::metrics::MetricsId,
14 metrics::execution::StatementMetrics,
15};
16
17define_event! {
18
19
20 pub struct MultiCommittedEvent {
21 pub writes: Vec<MultiWrite>,
22 pub deletes: Vec<MultiDelete>,
23 pub version: CommitVersion,
24 }
25}
26
27#[derive(Clone, Copy, Debug, PartialEq, Eq)]
28pub enum PriorSize {
29 Known(Option<u64>),
30 Unknown,
31}
32
33#[derive(Clone, Debug)]
34pub struct MultiWrite {
35 pub key: EncodedKey,
36 pub value_bytes: u64,
37 pub pre: PriorSize,
38}
39
40#[derive(Clone, Debug)]
41pub struct MultiDelete {
42 pub key: EncodedKey,
43 pub pre: PriorSize,
44}
45
46define_event! {
47
48 pub struct MultiSweptEvent {
49 pub evictions: Vec<MultiEviction>,
50 pub persists: Vec<MultiPersist>,
51 pub version: CommitVersion,
52 }
53}
54
55#[derive(Clone, Debug)]
56pub struct MultiEviction {
57 pub key: EncodedKey,
58 pub value_bytes: ByteSize,
59 pub current: bool,
60}
61
62#[derive(Clone, Debug)]
63pub struct MultiPersist {
64 pub key: EncodedKey,
65 pub value_bytes: ByteSize,
66}
67
68define_event! {
69
70 pub struct CdcWrittenEvent {
71 pub entries: Vec<CdcWrite>,
72 pub version: CommitVersion,
73 }
74}
75
76#[derive(Clone, Debug)]
77pub struct CdcWrite {
78 pub key: EncodedKey,
79 pub value_bytes: ByteSize,
80}
81
82#[derive(Clone, Debug, Serialize, Deserialize)]
83pub struct CdcEviction {
84 pub id: MetricsId,
85 pub key_bytes: ByteSize,
86 pub value_bytes: ByteSize,
87 pub count: Count,
88}
89
90define_event! {
91
92 pub struct CdcEvictedEvent {
93 pub entries: Vec<CdcEviction>,
94 pub version: CommitVersion,
95 }
96}
97
98#[derive(Debug, Clone, Serialize, Deserialize)]
99pub enum Request {
100 Query {
101 fingerprint: RequestFingerprint,
102 statements: Vec<StatementMetrics>,
103 },
104 Command {
105 fingerprint: RequestFingerprint,
106 statements: Vec<StatementMetrics>,
107 },
108 Admin {
109 fingerprint: RequestFingerprint,
110 statements: Vec<StatementMetrics>,
111 },
112}
113
114define_event! {
115
116 pub struct RequestExecutedEvent {
117 pub request: Request,
118 pub total: Duration,
119 pub compute: Duration,
120 pub success: bool,
121 pub timestamp: DateTime,
122 }
123}