From 49754ef2e8dd8165f611175cc0af23afb491c620 Mon Sep 17 00:00:00 2001 From: dangjinghao Date: Sun, 14 Sep 2025 07:13:33 +0000 Subject: [PATCH] feat: backend `ListMemos` API supports return comments upd: rename/delete tags regardless of whether they are in comments or not --- proto/api/v1/memo_service.proto | 3 +++ proto/gen/api/v1/memo_service.pb.go | 16 +++++++++++++--- proto/gen/openapi.yaml | 5 +++++ server/router/api/v1/memo_service.go | 6 +++--- 4 files changed, 24 insertions(+), 6 deletions(-) diff --git a/proto/api/v1/memo_service.proto b/proto/api/v1/memo_service.proto index 3a9bb4612..cfd62f017 100644 --- a/proto/api/v1/memo_service.proto +++ b/proto/api/v1/memo_service.proto @@ -301,6 +301,9 @@ message ListMemosRequest { // Optional. If true, show deleted memos in the response. bool show_deleted = 6 [(google.api.field_behavior) = OPTIONAL]; + + // Optional. If true, include comment memos in the response. + bool show_comments = 7 [(google.api.field_behavior) = OPTIONAL]; } message ListMemosResponse { diff --git a/proto/gen/api/v1/memo_service.pb.go b/proto/gen/api/v1/memo_service.pb.go index 667327bea..071ba8768 100644 --- a/proto/gen/api/v1/memo_service.pb.go +++ b/proto/gen/api/v1/memo_service.pb.go @@ -571,7 +571,9 @@ type ListMemosRequest struct { // Refer to `Shortcut.filter`. Filter string `protobuf:"bytes,5,opt,name=filter,proto3" json:"filter,omitempty"` // Optional. If true, show deleted memos in the response. - ShowDeleted bool `protobuf:"varint,6,opt,name=show_deleted,json=showDeleted,proto3" json:"show_deleted,omitempty"` + ShowDeleted bool `protobuf:"varint,6,opt,name=show_deleted,json=showDeleted,proto3" json:"show_deleted,omitempty"` + // Optional. If true, include comment memos in the response. + ShowComments bool `protobuf:"varint,7,opt,name=show_comments,json=showComments,proto3" json:"show_comments,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -648,6 +650,13 @@ func (x *ListMemosRequest) GetShowDeleted() bool { return false } +func (x *ListMemosRequest) GetShowComments() bool { + if x != nil { + return x.ShowComments + } + return false +} + type ListMemosResponse struct { state protoimpl.MessageState `protogen:"open.v1"` // The list of memos. @@ -2053,7 +2062,7 @@ const file_api_v1_memo_service_proto_rawDesc = "" + "\amemo_id\x18\x02 \x01(\tB\x03\xe0A\x01R\x06memoId\x12(\n" + "\rvalidate_only\x18\x03 \x01(\bB\x03\xe0A\x01R\fvalidateOnly\x12\"\n" + "\n" + - "request_id\x18\x04 \x01(\tB\x03\xe0A\x01R\trequestId\"\xed\x01\n" + + "request_id\x18\x04 \x01(\tB\x03\xe0A\x01R\trequestId\"\x97\x02\n" + "\x10ListMemosRequest\x12 \n" + "\tpage_size\x18\x01 \x01(\x05B\x03\xe0A\x01R\bpageSize\x12\"\n" + "\n" + @@ -2061,7 +2070,8 @@ const file_api_v1_memo_service_proto_rawDesc = "" + "\x05state\x18\x03 \x01(\x0e2\x13.memos.api.v1.StateB\x03\xe0A\x01R\x05state\x12\x1e\n" + "\border_by\x18\x04 \x01(\tB\x03\xe0A\x01R\aorderBy\x12\x1b\n" + "\x06filter\x18\x05 \x01(\tB\x03\xe0A\x01R\x06filter\x12&\n" + - "\fshow_deleted\x18\x06 \x01(\bB\x03\xe0A\x01R\vshowDeleted\"\x84\x01\n" + + "\fshow_deleted\x18\x06 \x01(\bB\x03\xe0A\x01R\vshowDeleted\x12(\n" + + "\rshow_comments\x18\a \x01(\bB\x03\xe0A\x01R\fshowComments\"\x84\x01\n" + "\x11ListMemosResponse\x12(\n" + "\x05memos\x18\x01 \x03(\v2\x12.memos.api.v1.MemoR\x05memos\x12&\n" + "\x0fnext_page_token\x18\x02 \x01(\tR\rnextPageToken\x12\x1d\n" + diff --git a/proto/gen/openapi.yaml b/proto/gen/openapi.yaml index ad86bc3a9..1dd7f9af8 100644 --- a/proto/gen/openapi.yaml +++ b/proto/gen/openapi.yaml @@ -620,6 +620,11 @@ paths: description: Optional. If true, show deleted memos in the response. schema: type: boolean + - name: showComments + in: query + description: Optional. If true, include comment memos in the response. + schema: + type: boolean responses: "200": description: OK diff --git a/server/router/api/v1/memo_service.go b/server/router/api/v1/memo_service.go index 57f6bfab8..2205ae8b5 100644 --- a/server/router/api/v1/memo_service.go +++ b/server/router/api/v1/memo_service.go @@ -108,7 +108,7 @@ func (s *APIV1Service) CreateMemo(ctx context.Context, request *v1pb.CreateMemoR func (s *APIV1Service) ListMemos(ctx context.Context, request *v1pb.ListMemosRequest) (*v1pb.ListMemosResponse, error) { memoFind := &store.FindMemo{ // Exclude comments by default. - ExcludeComments: true, + ExcludeComments: !request.ShowComments, } if request.State == v1pb.State_ARCHIVED { state := store.Archived @@ -695,7 +695,7 @@ func (s *APIV1Service) RenameMemoTag(ctx context.Context, request *v1pb.RenameMe memoFind := &store.FindMemo{ CreatorID: &user.ID, Filters: []string{fmt.Sprintf("tag in [\"%s\"]", request.OldTag)}, - ExcludeComments: true, + ExcludeComments: false, } if (request.Parent) != "memos/-" { memoUID, err := ExtractMemoUIDFromName(request.Parent) @@ -746,7 +746,7 @@ func (s *APIV1Service) DeleteMemoTag(ctx context.Context, request *v1pb.DeleteMe CreatorID: &user.ID, Filters: []string{fmt.Sprintf("tag in [\"%s\"]", request.Tag)}, ExcludeContent: true, - ExcludeComments: true, + ExcludeComments: false, } if request.Parent != "memos/-" { memoUID, err := ExtractMemoUIDFromName(request.Parent)