memo.go 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. package api
  2. // Visibility is the type of a visibility.
  3. type Visibility string
  4. const (
  5. // Public is the PUBLIC visibility.
  6. Public Visibility = "PUBLIC"
  7. // Protected is the PROTECTED visibility.
  8. Protected Visibility = "PROTECTED"
  9. // Private is the PRIVATE visibility.
  10. Private Visibility = "PRIVATE"
  11. )
  12. func (v Visibility) String() string {
  13. switch v {
  14. case Public:
  15. return "PUBLIC"
  16. case Protected:
  17. return "PROTECTED"
  18. case Private:
  19. return "PRIVATE"
  20. }
  21. return "PRIVATE"
  22. }
  23. type MemoResponse struct {
  24. ID int `json:"id"`
  25. // Standard fields
  26. RowStatus RowStatus `json:"rowStatus"`
  27. CreatorID int `json:"creatorId"`
  28. CreatedTs int64 `json:"createdTs"`
  29. UpdatedTs int64 `json:"updatedTs"`
  30. // Domain specific fields
  31. DisplayTs int64 `json:"displayTs"`
  32. Content string `json:"content"`
  33. Visibility Visibility `json:"visibility"`
  34. Pinned bool `json:"pinned"`
  35. // Related fields
  36. CreatorName string `json:"creatorName"`
  37. ResourceList []*Resource `json:"resourceList"`
  38. RelationList []*MemoRelation `json:"relationList"`
  39. }
  40. type CreateMemoRequest 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. RelationList []*MemoRelationUpsert `json:"relationList"`
  50. }
  51. type PatchMemoRequest struct {
  52. ID int `json:"-"`
  53. // Standard fields
  54. CreatedTs *int64 `json:"createdTs"`
  55. UpdatedTs *int64
  56. RowStatus *RowStatus `json:"rowStatus"`
  57. // Domain specific fields
  58. Content *string `json:"content"`
  59. Visibility *Visibility `json:"visibility"`
  60. // Related fields
  61. ResourceIDList []int `json:"resourceIdList"`
  62. RelationList []*MemoRelationUpsert `json:"relationList"`
  63. }
  64. type FindMemoRequest struct {
  65. ID *int
  66. // Standard fields
  67. RowStatus *RowStatus
  68. CreatorID *int
  69. // Domain specific fields
  70. Pinned *bool
  71. ContentSearch []string
  72. VisibilityList []Visibility
  73. // Pagination
  74. Limit *int
  75. Offset *int
  76. }