mirror of
https://github.com/usememos/memos.git
synced 2024-12-21 10:11:42 +03:00
120 lines
2.4 KiB
Go
120 lines
2.4 KiB
Go
package store
|
|
|
|
import (
|
|
"context"
|
|
)
|
|
|
|
// Visibility is the type of a visibility.
|
|
type Visibility string
|
|
|
|
const (
|
|
// Public is the PUBLIC visibility.
|
|
Public Visibility = "PUBLIC"
|
|
// Protected is the PROTECTED visibility.
|
|
Protected Visibility = "PROTECTED"
|
|
// Private is the PRIVATE visibility.
|
|
Private Visibility = "PRIVATE"
|
|
)
|
|
|
|
func (v Visibility) String() string {
|
|
switch v {
|
|
case Public:
|
|
return "PUBLIC"
|
|
case Protected:
|
|
return "PROTECTED"
|
|
case Private:
|
|
return "PRIVATE"
|
|
}
|
|
return "PRIVATE"
|
|
}
|
|
|
|
type Memo struct {
|
|
ID int32
|
|
|
|
// Standard fields
|
|
RowStatus RowStatus
|
|
CreatorID int32
|
|
CreatedTs int64
|
|
UpdatedTs int64
|
|
|
|
// Domain specific fields
|
|
Content string
|
|
Visibility Visibility
|
|
|
|
// Composed fields
|
|
// For those comment memos, the parent ID is the memo ID of the memo being commented.
|
|
// If the parent ID is nil, then this memo is not a comment.
|
|
ParentID *int32
|
|
Pinned bool
|
|
ResourceIDList []int32
|
|
RelationList []*MemoRelation
|
|
}
|
|
|
|
type FindMemo struct {
|
|
ID *int32
|
|
|
|
// Standard fields
|
|
RowStatus *RowStatus
|
|
CreatorID *int32
|
|
CreatedTsAfter *int64
|
|
CreatedTsBefore *int64
|
|
|
|
// Domain specific fields
|
|
ContentSearch []string
|
|
VisibilityList []Visibility
|
|
Pinned *bool
|
|
HasParent *bool
|
|
ExcludeContent bool
|
|
|
|
// Pagination
|
|
Limit *int
|
|
Offset *int
|
|
OrderByUpdatedTs bool
|
|
}
|
|
|
|
type UpdateMemo struct {
|
|
ID int32
|
|
CreatedTs *int64
|
|
UpdatedTs *int64
|
|
RowStatus *RowStatus
|
|
Content *string
|
|
Visibility *Visibility
|
|
}
|
|
|
|
type DeleteMemo struct {
|
|
ID int32
|
|
}
|
|
|
|
func (s *Store) CreateMemo(ctx context.Context, create *Memo) (*Memo, error) {
|
|
return s.driver.CreateMemo(ctx, create)
|
|
}
|
|
|
|
func (s *Store) ListMemos(ctx context.Context, find *FindMemo) ([]*Memo, error) {
|
|
return s.driver.ListMemos(ctx, find)
|
|
}
|
|
|
|
func (s *Store) GetMemo(ctx context.Context, find *FindMemo) (*Memo, error) {
|
|
list, err := s.ListMemos(ctx, find)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
if len(list) == 0 {
|
|
return nil, nil
|
|
}
|
|
|
|
memo := list[0]
|
|
return memo, nil
|
|
}
|
|
|
|
func (s *Store) UpdateMemo(ctx context.Context, update *UpdateMemo) error {
|
|
return s.driver.UpdateMemo(ctx, update)
|
|
}
|
|
|
|
func (s *Store) DeleteMemo(ctx context.Context, delete *DeleteMemo) error {
|
|
return s.driver.DeleteMemo(ctx, delete)
|
|
}
|
|
|
|
func (s *Store) FindMemosVisibilityList(ctx context.Context, memoIDs []int32) ([]Visibility, error) {
|
|
return s.driver.FindMemosVisibilityList(ctx, memoIDs)
|
|
}
|