module.rs 1.2 KB

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