memo.go 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. package api
  2. // MaxContentLength means the max memo content bytes is 1MB.
  3. const MaxContentLength = 1 << 30
  4. // Visibility is the type of a visibility.
  5. type Visibility string
  6. const (
  7. // Public is the PUBLIC visibility.
  8. Public Visibility = "PUBLIC"
  9. // Protected is the PROTECTED visibility.
  10. Protected Visibility = "PROTECTED"
  11. // Private is the PRIVATE visibility.
  12. Private Visibility = "PRIVATE"
  13. )
  14. func (e Visibility) String() string {
  15. switch e {
  16. case Public:
  17. return "PUBLIC"
  18. case Protected:
  19. return "PROTECTED"
  20. case Private:
  21. return "PRIVATE"
  22. }
  23. return "PRIVATE"
  24. }
  25. type Memo struct {
  26. ID int `json:"id"`
  27. // Standard fields
  28. RowStatus RowStatus `json:"rowStatus"`
  29. CreatorID int `json:"creatorId"`
  30. CreatedTs int64 `json:"createdTs"`
  31. UpdatedTs int64 `json:"updatedTs"`
  32. // Domain specific fields
  33. Content string `json:"content"`
  34. Visibility Visibility `json:"visibility"`
  35. Pinned bool `json:"pinned"`
  36. // Related fields
  37. CreatorName string `json:"creatorName"`
  38. ResourceList []*Resource `json:"resourceList"`
  39. }
  40. type MemoCreate struct {
  41. // Standard fields
  42. CreatorID int `json:"-"`
  43. CreatedTs *int64 `json:"createdTs"`
  44. // Domain specific fields
  45. Visibility Visibility `json:"visibility"`
  46. Content string `json:"content"`
  47. // Related fields
  48. ResourceIDList []int `json:"resourceIdList"`
  49. }
  50. type MemoPatch struct {
  51. ID int `json:"-"`
  52. // Standard fields
  53. CreatedTs *int64 `json:"createdTs"`
  54. UpdatedTs *int64
  55. RowStatus *RowStatus `json:"rowStatus"`
  56. // Domain specific fields
  57. Content *string `json:"content"`
  58. Visibility *Visibility `json:"visibility"`
  59. // Related fields
  60. ResourceIDList []int `json:"resourceIdList"`
  61. }
  62. type MemoFind struct {
  63. ID *int
  64. // Standard fields
  65. RowStatus *RowStatus
  66. CreatorID *int
  67. // Domain specific fields
  68. Pinned *bool
  69. ContentSearch *string
  70. VisibilityList []Visibility
  71. // Pagination
  72. Limit *int
  73. Offset *int
  74. }
  75. type MemoDelete struct {
  76. ID int
  77. }