From e5c9d8604d1a1c086336f54152b03bd4849ee44d Mon Sep 17 00:00:00 2001 From: steven Date: Sat, 1 Oct 2022 09:49:59 +0800 Subject: [PATCH] feat: compose memo resource list --- api/memo.go | 3 ++- store/memo.go | 6 ++++-- store/memo_resource.go | 25 +++++++++++++++++++++++++ 3 files changed, 31 insertions(+), 3 deletions(-) diff --git a/api/memo.go b/api/memo.go index a42ffceb..0883c10f 100644 --- a/api/memo.go +++ b/api/memo.go @@ -39,7 +39,8 @@ type Memo struct { Pinned bool `json:"pinned"` // Related fields - Creator *User `json:"creator"` + Creator *User `json:"creator"` + ResourceList []*Resource `json:"resourceList"` } type MemoCreate struct { diff --git a/store/memo.go b/store/memo.go index 248a14c8..bf96ecea 100644 --- a/store/memo.go +++ b/store/memo.go @@ -57,8 +57,10 @@ func (s *Store) composeMemo(ctx context.Context, raw *memoRaw) (*api.Memo, error memo.Pinned = memoOrganizer.Pinned } - err = s.ComposeMemoCreator(ctx, memo) - if err != nil { + if err = s.ComposeMemoCreator(ctx, memo); err != nil { + return nil, err + } + if err = s.ComposeMemoResourceList(ctx, memo); err != nil { return nil, err } diff --git a/store/memo_resource.go b/store/memo_resource.go index 0ad13a49..54729c7c 100644 --- a/store/memo_resource.go +++ b/store/memo_resource.go @@ -28,6 +28,31 @@ func (raw *memoResourceRaw) toMemoResource() *api.MemoResource { } } +func (s *Store) ComposeMemoResourceList(ctx context.Context, memo *api.Memo) error { + memoResourceList, err := s.FindMemoResourceList(ctx, &api.MemoResourceFind{ + MemoID: &memo.ID, + }) + if err != nil { + return err + } + + resourceList := []*api.Resource{} + for _, memoResource := range memoResourceList { + resource, err := s.FindResource(ctx, &api.ResourceFind{ + ID: &memoResource.ResourceID, + }) + if err != nil { + return err + } + + resourceList = append(resourceList, resource) + } + + memo.ResourceList = resourceList + + return nil +} + func (s *Store) FindMemoResourceList(ctx context.Context, find *api.MemoResourceFind) ([]*api.MemoResource, error) { tx, err := s.db.BeginTx(ctx, nil) if err != nil {