module.rs 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. use crate::flowy_server::{ArcFlowyServer, FlowyServerMocker};
  2. use flowy_dispatch::prelude::Module;
  3. use flowy_editor::prelude::*;
  4. use flowy_user::prelude::*;
  5. use crate::deps_resolve::{
  6. EditorDatabaseImpl,
  7. EditorUserImpl,
  8. WorkspaceDatabaseImpl,
  9. WorkspaceUserImpl,
  10. };
  11. use std::sync::Arc;
  12. pub struct ModuleConfig {
  13. pub root: String,
  14. }
  15. pub fn build_modules(config: ModuleConfig, _server: ArcFlowyServer) -> Vec<Module> {
  16. let user_session = Arc::new(
  17. UserSessionBuilder::new()
  18. .root_dir(&config.root)
  19. .build(Arc::new(FlowyServerMocker {})),
  20. );
  21. let workspace_user_impl = Arc::new(WorkspaceUserImpl {
  22. user_session: user_session.clone(),
  23. });
  24. let workspace_db = Arc::new(WorkspaceDatabaseImpl {
  25. user_session: user_session.clone(),
  26. });
  27. let editor_db = Arc::new(EditorDatabaseImpl {
  28. user_session: user_session.clone(),
  29. });
  30. let editor_user = Arc::new(EditorUserImpl {
  31. user_session: user_session.clone(),
  32. });
  33. vec![
  34. flowy_user::module::create(user_session),
  35. flowy_workspace::module::create(workspace_user_impl, workspace_db),
  36. flowy_editor::module::create(editor_db, editor_user),
  37. ]
  38. }