mirror of https://github.com/usememos/memos
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
35 lines
787 B
Go
35 lines
787 B
Go
package v1
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/usememos/memos/store"
|
|
)
|
|
|
|
func (s *APIV1Service) listMemosByID(ctx context.Context, memoIDs []int32) (map[int32]*store.Memo, error) {
|
|
if len(memoIDs) == 0 {
|
|
return map[int32]*store.Memo{}, nil
|
|
}
|
|
|
|
uniqueMemoIDs := make([]int32, 0, len(memoIDs))
|
|
seenMemoIDs := make(map[int32]struct{}, len(memoIDs))
|
|
for _, memoID := range memoIDs {
|
|
if _, seen := seenMemoIDs[memoID]; seen {
|
|
continue
|
|
}
|
|
seenMemoIDs[memoID] = struct{}{}
|
|
uniqueMemoIDs = append(uniqueMemoIDs, memoID)
|
|
}
|
|
|
|
memos, err := s.Store.ListMemos(ctx, &store.FindMemo{IDList: uniqueMemoIDs})
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
memosByID := make(map[int32]*store.Memo, len(memos))
|
|
for _, memo := range memos {
|
|
memosByID[memo.ID] = memo
|
|
}
|
|
return memosByID, nil
|
|
}
|