document.rs 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. use revision_model::Revision;
  2. use serde::{Deserialize, Serialize};
  3. #[derive(Serialize, Deserialize, Default, Debug, Clone)]
  4. pub struct CreateDocumentParams {
  5. pub doc_id: String,
  6. pub revisions: Vec<Revision>,
  7. }
  8. #[derive(Serialize, Deserialize, Default, Debug, Clone, Eq, PartialEq)]
  9. pub struct DocumentInfo {
  10. pub doc_id: String,
  11. pub data: Vec<u8>,
  12. pub rev_id: i64,
  13. pub base_rev_id: i64,
  14. }
  15. impl std::convert::TryFrom<Revision> for DocumentInfo {
  16. type Error = String;
  17. fn try_from(revision: Revision) -> Result<Self, Self::Error> {
  18. if !revision.is_initial() {
  19. return Err("Revision's rev_id should be 0 when creating the document".to_string());
  20. }
  21. Ok(DocumentInfo {
  22. doc_id: revision.object_id,
  23. data: revision.bytes,
  24. rev_id: revision.rev_id,
  25. base_rev_id: revision.base_rev_id,
  26. })
  27. }
  28. }
  29. #[derive(Serialize, Deserialize, Default, Debug, Clone)]
  30. pub struct ResetDocumentParams {
  31. pub doc_id: String,
  32. pub revisions: Vec<Revision>,
  33. }
  34. #[derive(Serialize, Deserialize, Default, Debug, Clone)]
  35. pub struct DocumentId {
  36. pub value: String,
  37. }
  38. impl AsRef<str> for DocumentId {
  39. fn as_ref(&self) -> &str {
  40. &self.value
  41. }
  42. }
  43. impl std::convert::From<String> for DocumentId {
  44. fn from(value: String) -> Self {
  45. DocumentId { value }
  46. }
  47. }
  48. impl std::convert::From<DocumentId> for String {
  49. fn from(block_id: DocumentId) -> Self {
  50. block_id.value
  51. }
  52. }
  53. impl std::convert::From<&String> for DocumentId {
  54. fn from(s: &String) -> Self {
  55. DocumentId {
  56. value: s.to_owned(),
  57. }
  58. }
  59. }