use flowy_database::DBConnection; use flowy_document::{ errors::{DocError, DocErrorCode, ErrorBuilder}, module::{DocumentDatabase, DocumentUser}, }; use flowy_user::prelude::UserSession; use std::{path::Path, sync::Arc}; pub struct EditorDatabaseImpl { pub(crate) user_session: Arc, } impl DocumentDatabase for EditorDatabaseImpl { fn db_connection(&self) -> Result { self.user_session .db_conn() .map_err(|e| ErrorBuilder::new(DocErrorCode::EditorDBConnFailed).error(e).build()) } } pub struct EditorUserImpl { pub(crate) user_session: Arc, } impl DocumentUser for EditorUserImpl { fn user_doc_dir(&self) -> Result { let dir = self .user_session .user_dir() .map_err(|e| ErrorBuilder::new(DocErrorCode::EditorUserNotLoginYet).error(e).build())?; let doc_dir = format!("{}/doc", dir); if !Path::new(&doc_dir).exists() { // TODO: Make sure to unwrap? 😁 std::fs::create_dir_all(&doc_dir).unwrap(); } Ok(doc_dir) } }