use crate::entities::revision::{RepeatedRevision, Revision}; use flowy_derive::ProtoBuf; #[derive(ProtoBuf, Default, Debug, Clone)] pub struct CreateDocumentParams { #[pb(index = 1)] pub doc_id: String, #[pb(index = 2)] pub revisions: RepeatedRevision, } #[derive(ProtoBuf, Default, Debug, Clone, Eq, PartialEq)] pub struct DocumentPayloadPB { #[pb(index = 1)] pub doc_id: String, #[pb(index = 2)] pub data: Vec, #[pb(index = 3)] pub rev_id: i64, #[pb(index = 4)] pub base_rev_id: i64, } impl std::convert::TryFrom for DocumentPayloadPB { type Error = String; fn try_from(revision: Revision) -> Result { if !revision.is_initial() { return Err("Revision's rev_id should be 0 when creating the document".to_string()); } Ok(DocumentPayloadPB { doc_id: revision.object_id, data: revision.bytes, rev_id: revision.rev_id, base_rev_id: revision.base_rev_id, }) } } #[derive(ProtoBuf, Default, Debug, Clone)] pub struct ResetDocumentParams { #[pb(index = 1)] pub doc_id: String, #[pb(index = 2)] pub revisions: RepeatedRevision, } #[derive(ProtoBuf, Default, Debug, Clone)] pub struct DocumentIdPB { #[pb(index = 1)] pub value: String, } impl AsRef for DocumentIdPB { fn as_ref(&self) -> &str { &self.value } } impl std::convert::From for DocumentIdPB { fn from(value: String) -> Self { DocumentIdPB { value } } } impl std::convert::From for String { fn from(block_id: DocumentIdPB) -> Self { block_id.value } } impl std::convert::From<&String> for DocumentIdPB { fn from(s: &String) -> Self { DocumentIdPB { value: s.to_owned() } } }