use flowy_dispatch::prelude::*; use crate::{ errors::WorkspaceError, event::WorkspaceEvent, handlers::create_workspace, services::{AppController, WorkspaceController}, }; use flowy_database::DBConnection; use futures_core::future::BoxFuture; use std::sync::Arc; pub trait WorkspaceUser: Send + Sync { fn set_current_workspace(&self, id: &str) -> BoxFuture<()>; fn get_current_workspace(&self) -> Result; fn db_connection(&self) -> Result; } pub fn create(user: Arc) -> Module { let workspace_controller = Arc::new(WorkspaceController::new(user.clone())); let app_controller = Arc::new(AppController::new(user.clone())); Module::new() .name("Flowy-Workspace") .data(workspace_controller) .data(app_controller) .event(WorkspaceEvent::CreateWorkspace, create_workspace) }