1use std::{fs, path};
16
17use common_telemetry::info;
18use object_store::services::Fs;
19use object_store::util::join_dir;
20use object_store::ObjectStore;
21use snafu::prelude::*;
22
23use crate::config::FileConfig;
24use crate::error::{self, Result};
25use crate::store;
26
27pub async fn new_fs_object_store(
29 data_home: &str,
30 _file_config: &FileConfig,
31) -> Result<ObjectStore> {
32 fs::create_dir_all(path::Path::new(&data_home))
33 .context(error::CreateDirSnafu { dir: data_home })?;
34 info!("The file storage home is: {}", data_home);
35
36 let atomic_write_dir = join_dir(data_home, ".tmp/");
37 store::clean_temp_dir(&atomic_write_dir)?;
38
39 let builder = Fs::default()
40 .root(data_home)
41 .atomic_write_dir(&atomic_write_dir);
42
43 let object_store = ObjectStore::new(builder)
44 .context(error::InitBackendSnafu)?
45 .finish();
46
47 Ok(object_store)
48}