mod.rs 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. mod server_api;
  2. mod server_api_mock;
  3. pub use server_api::*;
  4. // TODO: ignore mock files in production
  5. pub use server_api_mock::*;
  6. use crate::{
  7. entities::{
  8. app::{App, AppIdentifier, CreateAppParams, UpdateAppParams},
  9. trash::{RepeatedTrash, TrashIdentifiers},
  10. view::{CreateViewParams, UpdateViewParams, View, ViewIdentifier, ViewIdentifiers},
  11. workspace::{CreateWorkspaceParams, RepeatedWorkspace, UpdateWorkspaceParams, Workspace, WorkspaceIdentifier},
  12. },
  13. errors::WorkspaceError,
  14. };
  15. use backend_service::configuration::ClientServerConfiguration;
  16. use lib_infra::future::FutureResult;
  17. use std::sync::Arc;
  18. pub(crate) type Server = Arc<dyn WorkspaceServerAPI + Send + Sync>;
  19. pub trait WorkspaceServerAPI {
  20. fn init(&self);
  21. // Workspace
  22. fn create_workspace(&self, token: &str, params: CreateWorkspaceParams) -> FutureResult<Workspace, WorkspaceError>;
  23. fn read_workspace(
  24. &self,
  25. token: &str,
  26. params: WorkspaceIdentifier,
  27. ) -> FutureResult<RepeatedWorkspace, WorkspaceError>;
  28. fn update_workspace(&self, token: &str, params: UpdateWorkspaceParams) -> FutureResult<(), WorkspaceError>;
  29. fn delete_workspace(&self, token: &str, params: WorkspaceIdentifier) -> FutureResult<(), WorkspaceError>;
  30. // View
  31. fn create_view(&self, token: &str, params: CreateViewParams) -> FutureResult<View, WorkspaceError>;
  32. fn read_view(&self, token: &str, params: ViewIdentifier) -> FutureResult<Option<View>, WorkspaceError>;
  33. fn delete_view(&self, token: &str, params: ViewIdentifiers) -> FutureResult<(), WorkspaceError>;
  34. fn update_view(&self, token: &str, params: UpdateViewParams) -> FutureResult<(), WorkspaceError>;
  35. // App
  36. fn create_app(&self, token: &str, params: CreateAppParams) -> FutureResult<App, WorkspaceError>;
  37. fn read_app(&self, token: &str, params: AppIdentifier) -> FutureResult<Option<App>, WorkspaceError>;
  38. fn update_app(&self, token: &str, params: UpdateAppParams) -> FutureResult<(), WorkspaceError>;
  39. fn delete_app(&self, token: &str, params: AppIdentifier) -> FutureResult<(), WorkspaceError>;
  40. // Trash
  41. fn create_trash(&self, token: &str, params: TrashIdentifiers) -> FutureResult<(), WorkspaceError>;
  42. fn delete_trash(&self, token: &str, params: TrashIdentifiers) -> FutureResult<(), WorkspaceError>;
  43. fn read_trash(&self, token: &str) -> FutureResult<RepeatedTrash, WorkspaceError>;
  44. }
  45. pub(crate) fn construct_workspace_server(
  46. config: &ClientServerConfiguration,
  47. ) -> Arc<dyn WorkspaceServerAPI + Send + Sync> {
  48. if cfg!(feature = "http_server") {
  49. Arc::new(WorkspaceHttpServer::new(config.clone()))
  50. } else {
  51. Arc::new(WorkspaceServerMock {})
  52. }
  53. }