Skip to main content

reifydb_core/event/
metric.rs

1// SPDX-License-Identifier: Apache-2.0
2// Copyright (c) 2025 ReifyDB
3
4use 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}