view_rev.rs 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. use crate::revision::{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. pub belong_to_id: String,
  12. pub name: String,
  13. pub desc: String,
  14. #[serde(default)]
  15. pub data_type: ViewDataTypeRevision,
  16. pub version: i64,
  17. pub belongings: Vec<ViewRevision>,
  18. pub modified_time: i64,
  19. pub create_time: i64,
  20. #[serde(default)]
  21. pub ext_data: String,
  22. #[serde(default)]
  23. pub thumbnail: String,
  24. #[serde(default = "DEFAULT_PLUGIN_TYPE")]
  25. pub plugin_type: i32,
  26. }
  27. const DEFAULT_PLUGIN_TYPE: fn() -> i32 = || 0;
  28. impl std::convert::From<ViewRevision> for TrashRevision {
  29. fn from(view_rev: ViewRevision) -> Self {
  30. TrashRevision {
  31. id: view_rev.id,
  32. name: view_rev.name,
  33. modified_time: view_rev.modified_time,
  34. create_time: view_rev.create_time,
  35. ty: TrashTypeRevision::TrashView,
  36. }
  37. }
  38. }
  39. #[derive(Eq, PartialEq, Debug, Clone, Serialize_repr, Deserialize_repr)]
  40. #[repr(u8)]
  41. pub enum ViewDataTypeRevision {
  42. TextBlock = 0,
  43. Grid = 1,
  44. }
  45. impl std::default::Default for ViewDataTypeRevision {
  46. fn default() -> Self {
  47. ViewDataTypeRevision::TextBlock
  48. }
  49. }