use std::sync::{Arc, OnceLock};
use reifydb_core::interface::catalog::{
column::{Column, ColumnIndex},
id::{ColumnId, NamespaceId},
vtable::VTable,
};
use reifydb_type::value::{constraint::TypeConstraint, r#type::Type};
use super::ids::vtable::FLOW_NODE_STORAGE_STATS;
pub fn flow_node_storage_stats() -> Arc<VTable> {
static INSTANCE: OnceLock<Arc<VTable>> = OnceLock::new();
INSTANCE.get_or_init(|| {
Arc::new(VTable {
id: FLOW_NODE_STORAGE_STATS,
namespace: NamespaceId::SYSTEM,
name: "flow_node_storage_stats".to_string(),
columns: vec![
Column {
id: ColumnId(1),
name: "id".to_string(),
constraint: TypeConstraint::unconstrained(Type::Uint8),
properties: vec![],
index: ColumnIndex(0),
auto_increment: false,
dictionary_id: None,
},
Column {
id: ColumnId(2),
name: "flow_id".to_string(),
constraint: TypeConstraint::unconstrained(Type::Uint8),
properties: vec![],
index: ColumnIndex(1),
auto_increment: false,
dictionary_id: None,
},
Column {
id: ColumnId(4),
name: "tier".to_string(),
constraint: TypeConstraint::unconstrained(Type::Utf8),
properties: vec![],
index: ColumnIndex(2),
auto_increment: false,
dictionary_id: None,
},
Column {
id: ColumnId(5),
name: "current_key_bytes".to_string(),
constraint: TypeConstraint::unconstrained(Type::Uint8),
properties: vec![],
index: ColumnIndex(3),
auto_increment: false,
dictionary_id: None,
},
Column {
id: ColumnId(6),
name: "current_value_bytes".to_string(),
constraint: TypeConstraint::unconstrained(Type::Uint8),
properties: vec![],
index: ColumnIndex(4),
auto_increment: false,
dictionary_id: None,
},
Column {
id: ColumnId(7),
name: "current_total_bytes".to_string(),
constraint: TypeConstraint::unconstrained(Type::Uint8),
properties: vec![],
index: ColumnIndex(5),
auto_increment: false,
dictionary_id: None,
},
Column {
id: ColumnId(8),
name: "current_count".to_string(),
constraint: TypeConstraint::unconstrained(Type::Uint8),
properties: vec![],
index: ColumnIndex(6),
auto_increment: false,
dictionary_id: None,
},
Column {
id: ColumnId(9),
name: "historical_key_bytes".to_string(),
constraint: TypeConstraint::unconstrained(Type::Uint8),
properties: vec![],
index: ColumnIndex(7),
auto_increment: false,
dictionary_id: None,
},
Column {
id: ColumnId(10),
name: "historical_value_bytes".to_string(),
constraint: TypeConstraint::unconstrained(Type::Uint8),
properties: vec![],
index: ColumnIndex(8),
auto_increment: false,
dictionary_id: None,
},
Column {
id: ColumnId(11),
name: "historical_total_bytes".to_string(),
constraint: TypeConstraint::unconstrained(Type::Uint8),
properties: vec![],
index: ColumnIndex(9),
auto_increment: false,
dictionary_id: None,
},
Column {
id: ColumnId(12),
name: "historical_count".to_string(),
constraint: TypeConstraint::unconstrained(Type::Uint8),
properties: vec![],
index: ColumnIndex(10),
auto_increment: false,
dictionary_id: None,
},
Column {
id: ColumnId(13),
name: "total_bytes".to_string(),
constraint: TypeConstraint::unconstrained(Type::Uint8),
properties: vec![],
index: ColumnIndex(11),
auto_increment: false,
dictionary_id: None,
},
Column {
id: ColumnId(14),
name: "cdc_key_bytes".to_string(),
constraint: TypeConstraint::unconstrained(Type::Uint8),
properties: vec![],
index: ColumnIndex(12),
auto_increment: false,
dictionary_id: None,
},
Column {
id: ColumnId(15),
name: "cdc_value_bytes".to_string(),
constraint: TypeConstraint::unconstrained(Type::Uint8),
properties: vec![],
index: ColumnIndex(13),
auto_increment: false,
dictionary_id: None,
},
Column {
id: ColumnId(16),
name: "cdc_total_bytes".to_string(),
constraint: TypeConstraint::unconstrained(Type::Uint8),
properties: vec![],
index: ColumnIndex(14),
auto_increment: false,
dictionary_id: None,
},
Column {
id: ColumnId(17),
name: "cdc_count".to_string(),
constraint: TypeConstraint::unconstrained(Type::Uint8),
properties: vec![],
index: ColumnIndex(15),
auto_increment: false,
dictionary_id: None,
},
],
})
})
.clone()
}