Skip to main content

reifydb_core/event/
metric.rs

1// SPDX-License-Identifier: Apache-2.0
2// Copyright (c) 2026 ReifyDB
3
4use 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, Debug)]
28pub struct MultiWrite {
29	pub key: EncodedKey,
30	pub value_bytes: u64,
31}
32
33#[derive(Clone, Debug)]
34pub struct MultiDelete {
35	pub key: EncodedKey,
36	pub value_bytes: u64,
37}
38
39define_event! {
40
41	pub struct MultiSweptEvent {
42		pub evictions: Vec<MultiEviction>,
43		pub persists: Vec<MultiPersist>,
44		pub version: CommitVersion,
45	}
46}
47
48#[derive(Clone, Debug)]
49pub struct MultiEviction {
50	pub key: EncodedKey,
51	pub value_bytes: ByteSize,
52	pub current: bool,
53}
54
55#[derive(Clone, Debug)]
56pub struct MultiPersist {
57	pub key: EncodedKey,
58	pub value_bytes: ByteSize,
59}
60
61define_event! {
62
63	pub struct CdcWrittenEvent {
64		pub entries: Vec<CdcWrite>,
65		pub version: CommitVersion,
66	}
67}
68
69#[derive(Clone, Debug)]
70pub struct CdcWrite {
71	pub key: EncodedKey,
72	pub value_bytes: ByteSize,
73}
74
75#[derive(Clone, Debug, Serialize, Deserialize)]
76pub struct CdcEviction {
77	pub id: MetricsId,
78	pub key_bytes: ByteSize,
79	pub value_bytes: ByteSize,
80	pub count: Count,
81}
82
83define_event! {
84
85	pub struct CdcEvictedEvent {
86		pub entries: Vec<CdcEviction>,
87		pub version: CommitVersion,
88	}
89}
90
91#[derive(Debug, Clone, Serialize, Deserialize)]
92pub enum Request {
93	Query {
94		fingerprint: RequestFingerprint,
95		statements: Vec<StatementMetrics>,
96	},
97	Command {
98		fingerprint: RequestFingerprint,
99		statements: Vec<StatementMetrics>,
100	},
101	Admin {
102		fingerprint: RequestFingerprint,
103		statements: Vec<StatementMetrics>,
104	},
105}
106
107define_event! {
108
109	pub struct RequestExecutedEvent {
110		pub request: Request,
111		pub total: Duration,
112		pub compute: Duration,
113		pub success: bool,
114		pub timestamp: DateTime,
115	}
116}