139 lines
3.2 KiB
Rust
Raw Normal View History

2022-01-13 11:16:26 +08:00
use crate::{
entities::parser::workspace::{WorkspaceDesc, WorkspaceIdentify, WorkspaceName},
2022-07-19 14:11:29 +08:00
entities::{app::RepeatedAppPB, view::ViewPB},
2022-01-13 11:16:26 +08:00
errors::*,
impl_def_and_def_mut,
};
use flowy_derive::ProtoBuf;
use folder_rev_model::WorkspaceRevision;
2022-01-13 11:16:26 +08:00
use std::convert::TryInto;
#[derive(Eq, PartialEq, ProtoBuf, Default, Debug, Clone)]
2022-07-19 14:11:29 +08:00
pub struct WorkspacePB {
2022-01-13 11:16:26 +08:00
#[pb(index = 1)]
pub id: String,
#[pb(index = 2)]
pub name: String,
#[pb(index = 3)]
pub desc: String,
#[pb(index = 4)]
2022-07-19 14:11:29 +08:00
pub apps: RepeatedAppPB,
2022-01-13 11:16:26 +08:00
#[pb(index = 5)]
pub modified_time: i64,
#[pb(index = 6)]
pub create_time: i64,
}
2022-07-19 14:11:29 +08:00
impl std::convert::From<WorkspaceRevision> for WorkspacePB {
fn from(workspace_serde: WorkspaceRevision) -> Self {
2022-07-19 14:11:29 +08:00
WorkspacePB {
id: workspace_serde.id,
name: workspace_serde.name,
desc: workspace_serde.desc,
apps: workspace_serde.apps.into(),
modified_time: workspace_serde.modified_time,
create_time: workspace_serde.create_time,
}
}
}
2022-01-13 11:16:26 +08:00
#[derive(PartialEq, Debug, Default, ProtoBuf)]
2022-07-19 14:11:29 +08:00
pub struct RepeatedWorkspacePB {
2022-01-13 11:16:26 +08:00
#[pb(index = 1)]
2022-07-19 14:11:29 +08:00
pub items: Vec<WorkspacePB>,
2022-01-13 11:16:26 +08:00
}
2022-07-19 14:11:29 +08:00
impl_def_and_def_mut!(RepeatedWorkspacePB, WorkspacePB);
2022-01-13 11:16:26 +08:00
#[derive(ProtoBuf, Default)]
2022-07-19 14:11:29 +08:00
pub struct CreateWorkspacePayloadPB {
2022-01-13 11:16:26 +08:00
#[pb(index = 1)]
pub name: String,
#[pb(index = 2)]
pub desc: String,
}
2022-07-19 14:11:29 +08:00
#[derive(Clone, Debug)]
2022-01-13 11:16:26 +08:00
pub struct CreateWorkspaceParams {
pub name: String,
pub desc: String,
}
2022-07-19 14:11:29 +08:00
impl TryInto<CreateWorkspaceParams> for CreateWorkspacePayloadPB {
2022-01-13 11:16:26 +08:00
type Error = ErrorCode;
fn try_into(self) -> Result<CreateWorkspaceParams, Self::Error> {
let name = WorkspaceName::parse(self.name)?;
let desc = WorkspaceDesc::parse(self.desc)?;
Ok(CreateWorkspaceParams {
name: name.0,
desc: desc.0,
})
}
}
// Read all workspaces if the workspace_id is None
#[derive(Clone, ProtoBuf, Default, Debug)]
2022-07-19 14:11:29 +08:00
pub struct WorkspaceIdPB {
2022-01-13 11:16:26 +08:00
#[pb(index = 1, one_of)]
2022-02-24 21:49:18 +08:00
pub value: Option<String>,
2022-01-13 11:16:26 +08:00
}
2022-07-19 14:11:29 +08:00
impl WorkspaceIdPB {
2022-01-24 17:35:58 +08:00
pub fn new(workspace_id: Option<String>) -> Self {
2022-02-24 21:49:18 +08:00
Self { value: workspace_id }
2022-01-13 11:16:26 +08:00
}
}
#[derive(Default, ProtoBuf, Clone)]
2022-10-26 10:38:57 +08:00
pub struct WorkspaceSettingPB {
2022-01-13 11:16:26 +08:00
#[pb(index = 1)]
2022-07-19 14:11:29 +08:00
pub workspace: WorkspacePB,
2022-01-13 11:16:26 +08:00
#[pb(index = 2, one_of)]
2022-07-19 14:11:29 +08:00
pub latest_view: Option<ViewPB>,
2022-01-13 11:16:26 +08:00
}
#[derive(ProtoBuf, Default)]
2022-07-19 14:11:29 +08:00
pub struct UpdateWorkspacePayloadPB {
2022-01-13 11:16:26 +08:00
#[pb(index = 1)]
2022-01-22 18:48:43 +08:00
pub id: String,
2022-01-13 11:16:26 +08:00
#[pb(index = 2, one_of)]
2022-01-22 18:48:43 +08:00
pub name: Option<String>,
2022-01-13 11:16:26 +08:00
#[pb(index = 3, one_of)]
2022-01-22 18:48:43 +08:00
pub desc: Option<String>,
2022-01-13 11:16:26 +08:00
}
2022-07-19 14:11:29 +08:00
#[derive(Clone, Debug)]
2022-01-13 11:16:26 +08:00
pub struct UpdateWorkspaceParams {
pub id: String,
pub name: Option<String>,
pub desc: Option<String>,
}
2022-07-19 14:11:29 +08:00
impl TryInto<UpdateWorkspaceParams> for UpdateWorkspacePayloadPB {
2022-01-13 11:16:26 +08:00
type Error = ErrorCode;
fn try_into(self) -> Result<UpdateWorkspaceParams, Self::Error> {
let name = match self.name {
None => None,
Some(name) => Some(WorkspaceName::parse(name)?.0),
};
let id = WorkspaceIdentify::parse(self.id)?;
Ok(UpdateWorkspaceParams {
id: id.0,
name,
desc: self.desc,
})
}
}