view_rev.rs 1.9 KB

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