memo.go 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  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. Pinned bool
  38. }
  39. type FindMemo struct {
  40. ID *int32
  41. // Standard fields
  42. RowStatus *RowStatus
  43. CreatorID *int32
  44. CreatedTsAfter *int64
  45. CreatedTsBefore *int64
  46. // Domain specific fields
  47. ContentSearch []string
  48. VisibilityList []Visibility
  49. Pinned *bool
  50. ExcludeContent bool
  51. // Pagination
  52. Limit *int
  53. Offset *int
  54. OrderByUpdatedTs bool
  55. OrderByPinned bool
  56. }
  57. type UpdateMemo struct {
  58. ID int32
  59. CreatedTs *int64
  60. UpdatedTs *int64
  61. RowStatus *RowStatus
  62. Content *string
  63. Visibility *Visibility
  64. }
  65. type DeleteMemo struct {
  66. ID int32
  67. }
  68. func (s *Store) CreateMemo(ctx context.Context, create *Memo) (*Memo, error) {
  69. return s.driver.CreateMemo(ctx, create)
  70. }
  71. func (s *Store) ListMemos(ctx context.Context, find *FindMemo) ([]*Memo, error) {
  72. return s.driver.ListMemos(ctx, find)
  73. }
  74. func (s *Store) GetMemo(ctx context.Context, find *FindMemo) (*Memo, error) {
  75. list, err := s.ListMemos(ctx, find)
  76. if err != nil {
  77. return nil, err
  78. }
  79. if len(list) == 0 {
  80. return nil, nil
  81. }
  82. memo := list[0]
  83. return memo, nil
  84. }
  85. func (s *Store) UpdateMemo(ctx context.Context, update *UpdateMemo) error {
  86. return s.driver.UpdateMemo(ctx, update)
  87. }
  88. func (s *Store) DeleteMemo(ctx context.Context, delete *DeleteMemo) error {
  89. return s.driver.DeleteMemo(ctx, delete)
  90. }
  91. func (s *Store) FindMemosVisibilityList(ctx context.Context, memoIDs []int32) ([]Visibility, error) {
  92. return s.driver.FindMemosVisibilityList(ctx, memoIDs)
  93. }