diff --git a/Cargo.toml b/Cargo.toml index 0465dcb1..93399047 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -25,7 +25,7 @@ derive_builder = "0.10.2" path-absolutize = "3.0.13" whoami = "1.2.1" thiserror = "1.0.32" -async-trait = "0.1.57" +async-trait = "0.1.80" bytes = "1.2.1" tokio-util = { version = "0.7.4", features = [ "codec" ] } futures = "0.3.23" diff --git a/src/executor/executor.rs b/src/executor/executor.rs index 7ea958f3..8e90b9e8 100644 --- a/src/executor/executor.rs +++ b/src/executor/executor.rs @@ -7,14 +7,19 @@ use crate::executor::predule::ExecuteResult; use crate::logger::predule::Logger; use super::config::global::GlobalConfig; +use super::mocking::{FileSystem, RealFileSystem}; pub struct Executor { pub(crate) config: Arc, + pub(crate) file_system: Arc, } impl Executor { pub fn new(config: Arc) -> Self { - Self { config } + Self { + config, + file_system: Arc::new(RealFileSystem {}), + } } // 쿼리 최적화 및 실행, 결과 반환 diff --git a/src/executor/mocking.rs b/src/executor/mocking.rs new file mode 100644 index 00000000..eed19c0b --- /dev/null +++ b/src/executor/mocking.rs @@ -0,0 +1,15 @@ +use futures::io; + +#[async_trait::async_trait] +pub trait FileSystem { + async fn create_dir(&self, path: &str) -> io::Result<()>; +} + +pub struct RealFileSystem; + +#[async_trait::async_trait] +impl FileSystem for RealFileSystem { + async fn create_dir(&self, path: &str) -> io::Result<()> { + tokio::fs::create_dir(path).await + } +} diff --git a/src/executor/mod.rs b/src/executor/mod.rs index 3222cd26..9c0231b3 100644 --- a/src/executor/mod.rs +++ b/src/executor/mod.rs @@ -5,6 +5,7 @@ pub mod encoder; pub mod executor; pub mod implements; pub mod initializer; +pub mod mocking; pub mod predule; pub mod reduce; pub mod result;