mirror of
https://github.com/rustfs/rustfs.git
synced 2026-07-28 09:08:58 +00:00
@@ -0,0 +1,43 @@
|
||||
use async_trait::async_trait;
|
||||
|
||||
use crate::{
|
||||
query::{
|
||||
execution::{Output, QueryStateMachineRef},
|
||||
logical_planner::Plan,
|
||||
Query,
|
||||
},
|
||||
QueryResult,
|
||||
};
|
||||
|
||||
pub struct QueryHandle {
|
||||
query: Query,
|
||||
result: Output,
|
||||
}
|
||||
|
||||
impl QueryHandle {
|
||||
pub fn new(query: Query, result: Output) -> Self {
|
||||
Self { query, result }
|
||||
}
|
||||
|
||||
pub fn query(&self) -> &Query {
|
||||
&self.query
|
||||
}
|
||||
|
||||
pub fn result(self) -> Output {
|
||||
self.result
|
||||
}
|
||||
}
|
||||
|
||||
#[async_trait]
|
||||
pub trait DatabaseManagerSystem {
|
||||
async fn start(&self) -> QueryResult<()>;
|
||||
async fn execute(&self, query: &Query) -> QueryResult<QueryHandle>;
|
||||
async fn build_query_state_machine(&self, query: Query) -> QueryResult<QueryStateMachineRef>;
|
||||
async fn build_logical_plan(&self, query_state_machine: QueryStateMachineRef) -> QueryResult<Option<Plan>>;
|
||||
async fn execute_logical_plan(
|
||||
&self,
|
||||
logical_plan: Plan,
|
||||
query_state_machine: QueryStateMachineRef,
|
||||
) -> QueryResult<QueryHandle>;
|
||||
fn metrics(&self) -> String;
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
pub mod dbms;
|
||||
Reference in New Issue
Block a user