editor_deps_impl.rs 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. use flowy_database::DBConnection;
  2. use flowy_document::{
  3. errors::{DocError, DocErrorCode, ErrorBuilder},
  4. module::{DocumentDatabase, DocumentUser},
  5. };
  6. use flowy_user::prelude::UserSession;
  7. use std::{path::Path, sync::Arc};
  8. pub struct EditorDatabaseImpl {
  9. pub(crate) user_session: Arc<UserSession>,
  10. }
  11. impl DocumentDatabase for EditorDatabaseImpl {
  12. fn db_connection(&self) -> Result<DBConnection, DocError> {
  13. self.user_session
  14. .db_conn()
  15. .map_err(|e| ErrorBuilder::new(DocErrorCode::EditorDBConnFailed).error(e).build())
  16. }
  17. }
  18. pub struct EditorUserImpl {
  19. pub(crate) user_session: Arc<UserSession>,
  20. }
  21. impl DocumentUser for EditorUserImpl {
  22. fn user_doc_dir(&self) -> Result<String, DocError> {
  23. let dir = self
  24. .user_session
  25. .user_dir()
  26. .map_err(|e| ErrorBuilder::new(DocErrorCode::EditorUserNotLoginYet).error(e).build())?;
  27. let doc_dir = format!("{}/doc", dir);
  28. if !Path::new(&doc_dir).exists() {
  29. // TODO: Make sure to unwrap? 😁
  30. std::fs::create_dir_all(&doc_dir).unwrap();
  31. }
  32. Ok(doc_dir)
  33. }
  34. }