editor_deps_impl.rs 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  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.get_db_connection().map_err(|e| {
  14. ErrorBuilder::new(DocErrorCode::EditorDBConnFailed)
  15. .error(e)
  16. .build()
  17. })
  18. }
  19. }
  20. pub struct EditorUserImpl {
  21. pub(crate) user_session: Arc<UserSession>,
  22. }
  23. impl DocumentUser for EditorUserImpl {
  24. fn user_doc_dir(&self) -> Result<String, DocError> {
  25. let dir = self.user_session.get_user_dir().map_err(|e| {
  26. ErrorBuilder::new(DocErrorCode::EditorUserNotLoginYet)
  27. .error(e)
  28. .build()
  29. })?;
  30. let doc_dir = format!("{}/doc", dir);
  31. if !Path::new(&doc_dir).exists() {
  32. // TODO: Make sure to unwrap? 😁
  33. std::fs::create_dir_all(&doc_dir).unwrap();
  34. }
  35. Ok(doc_dir)
  36. }
  37. }