memo.go 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. package store
  2. import (
  3. "context"
  4. )
  5. // Visibility is the type of a visibility.
  6. type Visibility string
  7. const (
  8. // Public is the PUBLIC visibility.
  9. Public Visibility = "PUBLIC"
  10. // Protected is the PROTECTED visibility.
  11. Protected Visibility = "PROTECTED"
  12. // Private is the PRIVATE visibility.
  13. Private Visibility = "PRIVATE"
  14. )
  15. func (v Visibility) String() string {
  16. switch v {
  17. case Public:
  18. return "PUBLIC"
  19. case Protected:
  20. return "PROTECTED"
  21. case Private:
  22. return "PRIVATE"
  23. }
  24. return "PRIVATE"
  25. }
  26. type Memo struct {
  27. ID int32
  28. // Standard fields
  29. RowStatus RowStatus
  30. CreatorID int32
  31. CreatedTs int64
  32. UpdatedTs int64
  33. // Domain specific fields
  34. Content string
  35. Visibility Visibility
  36. // Composed fields
  37. // For those comment memos, the parent ID is the memo ID of the memo being commented.
  38. // If the parent ID is nil, then this memo is not a comment.
  39. ParentID *int32
  40. Pinned bool
  41. ResourceIDList []int32
  42. RelationList []*MemoRelation
  43. }
  44. type FindMemo struct {
  45. ID *int32
  46. // Standard fields
  47. RowStatus *RowStatus
  48. CreatorID *int32
  49. CreatedTsAfter *int64
  50. CreatedTsBefore *int64
  51. // Domain specific fields
  52. ContentSearch []string
  53. VisibilityList []Visibility
  54. Pinned *bool
  55. HasParent *bool
  56. ExcludeContent bool
  57. // Pagination
  58. Limit *int
  59. Offset *int
  60. OrderByUpdatedTs bool
  61. }
  62. type UpdateMemo struct {
  63. ID int32
  64. CreatedTs *int64
  65. UpdatedTs *int64
  66. RowStatus *RowStatus
  67. Content *string
  68. Visibility *Visibility
  69. }
  70. type DeleteMemo struct {
  71. ID int32
  72. }
  73. func (s *Store) CreateMemo(ctx context.Context, create *Memo) (*Memo, error) {
  74. return s.driver.CreateMemo(ctx, create)
  75. }
  76. func (s *Store) ListMemos(ctx context.Context, find *FindMemo) ([]*Memo, error) {
  77. return s.driver.ListMemos(ctx, find)
  78. }
  79. func (s *Store) GetMemo(ctx context.Context, find *FindMemo) (*Memo, error) {
  80. list, err := s.ListMemos(ctx, find)
  81. if err != nil {
  82. return nil, err
  83. }
  84. if len(list) == 0 {
  85. return nil, nil
  86. }
  87. memo := list[0]
  88. return memo, nil
  89. }
  90. func (s *Store) UpdateMemo(ctx context.Context, update *UpdateMemo) error {
  91. return s.driver.UpdateMemo(ctx, update)
  92. }
  93. func (s *Store) DeleteMemo(ctx context.Context, delete *DeleteMemo) error {
  94. return s.driver.DeleteMemo(ctx, delete)
  95. }
  96. func (s *Store) FindMemosVisibilityList(ctx context.Context, memoIDs []int32) ([]Visibility, error) {
  97. return s.driver.FindMemosVisibilityList(ctx, memoIDs)
  98. }