view_rev.rs 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  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. format!("v:{}", 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. // #[deprecated]
  19. version: i64,
  20. pub belongings: Vec<ViewRevision>,
  21. #[serde(default)]
  22. pub modified_time: i64,
  23. #[serde(default)]
  24. pub create_time: i64,
  25. #[serde(default)]
  26. pub ext_data: String,
  27. #[serde(default)]
  28. pub thumbnail: String,
  29. #[serde(default = "DEFAULT_PLUGIN_TYPE")]
  30. #[serde(rename = "plugin_type")]
  31. pub layout: ViewLayoutTypeRevision,
  32. }
  33. impl ViewRevision {
  34. #[allow(clippy::too_many_arguments)]
  35. pub fn new(
  36. id: String,
  37. app_id: String,
  38. name: String,
  39. desc: String,
  40. data_format: ViewDataFormatRevision,
  41. layout: ViewLayoutTypeRevision,
  42. create_time: i64,
  43. modified_time: i64,
  44. ) -> Self {
  45. Self {
  46. id,
  47. app_id,
  48. name,
  49. desc,
  50. data_format,
  51. version: 0,
  52. belongings: vec![],
  53. modified_time,
  54. create_time,
  55. ext_data: "".to_string(),
  56. thumbnail: "".to_string(),
  57. layout,
  58. }
  59. }
  60. }
  61. const DEFAULT_PLUGIN_TYPE: fn() -> ViewLayoutTypeRevision = || ViewLayoutTypeRevision::Document;
  62. impl std::convert::From<ViewRevision> for TrashRevision {
  63. fn from(view_rev: ViewRevision) -> Self {
  64. TrashRevision {
  65. id: view_rev.id,
  66. name: view_rev.name,
  67. modified_time: view_rev.modified_time,
  68. create_time: view_rev.create_time,
  69. ty: TrashTypeRevision::TrashView,
  70. }
  71. }
  72. }
  73. #[derive(Eq, PartialEq, Debug, Clone, Serialize_repr, Deserialize_repr)]
  74. #[repr(u8)]
  75. pub enum ViewDataFormatRevision {
  76. DeltaFormat = 0,
  77. DatabaseFormat = 1,
  78. NodeFormat = 2,
  79. }
  80. impl std::default::Default for ViewDataFormatRevision {
  81. fn default() -> Self {
  82. ViewDataFormatRevision::DeltaFormat
  83. }
  84. }
  85. #[derive(Eq, PartialEq, Debug, Clone, Serialize_repr, Deserialize_repr)]
  86. #[repr(u8)]
  87. pub enum ViewLayoutTypeRevision {
  88. Document = 0,
  89. // The for historical reasons, the value of Grid is not 1.
  90. Grid = 3,
  91. Board = 4,
  92. Calendar = 5,
  93. }
  94. impl std::default::Default for ViewLayoutTypeRevision {
  95. fn default() -> Self {
  96. ViewLayoutTypeRevision::Document
  97. }
  98. }