Skip to main content

reifydb_core/
row.rs

1// SPDX-License-Identifier: Apache-2.0
2// Copyright (c) 2026 ReifyDB
3
4use reifydb_value::value::{duration::Duration, 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: Duration,
19
20	pub cleanup_mode: TtlCleanupMode,
21}
22
23#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
24pub struct RowSettings {
25	pub ttl: Option<Ttl>,
26
27	pub persistent: bool,
28}
29
30impl RowSettings {
31	pub fn is_persistent(&self) -> bool {
32		self.persistent
33	}
34}
35
36#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
37pub struct OperatorSettings {
38	pub ttl: Option<Ttl>,
39
40	pub join: Option<JoinTtl>,
41}
42
43#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
44pub enum TtlCleanupMode {
45	Delete,
46
47	Drop,
48}
49
50#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
51pub struct JoinTtl {
52	pub left: Option<Ttl>,
53
54	pub right: Option<Ttl>,
55}