workspace_update.rs 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. use std::convert::TryInto;
  2. use flowy_derive::ProtoBuf;
  3. use crate::{entities::workspace::parser::*, errors::*};
  4. #[derive(ProtoBuf, Default)]
  5. pub struct UpdateWorkspaceRequest {
  6. #[pb(index = 1)]
  7. id: String,
  8. #[pb(index = 2, one_of)]
  9. name: Option<String>,
  10. #[pb(index = 3, one_of)]
  11. desc: Option<String>,
  12. }
  13. #[derive(ProtoBuf, Default)]
  14. pub struct UpdateWorkspaceParams {
  15. #[pb(index = 1)]
  16. pub id: String,
  17. #[pb(index = 2, one_of)]
  18. pub name: Option<String>,
  19. #[pb(index = 3, one_of)]
  20. pub desc: Option<String>,
  21. }
  22. impl TryInto<UpdateWorkspaceParams> for UpdateWorkspaceRequest {
  23. type Error = WorkspaceError;
  24. fn try_into(self) -> Result<UpdateWorkspaceParams, Self::Error> {
  25. let name = match self.name {
  26. None => None,
  27. Some(name) => Some(
  28. WorkspaceName::parse(name)
  29. .map_err(|e| {
  30. ErrorBuilder::new(WsErrCode::WorkspaceNameInvalid)
  31. .msg(e)
  32. .build()
  33. })?
  34. .0,
  35. ),
  36. };
  37. let id = WorkspaceId::parse(self.id).map_err(|e| {
  38. ErrorBuilder::new(WsErrCode::WorkspaceIdInvalid)
  39. .msg(e)
  40. .build()
  41. })?;
  42. Ok(UpdateWorkspaceParams {
  43. id: id.0,
  44. name,
  45. desc: self.desc,
  46. })
  47. }
  48. }