memo.go 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  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. Content string `json:"content"`
  32. Visibility Visibility `json:"visibility"`
  33. Pinned bool `json:"pinned"`
  34. // Related fields
  35. CreatorName string `json:"creatorName"`
  36. ResourceList []*Resource `json:"resourceList"`
  37. RelationList []*MemoRelation `json:"relationList"`
  38. }
  39. type CreateMemoRequest struct {
  40. // Standard fields
  41. CreatorID int `json:"-"`
  42. CreatedTs *int64 `json:"createdTs"`
  43. // Domain specific fields
  44. Visibility Visibility `json:"visibility"`
  45. Content string `json:"content"`
  46. // Related fields
  47. ResourceIDList []int `json:"resourceIdList"`
  48. RelationList []*MemoRelationUpsert `json:"relationList"`
  49. }
  50. type PatchMemoRequest 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. RelationList []*MemoRelationUpsert `json:"relationList"`
  62. }
  63. type FindMemoRequest struct {
  64. ID *int
  65. // Standard fields
  66. RowStatus *RowStatus
  67. CreatorID *int
  68. // Domain specific fields
  69. Pinned *bool
  70. ContentSearch []string
  71. VisibilityList []Visibility
  72. // Pagination
  73. Limit *int
  74. Offset *int
  75. }