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, 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}