view_rev.rs 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. use crate::{TrashRevision, TrashTypeRevision};
  2. use nanoid::nanoid;
  3. use serde::{Deserialize, Serialize};
  4. use serde_repr::*;
  5. pub fn gen_view_id() -> String {
  6. nanoid!(10)
  7. }
  8. #[derive(Default, Clone, Debug, Eq, PartialEq, Serialize, Deserialize)]
  9. pub struct ViewRevision {
  10. pub id: String,
  11. #[serde(rename = "belong_to_id")]
  12. pub app_id: String,
  13. pub name: String,
  14. pub desc: String,
  15. #[serde(default)]
  16. #[serde(rename = "data_type")]
  17. pub data_format: ViewDataFormatRevision,
  18. pub version: i64, // Deprecated
  19. pub belongings: Vec<ViewRevision>,
  20. #[serde(default)]
  21. pub modified_time: i64,
  22. #[serde(default)]
  23. pub create_time: i64,
  24. #[serde(default)]
  25. pub ext_data: String,
  26. #[serde(default)]
  27. pub thumbnail: String,
  28. #[serde(default = "DEFAULT_PLUGIN_TYPE")]
  29. #[serde(rename = "plugin_type")]
  30. pub layout: ViewLayoutTypeRevision,
  31. }
  32. const DEFAULT_PLUGIN_TYPE: fn() -> ViewLayoutTypeRevision = || ViewLayoutTypeRevision::Document;
  33. impl std::convert::From<ViewRevision> for TrashRevision {
  34. fn from(view_rev: ViewRevision) -> Self {
  35. TrashRevision {
  36. id: view_rev.id,
  37. name: view_rev.name,
  38. modified_time: view_rev.modified_time,
  39. create_time: view_rev.create_time,
  40. ty: TrashTypeRevision::TrashView,
  41. }
  42. }
  43. }
  44. #[derive(Eq, PartialEq, Debug, Clone, Serialize_repr, Deserialize_repr)]
  45. #[repr(u8)]
  46. pub enum ViewDataFormatRevision {
  47. DeltaFormat = 0,
  48. DatabaseFormat = 1,
  49. TreeFormat = 2,
  50. }
  51. impl std::default::Default for ViewDataFormatRevision {
  52. fn default() -> Self {
  53. ViewDataFormatRevision::DeltaFormat
  54. }
  55. }
  56. #[derive(Eq, PartialEq, Debug, Clone, Serialize_repr, Deserialize_repr)]
  57. #[repr(u8)]
  58. pub enum ViewLayoutTypeRevision {
  59. Document = 0,
  60. // The for historical reasons, the value of Grid is not 1.
  61. Grid = 3,
  62. Board = 4,
  63. }
  64. impl std::default::Default for ViewLayoutTypeRevision {
  65. fn default() -> Self {
  66. ViewLayoutTypeRevision::Document
  67. }
  68. }