reifydb_core/interface/catalog/
series.rs1use reifydb_type::value::sumtype::SumTypeId;
5use serde::{Deserialize, Serialize};
6
7use crate::interface::catalog::{
8 column::ColumnDef,
9 id::{NamespaceId, SeriesId},
10 key::PrimaryKeyDef,
11};
12
13#[derive(Debug, Clone, Copy, PartialEq, Serialize, Deserialize)]
14#[serde(rename_all = "lowercase")]
15pub enum TimestampPrecision {
16 Millisecond = 0,
17 Microsecond = 1,
18 Nanosecond = 2,
19}
20
21impl Default for TimestampPrecision {
22 fn default() -> Self {
23 TimestampPrecision::Millisecond
24 }
25}
26
27#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
28pub struct SeriesDef {
29 pub id: SeriesId,
30 pub namespace: NamespaceId,
31 pub name: String,
32 pub columns: Vec<ColumnDef>,
33 pub tag: Option<SumTypeId>,
34 pub precision: TimestampPrecision,
35 pub primary_key: Option<PrimaryKeyDef>,
36}
37
38#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
39pub struct SeriesMetadata {
40 pub id: SeriesId,
41 pub row_count: u64,
42 pub oldest_timestamp: i64,
43 pub newest_timestamp: i64,
44 pub sequence_counter: u64,
45}
46
47impl SeriesMetadata {
48 pub fn new(series_id: SeriesId) -> Self {
49 Self {
50 id: series_id,
51 row_count: 0,
52 oldest_timestamp: 0,
53 newest_timestamp: 0,
54 sequence_counter: 0,
55 }
56 }
57}