user_default.rs 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. use crate::{
  2. service::{
  3. app::sql_builder::NewAppSqlBuilder as AppBuilder,
  4. view::create_view_with_transaction,
  5. workspace::sql_builder::NewWorkspaceBuilder as WorkspaceBuilder,
  6. },
  7. sqlx_ext::{map_sqlx_error, DBTransaction},
  8. };
  9. use flowy_net::errors::ServerError;
  10. use flowy_workspace::{
  11. entities::view::DOC_DEFAULT_DATA,
  12. protobuf::{App, CreateViewParams, View, ViewType, Workspace},
  13. };
  14. pub async fn create_default_workspace(
  15. transaction: &mut DBTransaction<'_>,
  16. user_id: &str,
  17. ) -> Result<Workspace, ServerError> {
  18. let workspace = create_workspace(transaction, user_id).await?;
  19. let app = create_app(transaction, user_id, &workspace).await?;
  20. let _ = create_view(transaction, &app).await?;
  21. Ok(workspace)
  22. }
  23. async fn create_workspace(transaction: &mut DBTransaction<'_>, user_id: &str) -> Result<Workspace, ServerError> {
  24. let (sql, args, workspace) = WorkspaceBuilder::new(user_id.as_ref())
  25. .name("DefaultWorkspace")
  26. .desc("Workspace created by AppFlowy")
  27. .build()?;
  28. let _ = sqlx::query_with(&sql, args)
  29. .execute(transaction)
  30. .await
  31. .map_err(map_sqlx_error)?;
  32. Ok(workspace)
  33. }
  34. async fn create_app(
  35. transaction: &mut DBTransaction<'_>,
  36. user_id: &str,
  37. workspace: &Workspace,
  38. ) -> Result<App, ServerError> {
  39. let (sql, args, app) = AppBuilder::new(user_id, &workspace.id)
  40. .name("DefaultApp")
  41. .desc("App created by AppFlowy")
  42. .build()?;
  43. let _ = sqlx::query_with(&sql, args)
  44. .execute(transaction)
  45. .await
  46. .map_err(map_sqlx_error)?;
  47. Ok(app)
  48. }
  49. async fn create_view(transaction: &mut DBTransaction<'_>, app: &App) -> Result<View, ServerError> {
  50. let params = CreateViewParams {
  51. belong_to_id: app.id.clone(),
  52. name: "DefaultView".to_string(),
  53. desc: "View created by AppFlowy".to_string(),
  54. thumbnail: "123.png".to_string(),
  55. view_type: ViewType::Doc,
  56. data: DOC_DEFAULT_DATA.to_string(),
  57. unknown_fields: Default::default(),
  58. cached_size: Default::default(),
  59. };
  60. let _name = "DefaultView".to_string();
  61. let _desc = "View created by AppFlowy Server".to_string();
  62. let _thumbnail = "http://1.png".to_string();
  63. let view = create_view_with_transaction(transaction, params).await?;
  64. Ok(view)
  65. }