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