mirror of
https://github.com/usememos/memos.git
synced 2025-06-05 22:09:59 +02:00
fix: list resources
This commit is contained in:
@@ -35,7 +35,7 @@ func (s *ResourceService) ListResources(ctx context.Context, _ *apiv2pb.ListReso
|
|||||||
HasRelatedMemo: true,
|
HasRelatedMemo: true,
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, status.Errorf(codes.Internal, "failed to list tags: %v", err)
|
return nil, status.Errorf(codes.Internal, "failed to list resources: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
response := &apiv2pb.ListResourcesResponse{}
|
response := &apiv2pb.ListResourcesResponse{}
|
||||||
|
@@ -4,6 +4,7 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"database/sql"
|
"database/sql"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -108,7 +109,7 @@ func (s *Store) ListResources(ctx context.Context, find *FindResource) ([]*Resou
|
|||||||
|
|
||||||
query := fmt.Sprintf(`
|
query := fmt.Sprintf(`
|
||||||
SELECT
|
SELECT
|
||||||
GROUP_CONCAT(memo_resource.memo_id) as related_memo_id,
|
GROUP_CONCAT(memo_resource.memo_id) as related_memo_ids,
|
||||||
%s
|
%s
|
||||||
FROM resource
|
FROM resource
|
||||||
LEFT JOIN memo_resource ON resource.id = memo_resource.resource_id
|
LEFT JOIN memo_resource ON resource.id = memo_resource.resource_id
|
||||||
@@ -132,8 +133,9 @@ func (s *Store) ListResources(ctx context.Context, find *FindResource) ([]*Resou
|
|||||||
list := make([]*Resource, 0)
|
list := make([]*Resource, 0)
|
||||||
for rows.Next() {
|
for rows.Next() {
|
||||||
resource := Resource{}
|
resource := Resource{}
|
||||||
|
var relatedMemoIDs sql.NullString
|
||||||
dests := []any{
|
dests := []any{
|
||||||
&resource.RelatedMemoID,
|
&relatedMemoIDs,
|
||||||
&resource.ID,
|
&resource.ID,
|
||||||
&resource.Filename,
|
&resource.Filename,
|
||||||
&resource.ExternalLink,
|
&resource.ExternalLink,
|
||||||
@@ -150,6 +152,18 @@ func (s *Store) ListResources(ctx context.Context, find *FindResource) ([]*Resou
|
|||||||
if err := rows.Scan(dests...); err != nil {
|
if err := rows.Scan(dests...); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
if relatedMemoIDs.Valid {
|
||||||
|
relatedMemoIDList := strings.Split(relatedMemoIDs.String, ",")
|
||||||
|
if len(relatedMemoIDList) > 0 {
|
||||||
|
// Only take the first related memo ID.
|
||||||
|
relatedMemoIDInt, err := strconv.Atoi(relatedMemoIDList[0])
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
relatedMemoIDInt32 := int32(relatedMemoIDInt)
|
||||||
|
resource.RelatedMemoID = &relatedMemoIDInt32
|
||||||
|
}
|
||||||
|
}
|
||||||
list = append(list, &resource)
|
list = append(list, &resource)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user