reifydb-core 0.9.1

Core database interfaces and data structures for ReifyDB
Documentation
// SPDX-License-Identifier: Apache-2.0
// Copyright (c) 2026 ReifyDB

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

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