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
13
14 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)]
23pub struct MultiWrite {
24 pub key: EncodedKey,
25 pub value_bytes: u64,
26}
27
28#[derive(Clone, Debug)]
29pub struct MultiDelete {
30 pub key: EncodedKey,
31 pub value_bytes: u64,
32}
33
34#[derive(Clone, Debug)]
35pub struct MultiDrop {
36 pub key: EncodedKey,
37 pub value_bytes: u64,
38}
39
40define_event! {
41
42 pub struct CdcWrittenEvent {
43 pub entries: Vec<CdcWrite>,
44 pub version: CommitVersion,
45 }
46}
47
48#[derive(Clone, Debug)]
49pub struct CdcWrite {
50 pub key: EncodedKey,
51 pub value_bytes: u64,
52}
53
54#[derive(Clone, Debug)]
55pub struct CdcEviction {
56 pub key: EncodedKey,
57 pub value_bytes: u64,
58}
59
60define_event! {
61
62 pub struct CdcEvictedEvent {
63 pub entries: Vec<CdcEviction>,
64 pub version: CommitVersion,
65 }
66}
67
68#[derive(Debug, Clone, Serialize, Deserialize)]
69pub enum Request {
70 Query {
71 fingerprint: RequestFingerprint,
72 statements: Vec<StatementMetric>,
73 },
74 Command {
75 fingerprint: RequestFingerprint,
76 statements: Vec<StatementMetric>,
77 },
78 Admin {
79 fingerprint: RequestFingerprint,
80 statements: Vec<StatementMetric>,
81 },
82}
83
84define_event! {
85
86 pub struct RequestExecutedEvent {
87 pub request: Request,
88 pub total: Duration,
89 pub compute: Duration,
90 pub success: bool,
91 pub timestamp: DateTime,
92 }
93}