Skip to main content

reifydb_core/
row.rs

1// SPDX-License-Identifier: AGPL-3.0-or-later
2// Copyright (c) 2026 ReifyDB
3
4use reifydb_value::value::row_number::RowNumber;
5use serde::{Deserialize, Serialize};
6
7use crate::encoded::{row::EncodedRow, shape::RowShape};
8
9#[derive(Debug, Clone)]
10pub struct Row {
11	pub number: RowNumber,
12	pub encoded: EncodedRow,
13	pub shape: RowShape,
14}
15
16#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
17pub struct Ttl {
18	pub duration_nanos: u64,
19
20	pub anchor: TtlAnchor,
21
22	pub cleanup_mode: TtlCleanupMode,
23}
24
25#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
26pub struct RowSettings {
27	pub ttl: Option<Ttl>,
28
29	pub persistent: bool,
30}
31
32impl RowSettings {
33	pub fn is_persistent(&self) -> bool {
34		self.persistent
35	}
36}
37
38#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
39pub struct OperatorSettings {
40	pub ttl: Option<Ttl>,
41
42	pub join: Option<JoinTtl>,
43}
44
45#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, Default)]
46pub enum TtlAnchor {
47	#[default]
48	Created,
49
50	Updated,
51}
52
53#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
54pub enum TtlCleanupMode {
55	Delete,
56
57	Drop,
58}
59
60#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
61pub struct JoinTtl {
62	pub left: Option<Ttl>,
63
64	pub right: Option<Ttl>,
65}