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