use reifydb_codec::key::encoded::EncodedKey;
use reifydb_value::{
byte_size::ByteSize,
count::Count,
value::{datetime::DateTime, duration::Duration},
};
use serde::{Deserialize, Serialize};
use crate::{
common::CommitVersion, fingerprint::RequestFingerprint, interface::catalog::metrics::MetricsId,
metrics::execution::StatementMetrics,
};
define_event! {
pub struct MultiCommittedEvent {
pub writes: Vec<MultiWrite>,
pub deletes: Vec<MultiDelete>,
pub version: CommitVersion,
}
}
#[derive(Clone, Debug)]
pub struct MultiWrite {
pub key: EncodedKey,
pub value_bytes: u64,
}
#[derive(Clone, Debug)]
pub struct MultiDelete {
pub key: EncodedKey,
pub value_bytes: u64,
}
define_event! {
pub struct MultiSweptEvent {
pub evictions: Vec<MultiEviction>,
pub persists: Vec<MultiPersist>,
pub version: CommitVersion,
}
}
#[derive(Clone, Debug)]
pub struct MultiEviction {
pub key: EncodedKey,
pub value_bytes: ByteSize,
pub current: bool,
}
#[derive(Clone, Debug)]
pub struct MultiPersist {
pub key: EncodedKey,
pub value_bytes: ByteSize,
}
define_event! {
pub struct CdcWrittenEvent {
pub entries: Vec<CdcWrite>,
pub version: CommitVersion,
}
}
#[derive(Clone, Debug)]
pub struct CdcWrite {
pub key: EncodedKey,
pub value_bytes: ByteSize,
}
#[derive(Clone, Debug, Serialize, Deserialize)]
pub struct CdcEviction {
pub id: MetricsId,
pub key_bytes: ByteSize,
pub value_bytes: ByteSize,
pub count: Count,
}
define_event! {
pub struct CdcEvictedEvent {
pub entries: Vec<CdcEviction>,
pub version: CommitVersion,
}
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum Request {
Query {
fingerprint: RequestFingerprint,
statements: Vec<StatementMetrics>,
},
Command {
fingerprint: RequestFingerprint,
statements: Vec<StatementMetrics>,
},
Admin {
fingerprint: RequestFingerprint,
statements: Vec<StatementMetrics>,
},
}
define_event! {
pub struct RequestExecutedEvent {
pub request: Request,
pub total: Duration,
pub compute: Duration,
pub success: bool,
pub timestamp: DateTime,
}
}