vantage_table/traits/
table_like.rs1use async_trait::async_trait;
2use vantage_core::Result;
3use vantage_dataset::prelude::{ReadableValueSet, WritableValueSet};
4use vantage_expressions::AnyExpression;
5
6use crate::{conditions::ConditionHandle, pagination::Pagination};
7
8#[async_trait]
10pub trait TableLike: ReadableValueSet + WritableValueSet + Send + Sync {
11 fn table_name(&self) -> &str;
12 fn table_alias(&self) -> &str;
13 fn column_names(&self) -> Vec<String>;
14
15 fn add_condition(&mut self, condition: Box<dyn std::any::Any + Send + Sync>) -> Result<()>;
18
19 fn temp_add_condition(&mut self, condition: AnyExpression) -> Result<ConditionHandle>;
21
22 fn temp_remove_condition(&mut self, handle: ConditionHandle) -> Result<()>;
24
25 fn search_expression(&self, search_value: &str) -> Result<AnyExpression>;
27
28 fn clone_box(&self) -> Box<dyn TableLike<Value = Self::Value, Id = Self::Id>>;
30
31 fn into_any(self: Box<Self>) -> Box<dyn std::any::Any>;
33 fn as_any_ref(&self) -> &dyn std::any::Any;
34
35 fn set_pagination(&mut self, pagination: Option<Pagination>);
37
38 fn get_pagination(&self) -> Option<&Pagination>;
40
41 async fn get_count(&self) -> Result<i64>;
43}