workspace.rs 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. use crate::{
  2. entities::parser::workspace::{WorkspaceDesc, WorkspaceIdentify, WorkspaceName},
  3. entities::{app::RepeatedAppPB, view::ViewPB},
  4. errors::*,
  5. impl_def_and_def_mut,
  6. };
  7. use flowy_derive::ProtoBuf;
  8. use folder_rev_model::WorkspaceRevision;
  9. use std::convert::TryInto;
  10. #[derive(Eq, PartialEq, ProtoBuf, Default, Debug, Clone)]
  11. pub struct WorkspacePB {
  12. #[pb(index = 1)]
  13. pub id: String,
  14. #[pb(index = 2)]
  15. pub name: String,
  16. #[pb(index = 3)]
  17. pub desc: String,
  18. #[pb(index = 4)]
  19. pub apps: RepeatedAppPB,
  20. #[pb(index = 5)]
  21. pub modified_time: i64,
  22. #[pb(index = 6)]
  23. pub create_time: i64,
  24. }
  25. impl std::convert::From<WorkspaceRevision> for WorkspacePB {
  26. fn from(workspace_serde: WorkspaceRevision) -> Self {
  27. WorkspacePB {
  28. id: workspace_serde.id,
  29. name: workspace_serde.name,
  30. desc: workspace_serde.desc,
  31. apps: workspace_serde.apps.into(),
  32. modified_time: workspace_serde.modified_time,
  33. create_time: workspace_serde.create_time,
  34. }
  35. }
  36. }
  37. #[derive(PartialEq, Debug, Default, ProtoBuf)]
  38. pub struct RepeatedWorkspacePB {
  39. #[pb(index = 1)]
  40. pub items: Vec<WorkspacePB>,
  41. }
  42. impl_def_and_def_mut!(RepeatedWorkspacePB, WorkspacePB);
  43. #[derive(ProtoBuf, Default)]
  44. pub struct CreateWorkspacePayloadPB {
  45. #[pb(index = 1)]
  46. pub name: String,
  47. #[pb(index = 2)]
  48. pub desc: String,
  49. }
  50. #[derive(Clone, Debug)]
  51. pub struct CreateWorkspaceParams {
  52. pub name: String,
  53. pub desc: String,
  54. }
  55. impl TryInto<CreateWorkspaceParams> for CreateWorkspacePayloadPB {
  56. type Error = ErrorCode;
  57. fn try_into(self) -> Result<CreateWorkspaceParams, Self::Error> {
  58. let name = WorkspaceName::parse(self.name)?;
  59. let desc = WorkspaceDesc::parse(self.desc)?;
  60. Ok(CreateWorkspaceParams {
  61. name: name.0,
  62. desc: desc.0,
  63. })
  64. }
  65. }
  66. // Read all workspaces if the workspace_id is None
  67. #[derive(Clone, ProtoBuf, Default, Debug)]
  68. pub struct WorkspaceIdPB {
  69. #[pb(index = 1, one_of)]
  70. pub value: Option<String>,
  71. }
  72. impl WorkspaceIdPB {
  73. pub fn new(workspace_id: Option<String>) -> Self {
  74. Self { value: workspace_id }
  75. }
  76. }
  77. #[derive(Default, ProtoBuf, Clone)]
  78. pub struct WorkspaceSettingPB {
  79. #[pb(index = 1)]
  80. pub workspace: WorkspacePB,
  81. #[pb(index = 2, one_of)]
  82. pub latest_view: Option<ViewPB>,
  83. }
  84. #[derive(ProtoBuf, Default)]
  85. pub struct UpdateWorkspacePayloadPB {
  86. #[pb(index = 1)]
  87. pub id: String,
  88. #[pb(index = 2, one_of)]
  89. pub name: Option<String>,
  90. #[pb(index = 3, one_of)]
  91. pub desc: Option<String>,
  92. }
  93. #[derive(Clone, Debug)]
  94. pub struct UpdateWorkspaceParams {
  95. pub id: String,
  96. pub name: Option<String>,
  97. pub desc: Option<String>,
  98. }
  99. impl TryInto<UpdateWorkspaceParams> for UpdateWorkspacePayloadPB {
  100. type Error = ErrorCode;
  101. fn try_into(self) -> Result<UpdateWorkspaceParams, Self::Error> {
  102. let name = match self.name {
  103. None => None,
  104. Some(name) => Some(WorkspaceName::parse(name)?.0),
  105. };
  106. let id = WorkspaceIdentify::parse(self.id)?;
  107. Ok(UpdateWorkspaceParams {
  108. id: id.0,
  109. name,
  110. desc: self.desc,
  111. })
  112. }
  113. }