mirror of https://github.com/usememos/memos.git
refactor: memo service
This commit is contained in:
parent
91c2a4cef9
commit
9972a77d9e
|
|
@ -5,10 +5,10 @@ package memos.api.v1;
|
||||||
import "api/v1/attachment_service.proto";
|
import "api/v1/attachment_service.proto";
|
||||||
import "api/v1/common.proto";
|
import "api/v1/common.proto";
|
||||||
import "api/v1/markdown_service.proto";
|
import "api/v1/markdown_service.proto";
|
||||||
import "api/v1/reaction_service.proto";
|
|
||||||
import "google/api/annotations.proto";
|
import "google/api/annotations.proto";
|
||||||
import "google/api/client.proto";
|
import "google/api/client.proto";
|
||||||
import "google/api/field_behavior.proto";
|
import "google/api/field_behavior.proto";
|
||||||
|
import "google/api/resource.proto";
|
||||||
import "google/protobuf/empty.proto";
|
import "google/protobuf/empty.proto";
|
||||||
import "google/protobuf/field_mask.proto";
|
import "google/protobuf/field_mask.proto";
|
||||||
import "google/protobuf/timestamp.proto";
|
import "google/protobuf/timestamp.proto";
|
||||||
|
|
@ -22,6 +22,7 @@ service MemoService {
|
||||||
post: "/api/v1/memos"
|
post: "/api/v1/memos"
|
||||||
body: "memo"
|
body: "memo"
|
||||||
};
|
};
|
||||||
|
option (google.api.method_signature) = "memo";
|
||||||
}
|
}
|
||||||
// ListMemos lists memos with pagination and filter.
|
// ListMemos lists memos with pagination and filter.
|
||||||
rpc ListMemos(ListMemosRequest) returns (ListMemosResponse) {
|
rpc ListMemos(ListMemosRequest) returns (ListMemosResponse) {
|
||||||
|
|
@ -29,6 +30,8 @@ service MemoService {
|
||||||
get: "/api/v1/memos"
|
get: "/api/v1/memos"
|
||||||
additional_bindings: {get: "/api/v1/{parent=users/*}/memos"}
|
additional_bindings: {get: "/api/v1/{parent=users/*}/memos"}
|
||||||
};
|
};
|
||||||
|
option (google.api.method_signature) = "";
|
||||||
|
option (google.api.method_signature) = "parent";
|
||||||
}
|
}
|
||||||
// GetMemo gets a memo.
|
// GetMemo gets a memo.
|
||||||
rpc GetMemo(GetMemoRequest) returns (Memo) {
|
rpc GetMemo(GetMemoRequest) returns (Memo) {
|
||||||
|
|
@ -54,10 +57,12 @@ service MemoService {
|
||||||
patch: "/api/v1/{parent=memos/*}/tags:rename"
|
patch: "/api/v1/{parent=memos/*}/tags:rename"
|
||||||
body: "*"
|
body: "*"
|
||||||
};
|
};
|
||||||
|
option (google.api.method_signature) = "parent,old_tag,new_tag";
|
||||||
}
|
}
|
||||||
// DeleteMemoTag deletes a tag for a memo.
|
// DeleteMemoTag deletes a tag for a memo.
|
||||||
rpc DeleteMemoTag(DeleteMemoTagRequest) returns (google.protobuf.Empty) {
|
rpc DeleteMemoTag(DeleteMemoTagRequest) returns (google.protobuf.Empty) {
|
||||||
option (google.api.http) = {delete: "/api/v1/{parent=memos/*}/tags/{tag}"};
|
option (google.api.http) = {delete: "/api/v1/{parent=memos/*}/tags/{tag}"};
|
||||||
|
option (google.api.method_signature) = "parent,tag";
|
||||||
}
|
}
|
||||||
// SetMemoAttachments sets attachments for a memo.
|
// SetMemoAttachments sets attachments for a memo.
|
||||||
rpc SetMemoAttachments(SetMemoAttachmentsRequest) returns (google.protobuf.Empty) {
|
rpc SetMemoAttachments(SetMemoAttachmentsRequest) returns (google.protobuf.Empty) {
|
||||||
|
|
@ -91,7 +96,7 @@ service MemoService {
|
||||||
post: "/api/v1/{name=memos/*}/comments"
|
post: "/api/v1/{name=memos/*}/comments"
|
||||||
body: "comment"
|
body: "comment"
|
||||||
};
|
};
|
||||||
option (google.api.method_signature) = "name";
|
option (google.api.method_signature) = "name,comment";
|
||||||
}
|
}
|
||||||
// ListMemoComments lists comments for a memo.
|
// ListMemoComments lists comments for a memo.
|
||||||
rpc ListMemoComments(ListMemoCommentsRequest) returns (ListMemoCommentsResponse) {
|
rpc ListMemoComments(ListMemoCommentsRequest) returns (ListMemoCommentsResponse) {
|
||||||
|
|
@ -113,8 +118,8 @@ service MemoService {
|
||||||
}
|
}
|
||||||
// DeleteMemoReaction deletes a reaction for a memo.
|
// DeleteMemoReaction deletes a reaction for a memo.
|
||||||
rpc DeleteMemoReaction(DeleteMemoReactionRequest) returns (google.protobuf.Empty) {
|
rpc DeleteMemoReaction(DeleteMemoReactionRequest) returns (google.protobuf.Empty) {
|
||||||
option (google.api.http) = {delete: "/api/v1/reactions/{id}"};
|
option (google.api.http) = {delete: "/api/v1/{name=reactions/*}"};
|
||||||
option (google.api.method_signature) = "id";
|
option (google.api.method_signature) = "name";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -125,56 +130,122 @@ enum Visibility {
|
||||||
PUBLIC = 3;
|
PUBLIC = 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
message Memo {
|
message Reaction {
|
||||||
reserved 2;
|
option (google.api.resource) = {
|
||||||
|
type: "memos.api.v1/Reaction"
|
||||||
|
pattern: "reactions/{reaction}"
|
||||||
|
name_field: "name"
|
||||||
|
singular: "reaction"
|
||||||
|
plural: "reactions"
|
||||||
|
};
|
||||||
|
|
||||||
// The name of the memo.
|
// The resource name of the reaction.
|
||||||
// Format: memos/{memo}, memo is the user defined id or uuid.
|
// Format: reactions/{reaction}
|
||||||
string name = 1 [
|
string name = 1 [
|
||||||
(google.api.field_behavior) = OUTPUT_ONLY,
|
(google.api.field_behavior) = OUTPUT_ONLY,
|
||||||
(google.api.field_behavior) = IDENTIFIER
|
(google.api.field_behavior) = IDENTIFIER
|
||||||
];
|
];
|
||||||
|
|
||||||
State state = 3;
|
// Output only. The system generated unique identifier.
|
||||||
|
string uid = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
|
||||||
|
|
||||||
|
// The resource name of the creator.
|
||||||
|
// Format: users/{user}
|
||||||
|
string creator = 3 [
|
||||||
|
(google.api.field_behavior) = OUTPUT_ONLY,
|
||||||
|
(google.api.resource_reference) = {type: "memos.api.v1/User"}
|
||||||
|
];
|
||||||
|
|
||||||
|
// The resource name of the content.
|
||||||
|
// For memo reactions, this should be the memo's resource name.
|
||||||
|
// Format: memos/{memo}
|
||||||
|
string content_id = 4 [
|
||||||
|
(google.api.field_behavior) = REQUIRED,
|
||||||
|
(google.api.resource_reference) = {type: "memos.api.v1/Memo"}
|
||||||
|
];
|
||||||
|
|
||||||
|
// Required. The type of reaction (e.g., "👍", "❤️", "😄").
|
||||||
|
string reaction_type = 5 [(google.api.field_behavior) = REQUIRED];
|
||||||
|
|
||||||
|
// Output only. The creation timestamp.
|
||||||
|
google.protobuf.Timestamp create_time = 6 [(google.api.field_behavior) = OUTPUT_ONLY];
|
||||||
|
}
|
||||||
|
|
||||||
|
message Memo {
|
||||||
|
option (google.api.resource) = {
|
||||||
|
type: "memos.api.v1/Memo"
|
||||||
|
pattern: "memos/{memo}"
|
||||||
|
name_field: "name"
|
||||||
|
singular: "memo"
|
||||||
|
plural: "memos"
|
||||||
|
};
|
||||||
|
|
||||||
|
reserved 2;
|
||||||
|
|
||||||
|
// The resource name of the memo.
|
||||||
|
// Format: memos/{memo}, memo is the user defined id or uuid.
|
||||||
|
string name = 1 [(google.api.field_behavior) = IDENTIFIER];
|
||||||
|
|
||||||
|
// The state of the memo.
|
||||||
|
State state = 3 [(google.api.field_behavior) = REQUIRED];
|
||||||
|
|
||||||
// The name of the creator.
|
// The name of the creator.
|
||||||
// Format: users/{user}
|
// Format: users/{user}
|
||||||
string creator = 4;
|
string creator = 4 [
|
||||||
|
(google.api.field_behavior) = OUTPUT_ONLY,
|
||||||
|
(google.api.resource_reference) = {type: "memos.api.v1/User"}
|
||||||
|
];
|
||||||
|
|
||||||
google.protobuf.Timestamp create_time = 5;
|
// Output only. The creation timestamp.
|
||||||
|
google.protobuf.Timestamp create_time = 5 [(google.api.field_behavior) = OUTPUT_ONLY];
|
||||||
|
|
||||||
google.protobuf.Timestamp update_time = 6;
|
// Output only. The last update timestamp.
|
||||||
|
google.protobuf.Timestamp update_time = 6 [(google.api.field_behavior) = OUTPUT_ONLY];
|
||||||
|
|
||||||
google.protobuf.Timestamp display_time = 7;
|
// The display timestamp of the memo.
|
||||||
|
google.protobuf.Timestamp display_time = 7 [(google.api.field_behavior) = OPTIONAL];
|
||||||
|
|
||||||
string content = 8;
|
// Required. The content of the memo in Markdown format.
|
||||||
|
string content = 8 [(google.api.field_behavior) = REQUIRED];
|
||||||
|
|
||||||
|
// Output only. The parsed nodes from the content.
|
||||||
repeated Node nodes = 9 [(google.api.field_behavior) = OUTPUT_ONLY];
|
repeated Node nodes = 9 [(google.api.field_behavior) = OUTPUT_ONLY];
|
||||||
|
|
||||||
Visibility visibility = 10;
|
// The visibility of the memo.
|
||||||
|
Visibility visibility = 10 [(google.api.field_behavior) = REQUIRED];
|
||||||
|
|
||||||
|
// Output only. The tags extracted from the content.
|
||||||
repeated string tags = 11 [(google.api.field_behavior) = OUTPUT_ONLY];
|
repeated string tags = 11 [(google.api.field_behavior) = OUTPUT_ONLY];
|
||||||
|
|
||||||
bool pinned = 12;
|
// Whether the memo is pinned.
|
||||||
|
bool pinned = 12 [(google.api.field_behavior) = OPTIONAL];
|
||||||
|
|
||||||
repeated Attachment attachments = 14;
|
// Optional. The attachments of the memo.
|
||||||
|
repeated Attachment attachments = 14 [(google.api.field_behavior) = OPTIONAL];
|
||||||
|
|
||||||
repeated MemoRelation relations = 15;
|
// Optional. The relations of the memo.
|
||||||
|
repeated MemoRelation relations = 15 [(google.api.field_behavior) = OPTIONAL];
|
||||||
|
|
||||||
|
// Output only. The reactions to the memo.
|
||||||
repeated Reaction reactions = 16 [(google.api.field_behavior) = OUTPUT_ONLY];
|
repeated Reaction reactions = 16 [(google.api.field_behavior) = OUTPUT_ONLY];
|
||||||
|
|
||||||
|
// Output only. The computed properties of the memo.
|
||||||
Property property = 17 [(google.api.field_behavior) = OUTPUT_ONLY];
|
Property property = 17 [(google.api.field_behavior) = OUTPUT_ONLY];
|
||||||
|
|
||||||
// The name of the parent memo.
|
// Output only. The name of the parent memo.
|
||||||
// Format: memos/{id}
|
// Format: memos/{memo}
|
||||||
optional string parent = 18 [(google.api.field_behavior) = OUTPUT_ONLY];
|
optional string parent = 18 [
|
||||||
|
(google.api.field_behavior) = OUTPUT_ONLY,
|
||||||
|
(google.api.resource_reference) = {type: "memos.api.v1/Memo"}
|
||||||
|
];
|
||||||
|
|
||||||
// The snippet of the memo content. Plain text only.
|
// Output only. The snippet of the memo content. Plain text only.
|
||||||
string snippet = 19 [(google.api.field_behavior) = OUTPUT_ONLY];
|
string snippet = 19 [(google.api.field_behavior) = OUTPUT_ONLY];
|
||||||
|
|
||||||
// The location of the memo.
|
// Optional. The location of the memo.
|
||||||
optional Location location = 20;
|
optional Location location = 20 [(google.api.field_behavior) = OPTIONAL];
|
||||||
|
|
||||||
|
// Computed properties of a memo.
|
||||||
message Property {
|
message Property {
|
||||||
bool has_link = 1;
|
bool has_link = 1;
|
||||||
bool has_task_list = 2;
|
bool has_task_list = 2;
|
||||||
|
|
@ -184,43 +255,66 @@ message Memo {
|
||||||
}
|
}
|
||||||
|
|
||||||
message Location {
|
message Location {
|
||||||
string placeholder = 1;
|
// A placeholder text for the location.
|
||||||
double latitude = 2;
|
string placeholder = 1 [(google.api.field_behavior) = OPTIONAL];
|
||||||
double longitude = 3;
|
|
||||||
|
// The latitude of the location.
|
||||||
|
double latitude = 2 [(google.api.field_behavior) = OPTIONAL];
|
||||||
|
|
||||||
|
// The longitude of the location.
|
||||||
|
double longitude = 3 [(google.api.field_behavior) = OPTIONAL];
|
||||||
}
|
}
|
||||||
|
|
||||||
message CreateMemoRequest {
|
message CreateMemoRequest {
|
||||||
// The memo to create.
|
// Required. The memo to create.
|
||||||
Memo memo = 1 [(google.api.field_behavior) = REQUIRED];
|
Memo memo = 1 [(google.api.field_behavior) = REQUIRED];
|
||||||
|
|
||||||
|
// Optional. The memo ID to use for this memo.
|
||||||
|
// If empty, a unique ID will be generated.
|
||||||
|
string memo_id = 2 [(google.api.field_behavior) = OPTIONAL];
|
||||||
|
|
||||||
|
// Optional. If set, validate the request but don't actually create the memo.
|
||||||
|
bool validate_only = 3 [(google.api.field_behavior) = OPTIONAL];
|
||||||
|
|
||||||
|
// Optional. An idempotency token.
|
||||||
|
string request_id = 4 [(google.api.field_behavior) = OPTIONAL];
|
||||||
}
|
}
|
||||||
|
|
||||||
message ListMemosRequest {
|
message ListMemosRequest {
|
||||||
// The parent is the owner of the memos.
|
// Optional. The parent is the owner of the memos.
|
||||||
// If not specified or `users/-`, it will list all memos.
|
// If not specified or `users/-`, it will list all memos.
|
||||||
string parent = 1;
|
// Format: users/{user}
|
||||||
|
string parent = 1 [
|
||||||
|
(google.api.field_behavior) = OPTIONAL,
|
||||||
|
(google.api.resource_reference) = {type: "memos.api.v1/User"}
|
||||||
|
];
|
||||||
|
|
||||||
// The maximum number of memos to return.
|
// Optional. The maximum number of memos to return.
|
||||||
int32 page_size = 2;
|
// The service may return fewer than this value.
|
||||||
|
// If unspecified, at most 50 memos will be returned.
|
||||||
|
// The maximum value is 1000; values above 1000 will be coerced to 1000.
|
||||||
|
int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL];
|
||||||
|
|
||||||
// A page token, received from a previous `ListMemos` call.
|
// Optional. A page token, received from a previous `ListMemos` call.
|
||||||
// Provide this to retrieve the subsequent page.
|
// Provide this to retrieve the subsequent page.
|
||||||
string page_token = 3;
|
string page_token = 3 [(google.api.field_behavior) = OPTIONAL];
|
||||||
|
|
||||||
// The state of the memos to list.
|
// Optional. The state of the memos to list.
|
||||||
// Default to `NORMAL`. Set to `ARCHIVED` to list archived memos.
|
// Default to `NORMAL`. Set to `ARCHIVED` to list archived memos.
|
||||||
State state = 4;
|
State state = 4 [(google.api.field_behavior) = OPTIONAL];
|
||||||
|
|
||||||
// What field to sort the results by.
|
// Optional. The order to sort results by.
|
||||||
// Default to display_time.
|
// Default to "display_time desc".
|
||||||
string sort = 5;
|
// Example: "display_time desc" or "create_time asc"
|
||||||
|
string order_by = 5 [(google.api.field_behavior) = OPTIONAL];
|
||||||
// The direction to sort the results by.
|
|
||||||
// Default to DESC.
|
|
||||||
Direction direction = 6;
|
|
||||||
|
|
||||||
|
// Optional. Filter to apply to the list results.
|
||||||
// Filter is a CEL expression to filter memos.
|
// Filter is a CEL expression to filter memos.
|
||||||
// Refer to `Shortcut.filter`.
|
// Refer to `Shortcut.filter`.
|
||||||
string filter = 7;
|
string filter = 6 [(google.api.field_behavior) = OPTIONAL];
|
||||||
|
|
||||||
|
// Optional. If true, show deleted memos in the response.
|
||||||
|
bool show_deleted = 7 [(google.api.field_behavior) = OPTIONAL];
|
||||||
|
|
||||||
// [Deprecated] Old filter contains some specific conditions to filter memos.
|
// [Deprecated] Old filter contains some specific conditions to filter memos.
|
||||||
// Format: "creator == 'users/{user}' && visibilities == ['PUBLIC', 'PROTECTED']"
|
// Format: "creator == 'users/{user}' && visibilities == ['PUBLIC', 'PROTECTED']"
|
||||||
|
|
@ -228,136 +322,279 @@ message ListMemosRequest {
|
||||||
}
|
}
|
||||||
|
|
||||||
message ListMemosResponse {
|
message ListMemosResponse {
|
||||||
|
// The list of memos.
|
||||||
repeated Memo memos = 1;
|
repeated Memo memos = 1;
|
||||||
|
|
||||||
// A token, which can be sent as `page_token` to retrieve the next page.
|
// A token that can be sent as `page_token` to retrieve the next page.
|
||||||
// If this field is omitted, there are no subsequent pages.
|
// If this field is omitted, there are no subsequent pages.
|
||||||
string next_page_token = 2;
|
string next_page_token = 2;
|
||||||
|
|
||||||
|
// The total count of memos (may be approximate).
|
||||||
|
int32 total_size = 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
message GetMemoRequest {
|
message GetMemoRequest {
|
||||||
// The name of the memo.
|
// Required. The resource name of the memo.
|
||||||
string name = 1;
|
// Format: memos/{memo}
|
||||||
|
string name = 1 [
|
||||||
|
(google.api.field_behavior) = REQUIRED,
|
||||||
|
(google.api.resource_reference) = {type: "memos.api.v1/Memo"}
|
||||||
|
];
|
||||||
|
|
||||||
|
// Optional. The fields to return in the response.
|
||||||
|
// If not specified, all fields are returned.
|
||||||
|
google.protobuf.FieldMask read_mask = 2 [(google.api.field_behavior) = OPTIONAL];
|
||||||
}
|
}
|
||||||
|
|
||||||
message UpdateMemoRequest {
|
message UpdateMemoRequest {
|
||||||
// The memo to update.
|
// Required. The memo to update.
|
||||||
// The `name` field is required.
|
// The `name` field is required.
|
||||||
Memo memo = 1 [(google.api.field_behavior) = REQUIRED];
|
Memo memo = 1 [(google.api.field_behavior) = REQUIRED];
|
||||||
|
|
||||||
google.protobuf.FieldMask update_mask = 2;
|
// Required. The list of fields to update.
|
||||||
|
google.protobuf.FieldMask update_mask = 2 [(google.api.field_behavior) = REQUIRED];
|
||||||
|
|
||||||
|
// Optional. If set to true, allows updating sensitive fields.
|
||||||
|
bool allow_missing = 3 [(google.api.field_behavior) = OPTIONAL];
|
||||||
}
|
}
|
||||||
|
|
||||||
message DeleteMemoRequest {
|
message DeleteMemoRequest {
|
||||||
// The name of the memo.
|
// Required. The resource name of the memo to delete.
|
||||||
string name = 1;
|
// Format: memos/{memo}
|
||||||
|
string name = 1 [
|
||||||
|
(google.api.field_behavior) = REQUIRED,
|
||||||
|
(google.api.resource_reference) = {type: "memos.api.v1/Memo"}
|
||||||
|
];
|
||||||
|
|
||||||
|
// Optional. If set to true, the memo will be deleted even if it has associated data.
|
||||||
|
bool force = 2 [(google.api.field_behavior) = OPTIONAL];
|
||||||
}
|
}
|
||||||
|
|
||||||
message RenameMemoTagRequest {
|
message RenameMemoTagRequest {
|
||||||
// The parent, who owns the tags.
|
// Required. The parent, who owns the tags.
|
||||||
// Format: memos/{id}. Use "memos/-" to rename all tags.
|
// Format: memos/{memo}. Use "memos/-" to rename all tags.
|
||||||
string parent = 1;
|
string parent = 1 [
|
||||||
string old_tag = 2;
|
(google.api.field_behavior) = REQUIRED,
|
||||||
string new_tag = 3;
|
(google.api.resource_reference) = {type: "memos.api.v1/Memo"}
|
||||||
|
];
|
||||||
|
|
||||||
|
// Required. The old tag name to rename.
|
||||||
|
string old_tag = 2 [(google.api.field_behavior) = REQUIRED];
|
||||||
|
|
||||||
|
// Required. The new tag name.
|
||||||
|
string new_tag = 3 [(google.api.field_behavior) = REQUIRED];
|
||||||
}
|
}
|
||||||
|
|
||||||
message DeleteMemoTagRequest {
|
message DeleteMemoTagRequest {
|
||||||
// The parent, who owns the tags.
|
// Required. The parent, who owns the tags.
|
||||||
// Format: memos/{id}. Use "memos/-" to delete all tags.
|
// Format: memos/{memo}. Use "memos/-" to delete all tags.
|
||||||
string parent = 1;
|
string parent = 1 [
|
||||||
string tag = 2;
|
(google.api.field_behavior) = REQUIRED,
|
||||||
bool delete_related_memos = 3;
|
(google.api.resource_reference) = {type: "memos.api.v1/Memo"}
|
||||||
|
];
|
||||||
|
|
||||||
|
// Required. The tag name to delete.
|
||||||
|
string tag = 2 [(google.api.field_behavior) = REQUIRED];
|
||||||
|
|
||||||
|
// Optional. Whether to delete related memos.
|
||||||
|
bool delete_related_memos = 3 [(google.api.field_behavior) = OPTIONAL];
|
||||||
}
|
}
|
||||||
|
|
||||||
message SetMemoAttachmentsRequest {
|
message SetMemoAttachmentsRequest {
|
||||||
// The name of the memo.
|
// Required. The resource name of the memo.
|
||||||
string name = 1;
|
// Format: memos/{memo}
|
||||||
|
string name = 1 [
|
||||||
|
(google.api.field_behavior) = REQUIRED,
|
||||||
|
(google.api.resource_reference) = {type: "memos.api.v1/Memo"}
|
||||||
|
];
|
||||||
|
|
||||||
repeated Attachment attachments = 2;
|
// Required. The attachments to set for the memo.
|
||||||
|
repeated Attachment attachments = 2 [(google.api.field_behavior) = REQUIRED];
|
||||||
}
|
}
|
||||||
|
|
||||||
message ListMemoAttachmentsRequest {
|
message ListMemoAttachmentsRequest {
|
||||||
// The name of the memo.
|
// Required. The resource name of the memo.
|
||||||
string name = 1;
|
// Format: memos/{memo}
|
||||||
|
string name = 1 [
|
||||||
|
(google.api.field_behavior) = REQUIRED,
|
||||||
|
(google.api.resource_reference) = {type: "memos.api.v1/Memo"}
|
||||||
|
];
|
||||||
|
|
||||||
|
// Optional. The maximum number of attachments to return.
|
||||||
|
int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL];
|
||||||
|
|
||||||
|
// Optional. A page token for pagination.
|
||||||
|
string page_token = 3 [(google.api.field_behavior) = OPTIONAL];
|
||||||
}
|
}
|
||||||
|
|
||||||
message ListMemoAttachmentsResponse {
|
message ListMemoAttachmentsResponse {
|
||||||
|
// The list of attachments.
|
||||||
repeated Attachment attachments = 1;
|
repeated Attachment attachments = 1;
|
||||||
|
|
||||||
|
// A token for the next page of results.
|
||||||
|
string next_page_token = 2;
|
||||||
|
|
||||||
|
// The total count of attachments.
|
||||||
|
int32 total_size = 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
message MemoRelation {
|
message MemoRelation {
|
||||||
Memo memo = 1;
|
// The memo in the relation.
|
||||||
|
Memo memo = 1 [(google.api.field_behavior) = REQUIRED];
|
||||||
|
|
||||||
Memo related_memo = 2;
|
// The related memo.
|
||||||
|
Memo related_memo = 2 [(google.api.field_behavior) = REQUIRED];
|
||||||
|
|
||||||
|
// The type of the relation.
|
||||||
enum Type {
|
enum Type {
|
||||||
TYPE_UNSPECIFIED = 0;
|
TYPE_UNSPECIFIED = 0;
|
||||||
REFERENCE = 1;
|
REFERENCE = 1;
|
||||||
COMMENT = 2;
|
COMMENT = 2;
|
||||||
}
|
}
|
||||||
Type type = 3;
|
Type type = 3 [(google.api.field_behavior) = REQUIRED];
|
||||||
|
|
||||||
|
// Memo reference in relations.
|
||||||
message Memo {
|
message Memo {
|
||||||
// The name of the memo.
|
// The resource name of the memo.
|
||||||
// Format: memos/{id}
|
// Format: memos/{memo}
|
||||||
string name = 1;
|
string name = 1 [
|
||||||
string uid = 2;
|
(google.api.field_behavior) = REQUIRED,
|
||||||
// The snippet of the memo content. Plain text only.
|
(google.api.resource_reference) = {type: "memos.api.v1/Memo"}
|
||||||
|
];
|
||||||
|
|
||||||
|
// Output only. The unique identifier of the memo.
|
||||||
|
string uid = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
|
||||||
|
|
||||||
|
// Output only. The snippet of the memo content. Plain text only.
|
||||||
string snippet = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
|
string snippet = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
message SetMemoRelationsRequest {
|
message SetMemoRelationsRequest {
|
||||||
// The name of the memo.
|
// Required. The resource name of the memo.
|
||||||
string name = 1;
|
// Format: memos/{memo}
|
||||||
|
string name = 1 [
|
||||||
|
(google.api.field_behavior) = REQUIRED,
|
||||||
|
(google.api.resource_reference) = {type: "memos.api.v1/Memo"}
|
||||||
|
];
|
||||||
|
|
||||||
repeated MemoRelation relations = 2;
|
// Required. The relations to set for the memo.
|
||||||
|
repeated MemoRelation relations = 2 [(google.api.field_behavior) = REQUIRED];
|
||||||
}
|
}
|
||||||
|
|
||||||
message ListMemoRelationsRequest {
|
message ListMemoRelationsRequest {
|
||||||
// The name of the memo.
|
// Required. The resource name of the memo.
|
||||||
string name = 1;
|
// Format: memos/{memo}
|
||||||
|
string name = 1 [
|
||||||
|
(google.api.field_behavior) = REQUIRED,
|
||||||
|
(google.api.resource_reference) = {type: "memos.api.v1/Memo"}
|
||||||
|
];
|
||||||
|
|
||||||
|
// Optional. The maximum number of relations to return.
|
||||||
|
int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL];
|
||||||
|
|
||||||
|
// Optional. A page token for pagination.
|
||||||
|
string page_token = 3 [(google.api.field_behavior) = OPTIONAL];
|
||||||
}
|
}
|
||||||
|
|
||||||
message ListMemoRelationsResponse {
|
message ListMemoRelationsResponse {
|
||||||
|
// The list of relations.
|
||||||
repeated MemoRelation relations = 1;
|
repeated MemoRelation relations = 1;
|
||||||
|
|
||||||
|
// A token for the next page of results.
|
||||||
|
string next_page_token = 2;
|
||||||
|
|
||||||
|
// The total count of relations.
|
||||||
|
int32 total_size = 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
message CreateMemoCommentRequest {
|
message CreateMemoCommentRequest {
|
||||||
// The name of the memo.
|
// Required. The resource name of the memo.
|
||||||
string name = 1;
|
// Format: memos/{memo}
|
||||||
|
string name = 1 [
|
||||||
|
(google.api.field_behavior) = REQUIRED,
|
||||||
|
(google.api.resource_reference) = {type: "memos.api.v1/Memo"}
|
||||||
|
];
|
||||||
|
|
||||||
// The comment to create.
|
// Required. The comment to create.
|
||||||
Memo comment = 2;
|
Memo comment = 2 [(google.api.field_behavior) = REQUIRED];
|
||||||
|
|
||||||
|
// Optional. The comment ID to use.
|
||||||
|
string comment_id = 3 [(google.api.field_behavior) = OPTIONAL];
|
||||||
}
|
}
|
||||||
|
|
||||||
message ListMemoCommentsRequest {
|
message ListMemoCommentsRequest {
|
||||||
// The name of the memo.
|
// Required. The resource name of the memo.
|
||||||
string name = 1;
|
// Format: memos/{memo}
|
||||||
|
string name = 1 [
|
||||||
|
(google.api.field_behavior) = REQUIRED,
|
||||||
|
(google.api.resource_reference) = {type: "memos.api.v1/Memo"}
|
||||||
|
];
|
||||||
|
|
||||||
|
// Optional. The maximum number of comments to return.
|
||||||
|
int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL];
|
||||||
|
|
||||||
|
// Optional. A page token for pagination.
|
||||||
|
string page_token = 3 [(google.api.field_behavior) = OPTIONAL];
|
||||||
|
|
||||||
|
// Optional. The order to sort results by.
|
||||||
|
string order_by = 4 [(google.api.field_behavior) = OPTIONAL];
|
||||||
}
|
}
|
||||||
|
|
||||||
message ListMemoCommentsResponse {
|
message ListMemoCommentsResponse {
|
||||||
|
// The list of comment memos.
|
||||||
repeated Memo memos = 1;
|
repeated Memo memos = 1;
|
||||||
|
|
||||||
|
// A token for the next page of results.
|
||||||
|
string next_page_token = 2;
|
||||||
|
|
||||||
|
// The total count of comments.
|
||||||
|
int32 total_size = 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
message ListMemoReactionsRequest {
|
message ListMemoReactionsRequest {
|
||||||
// The name of the memo.
|
// Required. The resource name of the memo.
|
||||||
string name = 1;
|
// Format: memos/{memo}
|
||||||
|
string name = 1 [
|
||||||
|
(google.api.field_behavior) = REQUIRED,
|
||||||
|
(google.api.resource_reference) = {type: "memos.api.v1/Memo"}
|
||||||
|
];
|
||||||
|
|
||||||
|
// Optional. The maximum number of reactions to return.
|
||||||
|
int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL];
|
||||||
|
|
||||||
|
// Optional. A page token for pagination.
|
||||||
|
string page_token = 3 [(google.api.field_behavior) = OPTIONAL];
|
||||||
}
|
}
|
||||||
|
|
||||||
message ListMemoReactionsResponse {
|
message ListMemoReactionsResponse {
|
||||||
|
// The list of reactions.
|
||||||
repeated Reaction reactions = 1;
|
repeated Reaction reactions = 1;
|
||||||
|
|
||||||
|
// A token for the next page of results.
|
||||||
|
string next_page_token = 2;
|
||||||
|
|
||||||
|
// The total count of reactions.
|
||||||
|
int32 total_size = 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
message UpsertMemoReactionRequest {
|
message UpsertMemoReactionRequest {
|
||||||
// The name of the memo.
|
// Required. The resource name of the memo.
|
||||||
string name = 1;
|
// Format: memos/{memo}
|
||||||
|
string name = 1 [
|
||||||
|
(google.api.field_behavior) = REQUIRED,
|
||||||
|
(google.api.resource_reference) = {type: "memos.api.v1/Memo"}
|
||||||
|
];
|
||||||
|
|
||||||
Reaction reaction = 2;
|
// Required. The reaction to upsert.
|
||||||
|
Reaction reaction = 2 [(google.api.field_behavior) = REQUIRED];
|
||||||
}
|
}
|
||||||
|
|
||||||
message DeleteMemoReactionRequest {
|
message DeleteMemoReactionRequest {
|
||||||
// The id of the reaction.
|
// Required. The resource name of the reaction to delete.
|
||||||
// Refer to the `Reaction.id`.
|
// Format: reactions/{reaction}
|
||||||
int32 id = 1;
|
string name = 1 [
|
||||||
|
(google.api.field_behavior) = REQUIRED,
|
||||||
|
(google.api.resource_reference) = {type: "memos.api.v1/Reaction"}
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,19 +0,0 @@
|
||||||
syntax = "proto3";
|
|
||||||
|
|
||||||
package memos.api.v1;
|
|
||||||
|
|
||||||
option go_package = "gen/api/v1";
|
|
||||||
|
|
||||||
message Reaction {
|
|
||||||
int32 id = 1;
|
|
||||||
|
|
||||||
// The name of the creator.
|
|
||||||
// Format: users/{user}
|
|
||||||
string creator = 2;
|
|
||||||
|
|
||||||
// The content identifier.
|
|
||||||
// For memo, it should be the `Memo.name`.
|
|
||||||
string content_id = 3;
|
|
||||||
|
|
||||||
string reaction_type = 4;
|
|
||||||
}
|
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -35,6 +35,8 @@ var (
|
||||||
_ = metadata.Join
|
_ = metadata.Join
|
||||||
)
|
)
|
||||||
|
|
||||||
|
var filter_MemoService_CreateMemo_0 = &utilities.DoubleArray{Encoding: map[string]int{"memo": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}}
|
||||||
|
|
||||||
func request_MemoService_CreateMemo_0(ctx context.Context, marshaler runtime.Marshaler, client MemoServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
|
func request_MemoService_CreateMemo_0(ctx context.Context, marshaler runtime.Marshaler, client MemoServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
|
||||||
var (
|
var (
|
||||||
protoReq CreateMemoRequest
|
protoReq CreateMemoRequest
|
||||||
|
|
@ -43,6 +45,12 @@ func request_MemoService_CreateMemo_0(ctx context.Context, marshaler runtime.Mar
|
||||||
if err := marshaler.NewDecoder(req.Body).Decode(&protoReq.Memo); err != nil && !errors.Is(err, io.EOF) {
|
if err := marshaler.NewDecoder(req.Body).Decode(&protoReq.Memo); err != nil && !errors.Is(err, io.EOF) {
|
||||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||||
}
|
}
|
||||||
|
if err := req.ParseForm(); err != nil {
|
||||||
|
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||||
|
}
|
||||||
|
if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_MemoService_CreateMemo_0); err != nil {
|
||||||
|
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||||
|
}
|
||||||
msg, err := client.CreateMemo(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
|
msg, err := client.CreateMemo(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
|
||||||
return msg, metadata, err
|
return msg, metadata, err
|
||||||
}
|
}
|
||||||
|
|
@ -55,6 +63,12 @@ func local_request_MemoService_CreateMemo_0(ctx context.Context, marshaler runti
|
||||||
if err := marshaler.NewDecoder(req.Body).Decode(&protoReq.Memo); err != nil && !errors.Is(err, io.EOF) {
|
if err := marshaler.NewDecoder(req.Body).Decode(&protoReq.Memo); err != nil && !errors.Is(err, io.EOF) {
|
||||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||||
}
|
}
|
||||||
|
if err := req.ParseForm(); err != nil {
|
||||||
|
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||||
|
}
|
||||||
|
if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_MemoService_CreateMemo_0); err != nil {
|
||||||
|
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||||
|
}
|
||||||
msg, err := server.CreateMemo(ctx, &protoReq)
|
msg, err := server.CreateMemo(ctx, &protoReq)
|
||||||
return msg, metadata, err
|
return msg, metadata, err
|
||||||
}
|
}
|
||||||
|
|
@ -143,6 +157,8 @@ func local_request_MemoService_ListMemos_1(ctx context.Context, marshaler runtim
|
||||||
return msg, metadata, err
|
return msg, metadata, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var filter_MemoService_GetMemo_0 = &utilities.DoubleArray{Encoding: map[string]int{"name": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}}
|
||||||
|
|
||||||
func request_MemoService_GetMemo_0(ctx context.Context, marshaler runtime.Marshaler, client MemoServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
|
func request_MemoService_GetMemo_0(ctx context.Context, marshaler runtime.Marshaler, client MemoServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
|
||||||
var (
|
var (
|
||||||
protoReq GetMemoRequest
|
protoReq GetMemoRequest
|
||||||
|
|
@ -158,6 +174,12 @@ func request_MemoService_GetMemo_0(ctx context.Context, marshaler runtime.Marsha
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err)
|
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err)
|
||||||
}
|
}
|
||||||
|
if err := req.ParseForm(); err != nil {
|
||||||
|
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||||
|
}
|
||||||
|
if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_MemoService_GetMemo_0); err != nil {
|
||||||
|
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||||
|
}
|
||||||
msg, err := client.GetMemo(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
|
msg, err := client.GetMemo(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
|
||||||
return msg, metadata, err
|
return msg, metadata, err
|
||||||
}
|
}
|
||||||
|
|
@ -176,6 +198,12 @@ func local_request_MemoService_GetMemo_0(ctx context.Context, marshaler runtime.
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err)
|
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err)
|
||||||
}
|
}
|
||||||
|
if err := req.ParseForm(); err != nil {
|
||||||
|
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||||
|
}
|
||||||
|
if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_MemoService_GetMemo_0); err != nil {
|
||||||
|
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||||
|
}
|
||||||
msg, err := server.GetMemo(ctx, &protoReq)
|
msg, err := server.GetMemo(ctx, &protoReq)
|
||||||
return msg, metadata, err
|
return msg, metadata, err
|
||||||
}
|
}
|
||||||
|
|
@ -258,6 +286,8 @@ func local_request_MemoService_UpdateMemo_0(ctx context.Context, marshaler runti
|
||||||
return msg, metadata, err
|
return msg, metadata, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var filter_MemoService_DeleteMemo_0 = &utilities.DoubleArray{Encoding: map[string]int{"name": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}}
|
||||||
|
|
||||||
func request_MemoService_DeleteMemo_0(ctx context.Context, marshaler runtime.Marshaler, client MemoServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
|
func request_MemoService_DeleteMemo_0(ctx context.Context, marshaler runtime.Marshaler, client MemoServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
|
||||||
var (
|
var (
|
||||||
protoReq DeleteMemoRequest
|
protoReq DeleteMemoRequest
|
||||||
|
|
@ -273,6 +303,12 @@ func request_MemoService_DeleteMemo_0(ctx context.Context, marshaler runtime.Mar
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err)
|
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err)
|
||||||
}
|
}
|
||||||
|
if err := req.ParseForm(); err != nil {
|
||||||
|
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||||
|
}
|
||||||
|
if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_MemoService_DeleteMemo_0); err != nil {
|
||||||
|
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||||
|
}
|
||||||
msg, err := client.DeleteMemo(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
|
msg, err := client.DeleteMemo(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
|
||||||
return msg, metadata, err
|
return msg, metadata, err
|
||||||
}
|
}
|
||||||
|
|
@ -291,6 +327,12 @@ func local_request_MemoService_DeleteMemo_0(ctx context.Context, marshaler runti
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err)
|
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err)
|
||||||
}
|
}
|
||||||
|
if err := req.ParseForm(); err != nil {
|
||||||
|
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||||
|
}
|
||||||
|
if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_MemoService_DeleteMemo_0); err != nil {
|
||||||
|
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||||
|
}
|
||||||
msg, err := server.DeleteMemo(ctx, &protoReq)
|
msg, err := server.DeleteMemo(ctx, &protoReq)
|
||||||
return msg, metadata, err
|
return msg, metadata, err
|
||||||
}
|
}
|
||||||
|
|
@ -446,6 +488,8 @@ func local_request_MemoService_SetMemoAttachments_0(ctx context.Context, marshal
|
||||||
return msg, metadata, err
|
return msg, metadata, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var filter_MemoService_ListMemoAttachments_0 = &utilities.DoubleArray{Encoding: map[string]int{"name": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}}
|
||||||
|
|
||||||
func request_MemoService_ListMemoAttachments_0(ctx context.Context, marshaler runtime.Marshaler, client MemoServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
|
func request_MemoService_ListMemoAttachments_0(ctx context.Context, marshaler runtime.Marshaler, client MemoServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
|
||||||
var (
|
var (
|
||||||
protoReq ListMemoAttachmentsRequest
|
protoReq ListMemoAttachmentsRequest
|
||||||
|
|
@ -461,6 +505,12 @@ func request_MemoService_ListMemoAttachments_0(ctx context.Context, marshaler ru
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err)
|
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err)
|
||||||
}
|
}
|
||||||
|
if err := req.ParseForm(); err != nil {
|
||||||
|
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||||
|
}
|
||||||
|
if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_MemoService_ListMemoAttachments_0); err != nil {
|
||||||
|
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||||
|
}
|
||||||
msg, err := client.ListMemoAttachments(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
|
msg, err := client.ListMemoAttachments(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
|
||||||
return msg, metadata, err
|
return msg, metadata, err
|
||||||
}
|
}
|
||||||
|
|
@ -479,6 +529,12 @@ func local_request_MemoService_ListMemoAttachments_0(ctx context.Context, marsha
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err)
|
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err)
|
||||||
}
|
}
|
||||||
|
if err := req.ParseForm(); err != nil {
|
||||||
|
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||||
|
}
|
||||||
|
if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_MemoService_ListMemoAttachments_0); err != nil {
|
||||||
|
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||||
|
}
|
||||||
msg, err := server.ListMemoAttachments(ctx, &protoReq)
|
msg, err := server.ListMemoAttachments(ctx, &protoReq)
|
||||||
return msg, metadata, err
|
return msg, metadata, err
|
||||||
}
|
}
|
||||||
|
|
@ -525,6 +581,8 @@ func local_request_MemoService_SetMemoRelations_0(ctx context.Context, marshaler
|
||||||
return msg, metadata, err
|
return msg, metadata, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var filter_MemoService_ListMemoRelations_0 = &utilities.DoubleArray{Encoding: map[string]int{"name": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}}
|
||||||
|
|
||||||
func request_MemoService_ListMemoRelations_0(ctx context.Context, marshaler runtime.Marshaler, client MemoServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
|
func request_MemoService_ListMemoRelations_0(ctx context.Context, marshaler runtime.Marshaler, client MemoServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
|
||||||
var (
|
var (
|
||||||
protoReq ListMemoRelationsRequest
|
protoReq ListMemoRelationsRequest
|
||||||
|
|
@ -540,6 +598,12 @@ func request_MemoService_ListMemoRelations_0(ctx context.Context, marshaler runt
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err)
|
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err)
|
||||||
}
|
}
|
||||||
|
if err := req.ParseForm(); err != nil {
|
||||||
|
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||||
|
}
|
||||||
|
if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_MemoService_ListMemoRelations_0); err != nil {
|
||||||
|
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||||
|
}
|
||||||
msg, err := client.ListMemoRelations(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
|
msg, err := client.ListMemoRelations(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
|
||||||
return msg, metadata, err
|
return msg, metadata, err
|
||||||
}
|
}
|
||||||
|
|
@ -558,10 +622,18 @@ func local_request_MemoService_ListMemoRelations_0(ctx context.Context, marshale
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err)
|
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err)
|
||||||
}
|
}
|
||||||
|
if err := req.ParseForm(); err != nil {
|
||||||
|
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||||
|
}
|
||||||
|
if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_MemoService_ListMemoRelations_0); err != nil {
|
||||||
|
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||||
|
}
|
||||||
msg, err := server.ListMemoRelations(ctx, &protoReq)
|
msg, err := server.ListMemoRelations(ctx, &protoReq)
|
||||||
return msg, metadata, err
|
return msg, metadata, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var filter_MemoService_CreateMemoComment_0 = &utilities.DoubleArray{Encoding: map[string]int{"comment": 0, "name": 1}, Base: []int{1, 1, 2, 0, 0}, Check: []int{0, 1, 1, 2, 3}}
|
||||||
|
|
||||||
func request_MemoService_CreateMemoComment_0(ctx context.Context, marshaler runtime.Marshaler, client MemoServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
|
func request_MemoService_CreateMemoComment_0(ctx context.Context, marshaler runtime.Marshaler, client MemoServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
|
||||||
var (
|
var (
|
||||||
protoReq CreateMemoCommentRequest
|
protoReq CreateMemoCommentRequest
|
||||||
|
|
@ -579,6 +651,12 @@ func request_MemoService_CreateMemoComment_0(ctx context.Context, marshaler runt
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err)
|
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err)
|
||||||
}
|
}
|
||||||
|
if err := req.ParseForm(); err != nil {
|
||||||
|
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||||
|
}
|
||||||
|
if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_MemoService_CreateMemoComment_0); err != nil {
|
||||||
|
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||||
|
}
|
||||||
msg, err := client.CreateMemoComment(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
|
msg, err := client.CreateMemoComment(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
|
||||||
return msg, metadata, err
|
return msg, metadata, err
|
||||||
}
|
}
|
||||||
|
|
@ -600,10 +678,18 @@ func local_request_MemoService_CreateMemoComment_0(ctx context.Context, marshale
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err)
|
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err)
|
||||||
}
|
}
|
||||||
|
if err := req.ParseForm(); err != nil {
|
||||||
|
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||||
|
}
|
||||||
|
if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_MemoService_CreateMemoComment_0); err != nil {
|
||||||
|
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||||
|
}
|
||||||
msg, err := server.CreateMemoComment(ctx, &protoReq)
|
msg, err := server.CreateMemoComment(ctx, &protoReq)
|
||||||
return msg, metadata, err
|
return msg, metadata, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var filter_MemoService_ListMemoComments_0 = &utilities.DoubleArray{Encoding: map[string]int{"name": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}}
|
||||||
|
|
||||||
func request_MemoService_ListMemoComments_0(ctx context.Context, marshaler runtime.Marshaler, client MemoServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
|
func request_MemoService_ListMemoComments_0(ctx context.Context, marshaler runtime.Marshaler, client MemoServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
|
||||||
var (
|
var (
|
||||||
protoReq ListMemoCommentsRequest
|
protoReq ListMemoCommentsRequest
|
||||||
|
|
@ -619,6 +705,12 @@ func request_MemoService_ListMemoComments_0(ctx context.Context, marshaler runti
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err)
|
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err)
|
||||||
}
|
}
|
||||||
|
if err := req.ParseForm(); err != nil {
|
||||||
|
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||||
|
}
|
||||||
|
if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_MemoService_ListMemoComments_0); err != nil {
|
||||||
|
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||||
|
}
|
||||||
msg, err := client.ListMemoComments(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
|
msg, err := client.ListMemoComments(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
|
||||||
return msg, metadata, err
|
return msg, metadata, err
|
||||||
}
|
}
|
||||||
|
|
@ -637,10 +729,18 @@ func local_request_MemoService_ListMemoComments_0(ctx context.Context, marshaler
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err)
|
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err)
|
||||||
}
|
}
|
||||||
|
if err := req.ParseForm(); err != nil {
|
||||||
|
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||||
|
}
|
||||||
|
if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_MemoService_ListMemoComments_0); err != nil {
|
||||||
|
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||||
|
}
|
||||||
msg, err := server.ListMemoComments(ctx, &protoReq)
|
msg, err := server.ListMemoComments(ctx, &protoReq)
|
||||||
return msg, metadata, err
|
return msg, metadata, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var filter_MemoService_ListMemoReactions_0 = &utilities.DoubleArray{Encoding: map[string]int{"name": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}}
|
||||||
|
|
||||||
func request_MemoService_ListMemoReactions_0(ctx context.Context, marshaler runtime.Marshaler, client MemoServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
|
func request_MemoService_ListMemoReactions_0(ctx context.Context, marshaler runtime.Marshaler, client MemoServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
|
||||||
var (
|
var (
|
||||||
protoReq ListMemoReactionsRequest
|
protoReq ListMemoReactionsRequest
|
||||||
|
|
@ -656,6 +756,12 @@ func request_MemoService_ListMemoReactions_0(ctx context.Context, marshaler runt
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err)
|
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err)
|
||||||
}
|
}
|
||||||
|
if err := req.ParseForm(); err != nil {
|
||||||
|
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||||
|
}
|
||||||
|
if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_MemoService_ListMemoReactions_0); err != nil {
|
||||||
|
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||||
|
}
|
||||||
msg, err := client.ListMemoReactions(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
|
msg, err := client.ListMemoReactions(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
|
||||||
return msg, metadata, err
|
return msg, metadata, err
|
||||||
}
|
}
|
||||||
|
|
@ -674,6 +780,12 @@ func local_request_MemoService_ListMemoReactions_0(ctx context.Context, marshale
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err)
|
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err)
|
||||||
}
|
}
|
||||||
|
if err := req.ParseForm(); err != nil {
|
||||||
|
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||||
|
}
|
||||||
|
if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_MemoService_ListMemoReactions_0); err != nil {
|
||||||
|
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||||
|
}
|
||||||
msg, err := server.ListMemoReactions(ctx, &protoReq)
|
msg, err := server.ListMemoReactions(ctx, &protoReq)
|
||||||
return msg, metadata, err
|
return msg, metadata, err
|
||||||
}
|
}
|
||||||
|
|
@ -727,13 +839,13 @@ func request_MemoService_DeleteMemoReaction_0(ctx context.Context, marshaler run
|
||||||
err error
|
err error
|
||||||
)
|
)
|
||||||
io.Copy(io.Discard, req.Body)
|
io.Copy(io.Discard, req.Body)
|
||||||
val, ok := pathParams["id"]
|
val, ok := pathParams["name"]
|
||||||
if !ok {
|
if !ok {
|
||||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
|
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "name")
|
||||||
}
|
}
|
||||||
protoReq.Id, err = runtime.Int32(val)
|
protoReq.Name, err = runtime.String(val)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
|
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err)
|
||||||
}
|
}
|
||||||
msg, err := client.DeleteMemoReaction(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
|
msg, err := client.DeleteMemoReaction(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
|
||||||
return msg, metadata, err
|
return msg, metadata, err
|
||||||
|
|
@ -745,13 +857,13 @@ func local_request_MemoService_DeleteMemoReaction_0(ctx context.Context, marshal
|
||||||
metadata runtime.ServerMetadata
|
metadata runtime.ServerMetadata
|
||||||
err error
|
err error
|
||||||
)
|
)
|
||||||
val, ok := pathParams["id"]
|
val, ok := pathParams["name"]
|
||||||
if !ok {
|
if !ok {
|
||||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
|
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "name")
|
||||||
}
|
}
|
||||||
protoReq.Id, err = runtime.Int32(val)
|
protoReq.Name, err = runtime.String(val)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
|
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err)
|
||||||
}
|
}
|
||||||
msg, err := server.DeleteMemoReaction(ctx, &protoReq)
|
msg, err := server.DeleteMemoReaction(ctx, &protoReq)
|
||||||
return msg, metadata, err
|
return msg, metadata, err
|
||||||
|
|
@ -1089,7 +1201,7 @@ func RegisterMemoServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux
|
||||||
var stream runtime.ServerTransportStream
|
var stream runtime.ServerTransportStream
|
||||||
ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
|
ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
|
||||||
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
|
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
|
||||||
annotatedContext, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/memos.api.v1.MemoService/DeleteMemoReaction", runtime.WithHTTPPathPattern("/api/v1/reactions/{id}"))
|
annotatedContext, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/memos.api.v1.MemoService/DeleteMemoReaction", runtime.WithHTTPPathPattern("/api/v1/{name=reactions/*}"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||||
return
|
return
|
||||||
|
|
@ -1419,7 +1531,7 @@ func RegisterMemoServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux
|
||||||
ctx, cancel := context.WithCancel(req.Context())
|
ctx, cancel := context.WithCancel(req.Context())
|
||||||
defer cancel()
|
defer cancel()
|
||||||
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
|
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
|
||||||
annotatedContext, err := runtime.AnnotateContext(ctx, mux, req, "/memos.api.v1.MemoService/DeleteMemoReaction", runtime.WithHTTPPathPattern("/api/v1/reactions/{id}"))
|
annotatedContext, err := runtime.AnnotateContext(ctx, mux, req, "/memos.api.v1.MemoService/DeleteMemoReaction", runtime.WithHTTPPathPattern("/api/v1/{name=reactions/*}"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||||
return
|
return
|
||||||
|
|
@ -1452,7 +1564,7 @@ var (
|
||||||
pattern_MemoService_ListMemoComments_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 2, 5, 3, 2, 4}, []string{"api", "v1", "memos", "name", "comments"}, ""))
|
pattern_MemoService_ListMemoComments_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 2, 5, 3, 2, 4}, []string{"api", "v1", "memos", "name", "comments"}, ""))
|
||||||
pattern_MemoService_ListMemoReactions_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 2, 5, 3, 2, 4}, []string{"api", "v1", "memos", "name", "reactions"}, ""))
|
pattern_MemoService_ListMemoReactions_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 2, 5, 3, 2, 4}, []string{"api", "v1", "memos", "name", "reactions"}, ""))
|
||||||
pattern_MemoService_UpsertMemoReaction_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 2, 5, 3, 2, 4}, []string{"api", "v1", "memos", "name", "reactions"}, ""))
|
pattern_MemoService_UpsertMemoReaction_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 2, 5, 3, 2, 4}, []string{"api", "v1", "memos", "name", "reactions"}, ""))
|
||||||
pattern_MemoService_DeleteMemoReaction_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"api", "v1", "reactions", "id"}, ""))
|
pattern_MemoService_DeleteMemoReaction_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 2, 5, 3}, []string{"api", "v1", "reactions", "name"}, ""))
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
|
|
||||||
|
|
@ -1,155 +0,0 @@
|
||||||
// Code generated by protoc-gen-go. DO NOT EDIT.
|
|
||||||
// versions:
|
|
||||||
// protoc-gen-go v1.36.6
|
|
||||||
// protoc (unknown)
|
|
||||||
// source: api/v1/reaction_service.proto
|
|
||||||
|
|
||||||
package apiv1
|
|
||||||
|
|
||||||
import (
|
|
||||||
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
|
|
||||||
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
|
|
||||||
reflect "reflect"
|
|
||||||
sync "sync"
|
|
||||||
unsafe "unsafe"
|
|
||||||
)
|
|
||||||
|
|
||||||
const (
|
|
||||||
// Verify that this generated code is sufficiently up-to-date.
|
|
||||||
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
|
|
||||||
// Verify that runtime/protoimpl is sufficiently up-to-date.
|
|
||||||
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
|
|
||||||
)
|
|
||||||
|
|
||||||
type Reaction struct {
|
|
||||||
state protoimpl.MessageState `protogen:"open.v1"`
|
|
||||||
Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
|
|
||||||
// The name of the creator.
|
|
||||||
// Format: users/{user}
|
|
||||||
Creator string `protobuf:"bytes,2,opt,name=creator,proto3" json:"creator,omitempty"`
|
|
||||||
// The content identifier.
|
|
||||||
// For memo, it should be the `Memo.name`.
|
|
||||||
ContentId string `protobuf:"bytes,3,opt,name=content_id,json=contentId,proto3" json:"content_id,omitempty"`
|
|
||||||
ReactionType string `protobuf:"bytes,4,opt,name=reaction_type,json=reactionType,proto3" json:"reaction_type,omitempty"`
|
|
||||||
unknownFields protoimpl.UnknownFields
|
|
||||||
sizeCache protoimpl.SizeCache
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *Reaction) Reset() {
|
|
||||||
*x = Reaction{}
|
|
||||||
mi := &file_api_v1_reaction_service_proto_msgTypes[0]
|
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
||||||
ms.StoreMessageInfo(mi)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *Reaction) String() string {
|
|
||||||
return protoimpl.X.MessageStringOf(x)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (*Reaction) ProtoMessage() {}
|
|
||||||
|
|
||||||
func (x *Reaction) ProtoReflect() protoreflect.Message {
|
|
||||||
mi := &file_api_v1_reaction_service_proto_msgTypes[0]
|
|
||||||
if x != nil {
|
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
||||||
if ms.LoadMessageInfo() == nil {
|
|
||||||
ms.StoreMessageInfo(mi)
|
|
||||||
}
|
|
||||||
return ms
|
|
||||||
}
|
|
||||||
return mi.MessageOf(x)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Deprecated: Use Reaction.ProtoReflect.Descriptor instead.
|
|
||||||
func (*Reaction) Descriptor() ([]byte, []int) {
|
|
||||||
return file_api_v1_reaction_service_proto_rawDescGZIP(), []int{0}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *Reaction) GetId() int32 {
|
|
||||||
if x != nil {
|
|
||||||
return x.Id
|
|
||||||
}
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *Reaction) GetCreator() string {
|
|
||||||
if x != nil {
|
|
||||||
return x.Creator
|
|
||||||
}
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *Reaction) GetContentId() string {
|
|
||||||
if x != nil {
|
|
||||||
return x.ContentId
|
|
||||||
}
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *Reaction) GetReactionType() string {
|
|
||||||
if x != nil {
|
|
||||||
return x.ReactionType
|
|
||||||
}
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
|
|
||||||
var File_api_v1_reaction_service_proto protoreflect.FileDescriptor
|
|
||||||
|
|
||||||
const file_api_v1_reaction_service_proto_rawDesc = "" +
|
|
||||||
"\n" +
|
|
||||||
"\x1dapi/v1/reaction_service.proto\x12\fmemos.api.v1\"x\n" +
|
|
||||||
"\bReaction\x12\x0e\n" +
|
|
||||||
"\x02id\x18\x01 \x01(\x05R\x02id\x12\x18\n" +
|
|
||||||
"\acreator\x18\x02 \x01(\tR\acreator\x12\x1d\n" +
|
|
||||||
"\n" +
|
|
||||||
"content_id\x18\x03 \x01(\tR\tcontentId\x12#\n" +
|
|
||||||
"\rreaction_type\x18\x04 \x01(\tR\freactionTypeB\xac\x01\n" +
|
|
||||||
"\x10com.memos.api.v1B\x14ReactionServiceProtoP\x01Z0github.com/usememos/memos/proto/gen/api/v1;apiv1\xa2\x02\x03MAX\xaa\x02\fMemos.Api.V1\xca\x02\fMemos\\Api\\V1\xe2\x02\x18Memos\\Api\\V1\\GPBMetadata\xea\x02\x0eMemos::Api::V1b\x06proto3"
|
|
||||||
|
|
||||||
var (
|
|
||||||
file_api_v1_reaction_service_proto_rawDescOnce sync.Once
|
|
||||||
file_api_v1_reaction_service_proto_rawDescData []byte
|
|
||||||
)
|
|
||||||
|
|
||||||
func file_api_v1_reaction_service_proto_rawDescGZIP() []byte {
|
|
||||||
file_api_v1_reaction_service_proto_rawDescOnce.Do(func() {
|
|
||||||
file_api_v1_reaction_service_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_api_v1_reaction_service_proto_rawDesc), len(file_api_v1_reaction_service_proto_rawDesc)))
|
|
||||||
})
|
|
||||||
return file_api_v1_reaction_service_proto_rawDescData
|
|
||||||
}
|
|
||||||
|
|
||||||
var file_api_v1_reaction_service_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
|
|
||||||
var file_api_v1_reaction_service_proto_goTypes = []any{
|
|
||||||
(*Reaction)(nil), // 0: memos.api.v1.Reaction
|
|
||||||
}
|
|
||||||
var file_api_v1_reaction_service_proto_depIdxs = []int32{
|
|
||||||
0, // [0:0] is the sub-list for method output_type
|
|
||||||
0, // [0:0] is the sub-list for method input_type
|
|
||||||
0, // [0:0] is the sub-list for extension type_name
|
|
||||||
0, // [0:0] is the sub-list for extension extendee
|
|
||||||
0, // [0:0] is the sub-list for field type_name
|
|
||||||
}
|
|
||||||
|
|
||||||
func init() { file_api_v1_reaction_service_proto_init() }
|
|
||||||
func file_api_v1_reaction_service_proto_init() {
|
|
||||||
if File_api_v1_reaction_service_proto != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
type x struct{}
|
|
||||||
out := protoimpl.TypeBuilder{
|
|
||||||
File: protoimpl.DescBuilder{
|
|
||||||
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
|
||||||
RawDescriptor: unsafe.Slice(unsafe.StringData(file_api_v1_reaction_service_proto_rawDesc), len(file_api_v1_reaction_service_proto_rawDesc)),
|
|
||||||
NumEnums: 0,
|
|
||||||
NumMessages: 1,
|
|
||||||
NumExtensions: 0,
|
|
||||||
NumServices: 0,
|
|
||||||
},
|
|
||||||
GoTypes: file_api_v1_reaction_service_proto_goTypes,
|
|
||||||
DependencyIndexes: file_api_v1_reaction_service_proto_depIdxs,
|
|
||||||
MessageInfos: file_api_v1_reaction_service_proto_msgTypes,
|
|
||||||
}.Build()
|
|
||||||
File_api_v1_reaction_service_proto = out.File
|
|
||||||
file_api_v1_reaction_service_proto_goTypes = nil
|
|
||||||
file_api_v1_reaction_service_proto_depIdxs = nil
|
|
||||||
}
|
|
||||||
|
|
@ -391,27 +391,32 @@ paths:
|
||||||
parameters:
|
parameters:
|
||||||
- name: parent
|
- name: parent
|
||||||
description: |-
|
description: |-
|
||||||
The parent is the owner of the memos.
|
Optional. The parent is the owner of the memos.
|
||||||
If not specified or `users/-`, it will list all memos.
|
If not specified or `users/-`, it will list all memos.
|
||||||
|
Format: users/{user}
|
||||||
in: query
|
in: query
|
||||||
required: false
|
required: false
|
||||||
type: string
|
type: string
|
||||||
- name: pageSize
|
- name: pageSize
|
||||||
description: The maximum number of memos to return.
|
description: |-
|
||||||
|
Optional. The maximum number of memos to return.
|
||||||
|
The service may return fewer than this value.
|
||||||
|
If unspecified, at most 50 memos will be returned.
|
||||||
|
The maximum value is 1000; values above 1000 will be coerced to 1000.
|
||||||
in: query
|
in: query
|
||||||
required: false
|
required: false
|
||||||
type: integer
|
type: integer
|
||||||
format: int32
|
format: int32
|
||||||
- name: pageToken
|
- name: pageToken
|
||||||
description: |-
|
description: |-
|
||||||
A page token, received from a previous `ListMemos` call.
|
Optional. A page token, received from a previous `ListMemos` call.
|
||||||
Provide this to retrieve the subsequent page.
|
Provide this to retrieve the subsequent page.
|
||||||
in: query
|
in: query
|
||||||
required: false
|
required: false
|
||||||
type: string
|
type: string
|
||||||
- name: state
|
- name: state
|
||||||
description: |-
|
description: |-
|
||||||
The state of the memos to list.
|
Optional. The state of the memos to list.
|
||||||
Default to `NORMAL`. Set to `ARCHIVED` to list archived memos.
|
Default to `NORMAL`. Set to `ARCHIVED` to list archived memos.
|
||||||
in: query
|
in: query
|
||||||
required: false
|
required: false
|
||||||
|
|
@ -421,32 +426,27 @@ paths:
|
||||||
- NORMAL
|
- NORMAL
|
||||||
- ARCHIVED
|
- ARCHIVED
|
||||||
default: STATE_UNSPECIFIED
|
default: STATE_UNSPECIFIED
|
||||||
- name: sort
|
- name: orderBy
|
||||||
description: |-
|
description: |-
|
||||||
What field to sort the results by.
|
Optional. The order to sort results by.
|
||||||
Default to display_time.
|
Default to "display_time desc".
|
||||||
|
Example: "display_time desc" or "create_time asc"
|
||||||
in: query
|
in: query
|
||||||
required: false
|
required: false
|
||||||
type: string
|
type: string
|
||||||
- name: direction
|
|
||||||
description: |-
|
|
||||||
The direction to sort the results by.
|
|
||||||
Default to DESC.
|
|
||||||
in: query
|
|
||||||
required: false
|
|
||||||
type: string
|
|
||||||
enum:
|
|
||||||
- DIRECTION_UNSPECIFIED
|
|
||||||
- ASC
|
|
||||||
- DESC
|
|
||||||
default: DIRECTION_UNSPECIFIED
|
|
||||||
- name: filter
|
- name: filter
|
||||||
description: |-
|
description: |-
|
||||||
|
Optional. Filter to apply to the list results.
|
||||||
Filter is a CEL expression to filter memos.
|
Filter is a CEL expression to filter memos.
|
||||||
Refer to `Shortcut.filter`.
|
Refer to `Shortcut.filter`.
|
||||||
in: query
|
in: query
|
||||||
required: false
|
required: false
|
||||||
type: string
|
type: string
|
||||||
|
- name: showDeleted
|
||||||
|
description: Optional. If true, show deleted memos in the response.
|
||||||
|
in: query
|
||||||
|
required: false
|
||||||
|
type: boolean
|
||||||
- name: oldFilter
|
- name: oldFilter
|
||||||
description: |-
|
description: |-
|
||||||
[Deprecated] Old filter contains some specific conditions to filter memos.
|
[Deprecated] Old filter contains some specific conditions to filter memos.
|
||||||
|
|
@ -470,38 +470,30 @@ paths:
|
||||||
$ref: '#/definitions/googlerpcStatus'
|
$ref: '#/definitions/googlerpcStatus'
|
||||||
parameters:
|
parameters:
|
||||||
- name: memo
|
- name: memo
|
||||||
description: The memo to create.
|
description: Required. The memo to create.
|
||||||
in: body
|
in: body
|
||||||
required: true
|
required: true
|
||||||
schema:
|
schema:
|
||||||
$ref: '#/definitions/apiv1Memo'
|
$ref: '#/definitions/apiv1Memo'
|
||||||
required:
|
required:
|
||||||
- memo
|
- memo
|
||||||
tags:
|
- name: memoId
|
||||||
- MemoService
|
|
||||||
/api/v1/reactions/{id}:
|
|
||||||
delete:
|
|
||||||
summary: DeleteMemoReaction deletes a reaction for a memo.
|
|
||||||
operationId: MemoService_DeleteMemoReaction
|
|
||||||
responses:
|
|
||||||
"200":
|
|
||||||
description: A successful response.
|
|
||||||
schema:
|
|
||||||
type: object
|
|
||||||
properties: {}
|
|
||||||
default:
|
|
||||||
description: An unexpected error response.
|
|
||||||
schema:
|
|
||||||
$ref: '#/definitions/googlerpcStatus'
|
|
||||||
parameters:
|
|
||||||
- name: id
|
|
||||||
description: |-
|
description: |-
|
||||||
The id of the reaction.
|
Optional. The memo ID to use for this memo.
|
||||||
Refer to the `Reaction.id`.
|
If empty, a unique ID will be generated.
|
||||||
in: path
|
in: query
|
||||||
required: true
|
required: false
|
||||||
type: integer
|
type: string
|
||||||
format: int32
|
- name: validateOnly
|
||||||
|
description: Optional. If set, validate the request but don't actually create the memo.
|
||||||
|
in: query
|
||||||
|
required: false
|
||||||
|
type: boolean
|
||||||
|
- name: requestId
|
||||||
|
description: Optional. An idempotency token.
|
||||||
|
in: query
|
||||||
|
required: false
|
||||||
|
type: string
|
||||||
tags:
|
tags:
|
||||||
- MemoService
|
- MemoService
|
||||||
/api/v1/users:
|
/api/v1/users:
|
||||||
|
|
@ -972,7 +964,7 @@ paths:
|
||||||
parameters:
|
parameters:
|
||||||
- name: memo.name
|
- name: memo.name
|
||||||
description: |-
|
description: |-
|
||||||
The name of the memo.
|
The resource name of the memo.
|
||||||
Format: memos/{memo}, memo is the user defined id or uuid.
|
Format: memos/{memo}, memo is the user defined id or uuid.
|
||||||
in: path
|
in: path
|
||||||
required: true
|
required: true
|
||||||
|
|
@ -980,7 +972,7 @@ paths:
|
||||||
pattern: memos/[^/]+
|
pattern: memos/[^/]+
|
||||||
- name: memo
|
- name: memo
|
||||||
description: |-
|
description: |-
|
||||||
The memo to update.
|
Required. The memo to update.
|
||||||
The `name` field is required.
|
The `name` field is required.
|
||||||
in: body
|
in: body
|
||||||
required: true
|
required: true
|
||||||
|
|
@ -989,74 +981,98 @@ paths:
|
||||||
properties:
|
properties:
|
||||||
state:
|
state:
|
||||||
$ref: '#/definitions/v1State'
|
$ref: '#/definitions/v1State'
|
||||||
|
description: The state of the memo.
|
||||||
creator:
|
creator:
|
||||||
type: string
|
type: string
|
||||||
title: |-
|
title: |-
|
||||||
The name of the creator.
|
The name of the creator.
|
||||||
Format: users/{user}
|
Format: users/{user}
|
||||||
|
readOnly: true
|
||||||
createTime:
|
createTime:
|
||||||
type: string
|
type: string
|
||||||
format: date-time
|
format: date-time
|
||||||
|
description: Output only. The creation timestamp.
|
||||||
|
readOnly: true
|
||||||
updateTime:
|
updateTime:
|
||||||
type: string
|
type: string
|
||||||
format: date-time
|
format: date-time
|
||||||
|
description: Output only. The last update timestamp.
|
||||||
|
readOnly: true
|
||||||
displayTime:
|
displayTime:
|
||||||
type: string
|
type: string
|
||||||
format: date-time
|
format: date-time
|
||||||
|
description: The display timestamp of the memo.
|
||||||
content:
|
content:
|
||||||
type: string
|
type: string
|
||||||
|
description: Required. The content of the memo in Markdown format.
|
||||||
nodes:
|
nodes:
|
||||||
type: array
|
type: array
|
||||||
items:
|
items:
|
||||||
type: object
|
type: object
|
||||||
$ref: '#/definitions/v1Node'
|
$ref: '#/definitions/v1Node'
|
||||||
|
description: Output only. The parsed nodes from the content.
|
||||||
readOnly: true
|
readOnly: true
|
||||||
visibility:
|
visibility:
|
||||||
$ref: '#/definitions/v1Visibility'
|
$ref: '#/definitions/v1Visibility'
|
||||||
|
description: The visibility of the memo.
|
||||||
tags:
|
tags:
|
||||||
type: array
|
type: array
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
|
description: Output only. The tags extracted from the content.
|
||||||
readOnly: true
|
readOnly: true
|
||||||
pinned:
|
pinned:
|
||||||
type: boolean
|
type: boolean
|
||||||
|
description: Whether the memo is pinned.
|
||||||
attachments:
|
attachments:
|
||||||
type: array
|
type: array
|
||||||
items:
|
items:
|
||||||
type: object
|
type: object
|
||||||
$ref: '#/definitions/v1Attachment'
|
$ref: '#/definitions/v1Attachment'
|
||||||
|
description: Optional. The attachments of the memo.
|
||||||
relations:
|
relations:
|
||||||
type: array
|
type: array
|
||||||
items:
|
items:
|
||||||
type: object
|
type: object
|
||||||
$ref: '#/definitions/v1MemoRelation'
|
$ref: '#/definitions/v1MemoRelation'
|
||||||
|
description: Optional. The relations of the memo.
|
||||||
reactions:
|
reactions:
|
||||||
type: array
|
type: array
|
||||||
items:
|
items:
|
||||||
type: object
|
type: object
|
||||||
$ref: '#/definitions/v1Reaction'
|
$ref: '#/definitions/v1Reaction'
|
||||||
|
description: Output only. The reactions to the memo.
|
||||||
readOnly: true
|
readOnly: true
|
||||||
property:
|
property:
|
||||||
$ref: '#/definitions/v1MemoProperty'
|
$ref: '#/definitions/v1MemoProperty'
|
||||||
|
description: Output only. The computed properties of the memo.
|
||||||
readOnly: true
|
readOnly: true
|
||||||
parent:
|
parent:
|
||||||
type: string
|
type: string
|
||||||
title: |-
|
title: |-
|
||||||
The name of the parent memo.
|
Output only. The name of the parent memo.
|
||||||
Format: memos/{id}
|
Format: memos/{memo}
|
||||||
readOnly: true
|
readOnly: true
|
||||||
snippet:
|
snippet:
|
||||||
type: string
|
type: string
|
||||||
description: The snippet of the memo content. Plain text only.
|
description: Output only. The snippet of the memo content. Plain text only.
|
||||||
readOnly: true
|
readOnly: true
|
||||||
location:
|
location:
|
||||||
$ref: '#/definitions/apiv1Location'
|
$ref: '#/definitions/apiv1Location'
|
||||||
description: The location of the memo.
|
description: Optional. The location of the memo.
|
||||||
title: |-
|
title: |-
|
||||||
The memo to update.
|
Required. The memo to update.
|
||||||
The `name` field is required.
|
The `name` field is required.
|
||||||
required:
|
required:
|
||||||
|
- state
|
||||||
|
- content
|
||||||
|
- visibility
|
||||||
- memo
|
- memo
|
||||||
|
- name: allowMissing
|
||||||
|
description: Optional. If set to true, allows updating sensitive fields.
|
||||||
|
in: query
|
||||||
|
required: false
|
||||||
|
type: boolean
|
||||||
tags:
|
tags:
|
||||||
- MemoService
|
- MemoService
|
||||||
/api/v1/{name_1}:
|
/api/v1/{name_1}:
|
||||||
|
|
@ -1230,11 +1246,20 @@ paths:
|
||||||
$ref: '#/definitions/googlerpcStatus'
|
$ref: '#/definitions/googlerpcStatus'
|
||||||
parameters:
|
parameters:
|
||||||
- name: name_4
|
- name: name_4
|
||||||
description: The name of the memo.
|
description: |-
|
||||||
|
Required. The resource name of the memo.
|
||||||
|
Format: memos/{memo}
|
||||||
in: path
|
in: path
|
||||||
required: true
|
required: true
|
||||||
type: string
|
type: string
|
||||||
pattern: memos/[^/]+
|
pattern: memos/[^/]+
|
||||||
|
- name: readMask
|
||||||
|
description: |-
|
||||||
|
Optional. The fields to return in the response.
|
||||||
|
If not specified, all fields are returned.
|
||||||
|
in: query
|
||||||
|
required: false
|
||||||
|
type: string
|
||||||
tags:
|
tags:
|
||||||
- MemoService
|
- MemoService
|
||||||
delete:
|
delete:
|
||||||
|
|
@ -1300,11 +1325,18 @@ paths:
|
||||||
$ref: '#/definitions/googlerpcStatus'
|
$ref: '#/definitions/googlerpcStatus'
|
||||||
parameters:
|
parameters:
|
||||||
- name: name_5
|
- name: name_5
|
||||||
description: The name of the memo.
|
description: |-
|
||||||
|
Required. The resource name of the memo to delete.
|
||||||
|
Format: memos/{memo}
|
||||||
in: path
|
in: path
|
||||||
required: true
|
required: true
|
||||||
type: string
|
type: string
|
||||||
pattern: memos/[^/]+
|
pattern: memos/[^/]+
|
||||||
|
- name: force
|
||||||
|
description: Optional. If set to true, the memo will be deleted even if it has associated data.
|
||||||
|
in: query
|
||||||
|
required: false
|
||||||
|
type: boolean
|
||||||
tags:
|
tags:
|
||||||
- MemoService
|
- MemoService
|
||||||
/api/v1/{name_6}:
|
/api/v1/{name_6}:
|
||||||
|
|
@ -1339,8 +1371,8 @@ paths:
|
||||||
tags:
|
tags:
|
||||||
- WebhookService
|
- WebhookService
|
||||||
delete:
|
delete:
|
||||||
summary: DeleteShortcut deletes a shortcut for a user.
|
summary: DeleteMemoReaction deletes a reaction for a memo.
|
||||||
operationId: ShortcutService_DeleteShortcut
|
operationId: MemoService_DeleteMemoReaction
|
||||||
responses:
|
responses:
|
||||||
"200":
|
"200":
|
||||||
description: A successful response.
|
description: A successful response.
|
||||||
|
|
@ -1354,14 +1386,14 @@ paths:
|
||||||
parameters:
|
parameters:
|
||||||
- name: name_6
|
- name: name_6
|
||||||
description: |-
|
description: |-
|
||||||
Required. The resource name of the shortcut to delete.
|
Required. The resource name of the reaction to delete.
|
||||||
Format: users/{user}/shortcuts/{shortcut}
|
Format: reactions/{reaction}
|
||||||
in: path
|
in: path
|
||||||
required: true
|
required: true
|
||||||
type: string
|
type: string
|
||||||
pattern: users/[^/]+/shortcuts/[^/]+
|
pattern: reactions/[^/]+
|
||||||
tags:
|
tags:
|
||||||
- ShortcutService
|
- MemoService
|
||||||
/api/v1/{name_7}:
|
/api/v1/{name_7}:
|
||||||
get:
|
get:
|
||||||
summary: Gets a workspace setting.
|
summary: Gets a workspace setting.
|
||||||
|
|
@ -1386,6 +1418,31 @@ paths:
|
||||||
pattern: workspace/settings/[^/]+
|
pattern: workspace/settings/[^/]+
|
||||||
tags:
|
tags:
|
||||||
- WorkspaceService
|
- WorkspaceService
|
||||||
|
delete:
|
||||||
|
summary: DeleteShortcut deletes a shortcut for a user.
|
||||||
|
operationId: ShortcutService_DeleteShortcut
|
||||||
|
responses:
|
||||||
|
"200":
|
||||||
|
description: A successful response.
|
||||||
|
schema:
|
||||||
|
type: object
|
||||||
|
properties: {}
|
||||||
|
default:
|
||||||
|
description: An unexpected error response.
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/googlerpcStatus'
|
||||||
|
parameters:
|
||||||
|
- name: name_7
|
||||||
|
description: |-
|
||||||
|
Required. The resource name of the shortcut to delete.
|
||||||
|
Format: users/{user}/shortcuts/{shortcut}
|
||||||
|
in: path
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
pattern: users/[^/]+/shortcuts/[^/]+
|
||||||
|
tags:
|
||||||
|
- ShortcutService
|
||||||
|
/api/v1/{name_8}:
|
||||||
delete:
|
delete:
|
||||||
summary: DeleteWebhook deletes a webhook.
|
summary: DeleteWebhook deletes a webhook.
|
||||||
operationId: WebhookService_DeleteWebhook
|
operationId: WebhookService_DeleteWebhook
|
||||||
|
|
@ -1400,7 +1457,7 @@ paths:
|
||||||
schema:
|
schema:
|
||||||
$ref: '#/definitions/googlerpcStatus'
|
$ref: '#/definitions/googlerpcStatus'
|
||||||
parameters:
|
parameters:
|
||||||
- name: name_7
|
- name: name_8
|
||||||
description: |-
|
description: |-
|
||||||
Required. The resource name of the webhook to delete.
|
Required. The resource name of the webhook to delete.
|
||||||
Format: webhooks/{webhook}
|
Format: webhooks/{webhook}
|
||||||
|
|
@ -1478,11 +1535,24 @@ paths:
|
||||||
$ref: '#/definitions/googlerpcStatus'
|
$ref: '#/definitions/googlerpcStatus'
|
||||||
parameters:
|
parameters:
|
||||||
- name: name
|
- name: name
|
||||||
description: The name of the memo.
|
description: |-
|
||||||
|
Required. The resource name of the memo.
|
||||||
|
Format: memos/{memo}
|
||||||
in: path
|
in: path
|
||||||
required: true
|
required: true
|
||||||
type: string
|
type: string
|
||||||
pattern: memos/[^/]+
|
pattern: memos/[^/]+
|
||||||
|
- name: pageSize
|
||||||
|
description: Optional. The maximum number of attachments to return.
|
||||||
|
in: query
|
||||||
|
required: false
|
||||||
|
type: integer
|
||||||
|
format: int32
|
||||||
|
- name: pageToken
|
||||||
|
description: Optional. A page token for pagination.
|
||||||
|
in: query
|
||||||
|
required: false
|
||||||
|
type: string
|
||||||
tags:
|
tags:
|
||||||
- MemoService
|
- MemoService
|
||||||
patch:
|
patch:
|
||||||
|
|
@ -1500,7 +1570,9 @@ paths:
|
||||||
$ref: '#/definitions/googlerpcStatus'
|
$ref: '#/definitions/googlerpcStatus'
|
||||||
parameters:
|
parameters:
|
||||||
- name: name
|
- name: name
|
||||||
description: The name of the memo.
|
description: |-
|
||||||
|
Required. The resource name of the memo.
|
||||||
|
Format: memos/{memo}
|
||||||
in: path
|
in: path
|
||||||
required: true
|
required: true
|
||||||
type: string
|
type: string
|
||||||
|
|
@ -1551,11 +1623,29 @@ paths:
|
||||||
$ref: '#/definitions/googlerpcStatus'
|
$ref: '#/definitions/googlerpcStatus'
|
||||||
parameters:
|
parameters:
|
||||||
- name: name
|
- name: name
|
||||||
description: The name of the memo.
|
description: |-
|
||||||
|
Required. The resource name of the memo.
|
||||||
|
Format: memos/{memo}
|
||||||
in: path
|
in: path
|
||||||
required: true
|
required: true
|
||||||
type: string
|
type: string
|
||||||
pattern: memos/[^/]+
|
pattern: memos/[^/]+
|
||||||
|
- name: pageSize
|
||||||
|
description: Optional. The maximum number of comments to return.
|
||||||
|
in: query
|
||||||
|
required: false
|
||||||
|
type: integer
|
||||||
|
format: int32
|
||||||
|
- name: pageToken
|
||||||
|
description: Optional. A page token for pagination.
|
||||||
|
in: query
|
||||||
|
required: false
|
||||||
|
type: string
|
||||||
|
- name: orderBy
|
||||||
|
description: Optional. The order to sort results by.
|
||||||
|
in: query
|
||||||
|
required: false
|
||||||
|
type: string
|
||||||
tags:
|
tags:
|
||||||
- MemoService
|
- MemoService
|
||||||
post:
|
post:
|
||||||
|
|
@ -1572,17 +1662,26 @@ paths:
|
||||||
$ref: '#/definitions/googlerpcStatus'
|
$ref: '#/definitions/googlerpcStatus'
|
||||||
parameters:
|
parameters:
|
||||||
- name: name
|
- name: name
|
||||||
description: The name of the memo.
|
description: |-
|
||||||
|
Required. The resource name of the memo.
|
||||||
|
Format: memos/{memo}
|
||||||
in: path
|
in: path
|
||||||
required: true
|
required: true
|
||||||
type: string
|
type: string
|
||||||
pattern: memos/[^/]+
|
pattern: memos/[^/]+
|
||||||
- name: comment
|
- name: comment
|
||||||
description: The comment to create.
|
description: Required. The comment to create.
|
||||||
in: body
|
in: body
|
||||||
required: true
|
required: true
|
||||||
schema:
|
schema:
|
||||||
$ref: '#/definitions/apiv1Memo'
|
$ref: '#/definitions/apiv1Memo'
|
||||||
|
required:
|
||||||
|
- comment
|
||||||
|
- name: commentId
|
||||||
|
description: Optional. The comment ID to use.
|
||||||
|
in: query
|
||||||
|
required: false
|
||||||
|
type: string
|
||||||
tags:
|
tags:
|
||||||
- MemoService
|
- MemoService
|
||||||
/api/v1/{name}/reactions:
|
/api/v1/{name}/reactions:
|
||||||
|
|
@ -1600,11 +1699,24 @@ paths:
|
||||||
$ref: '#/definitions/googlerpcStatus'
|
$ref: '#/definitions/googlerpcStatus'
|
||||||
parameters:
|
parameters:
|
||||||
- name: name
|
- name: name
|
||||||
description: The name of the memo.
|
description: |-
|
||||||
|
Required. The resource name of the memo.
|
||||||
|
Format: memos/{memo}
|
||||||
in: path
|
in: path
|
||||||
required: true
|
required: true
|
||||||
type: string
|
type: string
|
||||||
pattern: memos/[^/]+
|
pattern: memos/[^/]+
|
||||||
|
- name: pageSize
|
||||||
|
description: Optional. The maximum number of reactions to return.
|
||||||
|
in: query
|
||||||
|
required: false
|
||||||
|
type: integer
|
||||||
|
format: int32
|
||||||
|
- name: pageToken
|
||||||
|
description: Optional. A page token for pagination.
|
||||||
|
in: query
|
||||||
|
required: false
|
||||||
|
type: string
|
||||||
tags:
|
tags:
|
||||||
- MemoService
|
- MemoService
|
||||||
post:
|
post:
|
||||||
|
|
@ -1621,7 +1733,9 @@ paths:
|
||||||
$ref: '#/definitions/googlerpcStatus'
|
$ref: '#/definitions/googlerpcStatus'
|
||||||
parameters:
|
parameters:
|
||||||
- name: name
|
- name: name
|
||||||
description: The name of the memo.
|
description: |-
|
||||||
|
Required. The resource name of the memo.
|
||||||
|
Format: memos/{memo}
|
||||||
in: path
|
in: path
|
||||||
required: true
|
required: true
|
||||||
type: string
|
type: string
|
||||||
|
|
@ -1648,11 +1762,24 @@ paths:
|
||||||
$ref: '#/definitions/googlerpcStatus'
|
$ref: '#/definitions/googlerpcStatus'
|
||||||
parameters:
|
parameters:
|
||||||
- name: name
|
- name: name
|
||||||
description: The name of the memo.
|
description: |-
|
||||||
|
Required. The resource name of the memo.
|
||||||
|
Format: memos/{memo}
|
||||||
in: path
|
in: path
|
||||||
required: true
|
required: true
|
||||||
type: string
|
type: string
|
||||||
pattern: memos/[^/]+
|
pattern: memos/[^/]+
|
||||||
|
- name: pageSize
|
||||||
|
description: Optional. The maximum number of relations to return.
|
||||||
|
in: query
|
||||||
|
required: false
|
||||||
|
type: integer
|
||||||
|
format: int32
|
||||||
|
- name: pageToken
|
||||||
|
description: Optional. A page token for pagination.
|
||||||
|
in: query
|
||||||
|
required: false
|
||||||
|
type: string
|
||||||
tags:
|
tags:
|
||||||
- MemoService
|
- MemoService
|
||||||
patch:
|
patch:
|
||||||
|
|
@ -1670,7 +1797,9 @@ paths:
|
||||||
$ref: '#/definitions/googlerpcStatus'
|
$ref: '#/definitions/googlerpcStatus'
|
||||||
parameters:
|
parameters:
|
||||||
- name: name
|
- name: name
|
||||||
description: The name of the memo.
|
description: |-
|
||||||
|
Required. The resource name of the memo.
|
||||||
|
Format: memos/{memo}
|
||||||
in: path
|
in: path
|
||||||
required: true
|
required: true
|
||||||
type: string
|
type: string
|
||||||
|
|
@ -1874,28 +2003,33 @@ paths:
|
||||||
parameters:
|
parameters:
|
||||||
- name: parent
|
- name: parent
|
||||||
description: |-
|
description: |-
|
||||||
The parent is the owner of the memos.
|
Optional. The parent is the owner of the memos.
|
||||||
If not specified or `users/-`, it will list all memos.
|
If not specified or `users/-`, it will list all memos.
|
||||||
|
Format: users/{user}
|
||||||
in: path
|
in: path
|
||||||
required: true
|
required: true
|
||||||
type: string
|
type: string
|
||||||
pattern: users/[^/]+
|
pattern: users/[^/]+
|
||||||
- name: pageSize
|
- name: pageSize
|
||||||
description: The maximum number of memos to return.
|
description: |-
|
||||||
|
Optional. The maximum number of memos to return.
|
||||||
|
The service may return fewer than this value.
|
||||||
|
If unspecified, at most 50 memos will be returned.
|
||||||
|
The maximum value is 1000; values above 1000 will be coerced to 1000.
|
||||||
in: query
|
in: query
|
||||||
required: false
|
required: false
|
||||||
type: integer
|
type: integer
|
||||||
format: int32
|
format: int32
|
||||||
- name: pageToken
|
- name: pageToken
|
||||||
description: |-
|
description: |-
|
||||||
A page token, received from a previous `ListMemos` call.
|
Optional. A page token, received from a previous `ListMemos` call.
|
||||||
Provide this to retrieve the subsequent page.
|
Provide this to retrieve the subsequent page.
|
||||||
in: query
|
in: query
|
||||||
required: false
|
required: false
|
||||||
type: string
|
type: string
|
||||||
- name: state
|
- name: state
|
||||||
description: |-
|
description: |-
|
||||||
The state of the memos to list.
|
Optional. The state of the memos to list.
|
||||||
Default to `NORMAL`. Set to `ARCHIVED` to list archived memos.
|
Default to `NORMAL`. Set to `ARCHIVED` to list archived memos.
|
||||||
in: query
|
in: query
|
||||||
required: false
|
required: false
|
||||||
|
|
@ -1905,32 +2039,27 @@ paths:
|
||||||
- NORMAL
|
- NORMAL
|
||||||
- ARCHIVED
|
- ARCHIVED
|
||||||
default: STATE_UNSPECIFIED
|
default: STATE_UNSPECIFIED
|
||||||
- name: sort
|
- name: orderBy
|
||||||
description: |-
|
description: |-
|
||||||
What field to sort the results by.
|
Optional. The order to sort results by.
|
||||||
Default to display_time.
|
Default to "display_time desc".
|
||||||
|
Example: "display_time desc" or "create_time asc"
|
||||||
in: query
|
in: query
|
||||||
required: false
|
required: false
|
||||||
type: string
|
type: string
|
||||||
- name: direction
|
|
||||||
description: |-
|
|
||||||
The direction to sort the results by.
|
|
||||||
Default to DESC.
|
|
||||||
in: query
|
|
||||||
required: false
|
|
||||||
type: string
|
|
||||||
enum:
|
|
||||||
- DIRECTION_UNSPECIFIED
|
|
||||||
- ASC
|
|
||||||
- DESC
|
|
||||||
default: DIRECTION_UNSPECIFIED
|
|
||||||
- name: filter
|
- name: filter
|
||||||
description: |-
|
description: |-
|
||||||
|
Optional. Filter to apply to the list results.
|
||||||
Filter is a CEL expression to filter memos.
|
Filter is a CEL expression to filter memos.
|
||||||
Refer to `Shortcut.filter`.
|
Refer to `Shortcut.filter`.
|
||||||
in: query
|
in: query
|
||||||
required: false
|
required: false
|
||||||
type: string
|
type: string
|
||||||
|
- name: showDeleted
|
||||||
|
description: Optional. If true, show deleted memos in the response.
|
||||||
|
in: query
|
||||||
|
required: false
|
||||||
|
type: boolean
|
||||||
- name: oldFilter
|
- name: oldFilter
|
||||||
description: |-
|
description: |-
|
||||||
[Deprecated] Old filter contains some specific conditions to filter memos.
|
[Deprecated] Old filter contains some specific conditions to filter memos.
|
||||||
|
|
@ -2028,17 +2157,19 @@ paths:
|
||||||
parameters:
|
parameters:
|
||||||
- name: parent
|
- name: parent
|
||||||
description: |-
|
description: |-
|
||||||
The parent, who owns the tags.
|
Required. The parent, who owns the tags.
|
||||||
Format: memos/{id}. Use "memos/-" to delete all tags.
|
Format: memos/{memo}. Use "memos/-" to delete all tags.
|
||||||
in: path
|
in: path
|
||||||
required: true
|
required: true
|
||||||
type: string
|
type: string
|
||||||
pattern: memos/[^/]+
|
pattern: memos/[^/]+
|
||||||
- name: tag
|
- name: tag
|
||||||
|
description: Required. The tag name to delete.
|
||||||
in: path
|
in: path
|
||||||
required: true
|
required: true
|
||||||
type: string
|
type: string
|
||||||
- name: deleteRelatedMemos
|
- name: deleteRelatedMemos
|
||||||
|
description: Optional. Whether to delete related memos.
|
||||||
in: query
|
in: query
|
||||||
required: false
|
required: false
|
||||||
type: boolean
|
type: boolean
|
||||||
|
|
@ -2061,8 +2192,8 @@ paths:
|
||||||
parameters:
|
parameters:
|
||||||
- name: parent
|
- name: parent
|
||||||
description: |-
|
description: |-
|
||||||
The parent, who owns the tags.
|
Required. The parent, who owns the tags.
|
||||||
Format: memos/{id}. Use "memos/-" to rename all tags.
|
Format: memos/{memo}. Use "memos/-" to rename all tags.
|
||||||
in: path
|
in: path
|
||||||
required: true
|
required: true
|
||||||
type: string
|
type: string
|
||||||
|
|
@ -2420,8 +2551,13 @@ definitions:
|
||||||
properties:
|
properties:
|
||||||
oldTag:
|
oldTag:
|
||||||
type: string
|
type: string
|
||||||
|
description: Required. The old tag name to rename.
|
||||||
newTag:
|
newTag:
|
||||||
type: string
|
type: string
|
||||||
|
description: Required. The new tag name.
|
||||||
|
required:
|
||||||
|
- oldTag
|
||||||
|
- newTag
|
||||||
MemoServiceSetMemoAttachmentsBody:
|
MemoServiceSetMemoAttachmentsBody:
|
||||||
type: object
|
type: object
|
||||||
properties:
|
properties:
|
||||||
|
|
@ -2430,6 +2566,9 @@ definitions:
|
||||||
items:
|
items:
|
||||||
type: object
|
type: object
|
||||||
$ref: '#/definitions/v1Attachment'
|
$ref: '#/definitions/v1Attachment'
|
||||||
|
description: Required. The attachments to set for the memo.
|
||||||
|
required:
|
||||||
|
- attachments
|
||||||
MemoServiceSetMemoRelationsBody:
|
MemoServiceSetMemoRelationsBody:
|
||||||
type: object
|
type: object
|
||||||
properties:
|
properties:
|
||||||
|
|
@ -2438,11 +2577,17 @@ definitions:
|
||||||
items:
|
items:
|
||||||
type: object
|
type: object
|
||||||
$ref: '#/definitions/v1MemoRelation'
|
$ref: '#/definitions/v1MemoRelation'
|
||||||
|
description: Required. The relations to set for the memo.
|
||||||
|
required:
|
||||||
|
- relations
|
||||||
MemoServiceUpsertMemoReactionBody:
|
MemoServiceUpsertMemoReactionBody:
|
||||||
type: object
|
type: object
|
||||||
properties:
|
properties:
|
||||||
reaction:
|
reaction:
|
||||||
$ref: '#/definitions/v1Reaction'
|
$ref: '#/definitions/v1Reaction'
|
||||||
|
description: Required. The reaction to upsert.
|
||||||
|
required:
|
||||||
|
- reaction
|
||||||
TableNodeRow:
|
TableNodeRow:
|
||||||
type: object
|
type: object
|
||||||
properties:
|
properties:
|
||||||
|
|
@ -2635,86 +2780,108 @@ definitions:
|
||||||
properties:
|
properties:
|
||||||
placeholder:
|
placeholder:
|
||||||
type: string
|
type: string
|
||||||
|
description: A placeholder text for the location.
|
||||||
latitude:
|
latitude:
|
||||||
type: number
|
type: number
|
||||||
format: double
|
format: double
|
||||||
|
description: The latitude of the location.
|
||||||
longitude:
|
longitude:
|
||||||
type: number
|
type: number
|
||||||
format: double
|
format: double
|
||||||
|
description: The longitude of the location.
|
||||||
apiv1Memo:
|
apiv1Memo:
|
||||||
type: object
|
type: object
|
||||||
properties:
|
properties:
|
||||||
name:
|
name:
|
||||||
type: string
|
type: string
|
||||||
description: |-
|
description: |-
|
||||||
The name of the memo.
|
The resource name of the memo.
|
||||||
Format: memos/{memo}, memo is the user defined id or uuid.
|
Format: memos/{memo}, memo is the user defined id or uuid.
|
||||||
readOnly: true
|
|
||||||
state:
|
state:
|
||||||
$ref: '#/definitions/v1State'
|
$ref: '#/definitions/v1State'
|
||||||
|
description: The state of the memo.
|
||||||
creator:
|
creator:
|
||||||
type: string
|
type: string
|
||||||
title: |-
|
title: |-
|
||||||
The name of the creator.
|
The name of the creator.
|
||||||
Format: users/{user}
|
Format: users/{user}
|
||||||
|
readOnly: true
|
||||||
createTime:
|
createTime:
|
||||||
type: string
|
type: string
|
||||||
format: date-time
|
format: date-time
|
||||||
|
description: Output only. The creation timestamp.
|
||||||
|
readOnly: true
|
||||||
updateTime:
|
updateTime:
|
||||||
type: string
|
type: string
|
||||||
format: date-time
|
format: date-time
|
||||||
|
description: Output only. The last update timestamp.
|
||||||
|
readOnly: true
|
||||||
displayTime:
|
displayTime:
|
||||||
type: string
|
type: string
|
||||||
format: date-time
|
format: date-time
|
||||||
|
description: The display timestamp of the memo.
|
||||||
content:
|
content:
|
||||||
type: string
|
type: string
|
||||||
|
description: Required. The content of the memo in Markdown format.
|
||||||
nodes:
|
nodes:
|
||||||
type: array
|
type: array
|
||||||
items:
|
items:
|
||||||
type: object
|
type: object
|
||||||
$ref: '#/definitions/v1Node'
|
$ref: '#/definitions/v1Node'
|
||||||
|
description: Output only. The parsed nodes from the content.
|
||||||
readOnly: true
|
readOnly: true
|
||||||
visibility:
|
visibility:
|
||||||
$ref: '#/definitions/v1Visibility'
|
$ref: '#/definitions/v1Visibility'
|
||||||
|
description: The visibility of the memo.
|
||||||
tags:
|
tags:
|
||||||
type: array
|
type: array
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
|
description: Output only. The tags extracted from the content.
|
||||||
readOnly: true
|
readOnly: true
|
||||||
pinned:
|
pinned:
|
||||||
type: boolean
|
type: boolean
|
||||||
|
description: Whether the memo is pinned.
|
||||||
attachments:
|
attachments:
|
||||||
type: array
|
type: array
|
||||||
items:
|
items:
|
||||||
type: object
|
type: object
|
||||||
$ref: '#/definitions/v1Attachment'
|
$ref: '#/definitions/v1Attachment'
|
||||||
|
description: Optional. The attachments of the memo.
|
||||||
relations:
|
relations:
|
||||||
type: array
|
type: array
|
||||||
items:
|
items:
|
||||||
type: object
|
type: object
|
||||||
$ref: '#/definitions/v1MemoRelation'
|
$ref: '#/definitions/v1MemoRelation'
|
||||||
|
description: Optional. The relations of the memo.
|
||||||
reactions:
|
reactions:
|
||||||
type: array
|
type: array
|
||||||
items:
|
items:
|
||||||
type: object
|
type: object
|
||||||
$ref: '#/definitions/v1Reaction'
|
$ref: '#/definitions/v1Reaction'
|
||||||
|
description: Output only. The reactions to the memo.
|
||||||
readOnly: true
|
readOnly: true
|
||||||
property:
|
property:
|
||||||
$ref: '#/definitions/v1MemoProperty'
|
$ref: '#/definitions/v1MemoProperty'
|
||||||
|
description: Output only. The computed properties of the memo.
|
||||||
readOnly: true
|
readOnly: true
|
||||||
parent:
|
parent:
|
||||||
type: string
|
type: string
|
||||||
title: |-
|
title: |-
|
||||||
The name of the parent memo.
|
Output only. The name of the parent memo.
|
||||||
Format: memos/{id}
|
Format: memos/{memo}
|
||||||
readOnly: true
|
readOnly: true
|
||||||
snippet:
|
snippet:
|
||||||
type: string
|
type: string
|
||||||
description: The snippet of the memo content. Plain text only.
|
description: Output only. The snippet of the memo content. Plain text only.
|
||||||
readOnly: true
|
readOnly: true
|
||||||
location:
|
location:
|
||||||
$ref: '#/definitions/apiv1Location'
|
$ref: '#/definitions/apiv1Location'
|
||||||
description: The location of the memo.
|
description: Optional. The location of the memo.
|
||||||
|
required:
|
||||||
|
- state
|
||||||
|
- content
|
||||||
|
- visibility
|
||||||
apiv1OAuth2Config:
|
apiv1OAuth2Config:
|
||||||
type: object
|
type: object
|
||||||
properties:
|
properties:
|
||||||
|
|
@ -3157,13 +3324,6 @@ definitions:
|
||||||
properties:
|
properties:
|
||||||
content:
|
content:
|
||||||
type: string
|
type: string
|
||||||
v1Direction:
|
|
||||||
type: string
|
|
||||||
enum:
|
|
||||||
- DIRECTION_UNSPECIFIED
|
|
||||||
- ASC
|
|
||||||
- DESC
|
|
||||||
default: DIRECTION_UNSPECIFIED
|
|
||||||
v1EmbeddedContentNode:
|
v1EmbeddedContentNode:
|
||||||
type: object
|
type: object
|
||||||
properties:
|
properties:
|
||||||
|
|
@ -3393,6 +3553,14 @@ definitions:
|
||||||
items:
|
items:
|
||||||
type: object
|
type: object
|
||||||
$ref: '#/definitions/v1Attachment'
|
$ref: '#/definitions/v1Attachment'
|
||||||
|
description: The list of attachments.
|
||||||
|
nextPageToken:
|
||||||
|
type: string
|
||||||
|
description: A token for the next page of results.
|
||||||
|
totalSize:
|
||||||
|
type: integer
|
||||||
|
format: int32
|
||||||
|
description: The total count of attachments.
|
||||||
v1ListMemoCommentsResponse:
|
v1ListMemoCommentsResponse:
|
||||||
type: object
|
type: object
|
||||||
properties:
|
properties:
|
||||||
|
|
@ -3401,6 +3569,14 @@ definitions:
|
||||||
items:
|
items:
|
||||||
type: object
|
type: object
|
||||||
$ref: '#/definitions/apiv1Memo'
|
$ref: '#/definitions/apiv1Memo'
|
||||||
|
description: The list of comment memos.
|
||||||
|
nextPageToken:
|
||||||
|
type: string
|
||||||
|
description: A token for the next page of results.
|
||||||
|
totalSize:
|
||||||
|
type: integer
|
||||||
|
format: int32
|
||||||
|
description: The total count of comments.
|
||||||
v1ListMemoReactionsResponse:
|
v1ListMemoReactionsResponse:
|
||||||
type: object
|
type: object
|
||||||
properties:
|
properties:
|
||||||
|
|
@ -3409,6 +3585,14 @@ definitions:
|
||||||
items:
|
items:
|
||||||
type: object
|
type: object
|
||||||
$ref: '#/definitions/v1Reaction'
|
$ref: '#/definitions/v1Reaction'
|
||||||
|
description: The list of reactions.
|
||||||
|
nextPageToken:
|
||||||
|
type: string
|
||||||
|
description: A token for the next page of results.
|
||||||
|
totalSize:
|
||||||
|
type: integer
|
||||||
|
format: int32
|
||||||
|
description: The total count of reactions.
|
||||||
v1ListMemoRelationsResponse:
|
v1ListMemoRelationsResponse:
|
||||||
type: object
|
type: object
|
||||||
properties:
|
properties:
|
||||||
|
|
@ -3417,6 +3601,14 @@ definitions:
|
||||||
items:
|
items:
|
||||||
type: object
|
type: object
|
||||||
$ref: '#/definitions/v1MemoRelation'
|
$ref: '#/definitions/v1MemoRelation'
|
||||||
|
description: The list of relations.
|
||||||
|
nextPageToken:
|
||||||
|
type: string
|
||||||
|
description: A token for the next page of results.
|
||||||
|
totalSize:
|
||||||
|
type: integer
|
||||||
|
format: int32
|
||||||
|
description: The total count of relations.
|
||||||
v1ListMemosResponse:
|
v1ListMemosResponse:
|
||||||
type: object
|
type: object
|
||||||
properties:
|
properties:
|
||||||
|
|
@ -3425,11 +3617,16 @@ definitions:
|
||||||
items:
|
items:
|
||||||
type: object
|
type: object
|
||||||
$ref: '#/definitions/apiv1Memo'
|
$ref: '#/definitions/apiv1Memo'
|
||||||
|
description: The list of memos.
|
||||||
nextPageToken:
|
nextPageToken:
|
||||||
type: string
|
type: string
|
||||||
description: |-
|
description: |-
|
||||||
A token, which can be sent as `page_token` to retrieve the next page.
|
A token that can be sent as `page_token` to retrieve the next page.
|
||||||
If this field is omitted, there are no subsequent pages.
|
If this field is omitted, there are no subsequent pages.
|
||||||
|
totalSize:
|
||||||
|
type: integer
|
||||||
|
format: int32
|
||||||
|
description: The total count of memos (may be approximate).
|
||||||
v1ListNode:
|
v1ListNode:
|
||||||
type: object
|
type: object
|
||||||
properties:
|
properties:
|
||||||
|
|
@ -3532,29 +3729,41 @@ definitions:
|
||||||
type: boolean
|
type: boolean
|
||||||
hasIncompleteTasks:
|
hasIncompleteTasks:
|
||||||
type: boolean
|
type: boolean
|
||||||
|
description: Computed properties of a memo.
|
||||||
v1MemoRelation:
|
v1MemoRelation:
|
||||||
type: object
|
type: object
|
||||||
properties:
|
properties:
|
||||||
memo:
|
memo:
|
||||||
$ref: '#/definitions/v1MemoRelationMemo'
|
$ref: '#/definitions/v1MemoRelationMemo'
|
||||||
|
description: The memo in the relation.
|
||||||
relatedMemo:
|
relatedMemo:
|
||||||
$ref: '#/definitions/v1MemoRelationMemo'
|
$ref: '#/definitions/v1MemoRelationMemo'
|
||||||
|
description: The related memo.
|
||||||
type:
|
type:
|
||||||
$ref: '#/definitions/v1MemoRelationType'
|
$ref: '#/definitions/v1MemoRelationType'
|
||||||
|
required:
|
||||||
|
- memo
|
||||||
|
- relatedMemo
|
||||||
|
- type
|
||||||
v1MemoRelationMemo:
|
v1MemoRelationMemo:
|
||||||
type: object
|
type: object
|
||||||
properties:
|
properties:
|
||||||
name:
|
name:
|
||||||
type: string
|
type: string
|
||||||
title: |-
|
title: |-
|
||||||
The name of the memo.
|
The resource name of the memo.
|
||||||
Format: memos/{id}
|
Format: memos/{memo}
|
||||||
uid:
|
uid:
|
||||||
type: string
|
type: string
|
||||||
|
description: Output only. The unique identifier of the memo.
|
||||||
|
readOnly: true
|
||||||
snippet:
|
snippet:
|
||||||
type: string
|
type: string
|
||||||
description: The snippet of the memo content. Plain text only.
|
description: Output only. The snippet of the memo content. Plain text only.
|
||||||
readOnly: true
|
readOnly: true
|
||||||
|
description: Memo reference in relations.
|
||||||
|
required:
|
||||||
|
- name
|
||||||
v1MemoRelationType:
|
v1MemoRelationType:
|
||||||
type: string
|
type: string
|
||||||
enum:
|
enum:
|
||||||
|
|
@ -3562,6 +3771,7 @@ definitions:
|
||||||
- REFERENCE
|
- REFERENCE
|
||||||
- COMMENT
|
- COMMENT
|
||||||
default: TYPE_UNSPECIFIED
|
default: TYPE_UNSPECIFIED
|
||||||
|
description: The type of the relation.
|
||||||
v1Node:
|
v1Node:
|
||||||
type: object
|
type: object
|
||||||
properties:
|
properties:
|
||||||
|
|
@ -3716,21 +3926,39 @@ definitions:
|
||||||
v1Reaction:
|
v1Reaction:
|
||||||
type: object
|
type: object
|
||||||
properties:
|
properties:
|
||||||
id:
|
name:
|
||||||
type: integer
|
type: string
|
||||||
format: int32
|
title: |-
|
||||||
|
The resource name of the reaction.
|
||||||
|
Format: reactions/{reaction}
|
||||||
|
readOnly: true
|
||||||
|
uid:
|
||||||
|
type: string
|
||||||
|
description: Output only. The system generated unique identifier.
|
||||||
|
readOnly: true
|
||||||
creator:
|
creator:
|
||||||
type: string
|
type: string
|
||||||
title: |-
|
title: |-
|
||||||
The name of the creator.
|
The resource name of the creator.
|
||||||
Format: users/{user}
|
Format: users/{user}
|
||||||
|
readOnly: true
|
||||||
contentId:
|
contentId:
|
||||||
type: string
|
type: string
|
||||||
description: |-
|
title: |-
|
||||||
The content identifier.
|
The resource name of the content.
|
||||||
For memo, it should be the `Memo.name`.
|
For memo reactions, this should be the memo's resource name.
|
||||||
|
Format: memos/{memo}
|
||||||
reactionType:
|
reactionType:
|
||||||
type: string
|
type: string
|
||||||
|
description: "Required. The type of reaction (e.g., \"\U0001F44D\", \"❤️\", \"\U0001F604\")."
|
||||||
|
createTime:
|
||||||
|
type: string
|
||||||
|
format: date-time
|
||||||
|
description: Output only. The creation timestamp.
|
||||||
|
readOnly: true
|
||||||
|
required:
|
||||||
|
- contentId
|
||||||
|
- reactionType
|
||||||
v1ReferencedContentNode:
|
v1ReferencedContentNode:
|
||||||
type: object
|
type: object
|
||||||
properties:
|
properties:
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ import (
|
||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"log/slog"
|
"log/slog"
|
||||||
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
"unicode/utf8"
|
"unicode/utf8"
|
||||||
|
|
||||||
|
|
@ -99,8 +100,12 @@ func (s *APIV1Service) ListMemos(ctx context.Context, request *v1pb.ListMemosReq
|
||||||
// Exclude comments by default.
|
// Exclude comments by default.
|
||||||
ExcludeComments: true,
|
ExcludeComments: true,
|
||||||
}
|
}
|
||||||
if err := s.buildMemoFindWithFilter(ctx, memoFind, request.OldFilter); err != nil {
|
// Handle deprecated old_filter for backward compatibility
|
||||||
return nil, status.Errorf(codes.InvalidArgument, "failed to build find memos with filter: %v", err)
|
if request.OldFilter != "" && request.Filter == "" {
|
||||||
|
//nolint:staticcheck // SA1019: Using deprecated field for backward compatibility
|
||||||
|
if err := s.buildMemoFindWithFilter(ctx, memoFind, request.OldFilter); err != nil {
|
||||||
|
return nil, status.Errorf(codes.InvalidArgument, "failed to build find memos with filter: %v", err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if request.Parent != "" && request.Parent != "users/-" {
|
if request.Parent != "" && request.Parent != "users/-" {
|
||||||
userID, err := ExtractUserIDFromName(request.Parent)
|
userID, err := ExtractUserIDFromName(request.Parent)
|
||||||
|
|
@ -117,9 +122,17 @@ func (s *APIV1Service) ListMemos(ctx context.Context, request *v1pb.ListMemosReq
|
||||||
state := store.Normal
|
state := store.Normal
|
||||||
memoFind.RowStatus = &state
|
memoFind.RowStatus = &state
|
||||||
}
|
}
|
||||||
if request.Direction == v1pb.Direction_ASC {
|
|
||||||
memoFind.OrderByTimeAsc = true
|
// Parse order_by field (replaces the old sort and direction fields)
|
||||||
|
if request.OrderBy != "" {
|
||||||
|
if err := s.parseMemoOrderBy(request.OrderBy, memoFind); err != nil {
|
||||||
|
return nil, status.Errorf(codes.InvalidArgument, "invalid order_by: %v", err)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// Default ordering by display_time desc
|
||||||
|
memoFind.OrderByTimeAsc = false
|
||||||
}
|
}
|
||||||
|
|
||||||
if request.Filter != "" {
|
if request.Filter != "" {
|
||||||
if err := s.validateFilter(ctx, request.Filter); err != nil {
|
if err := s.validateFilter(ctx, request.Filter); err != nil {
|
||||||
return nil, status.Errorf(codes.InvalidArgument, "invalid filter: %v", err)
|
return nil, status.Errorf(codes.InvalidArgument, "invalid filter: %v", err)
|
||||||
|
|
@ -739,3 +752,38 @@ func substring(s string, length int) string {
|
||||||
|
|
||||||
return s[:byteIndex]
|
return s[:byteIndex]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// parseMemoOrderBy parses the order_by field and sets the appropriate ordering in memoFind.
|
||||||
|
func (*APIV1Service) parseMemoOrderBy(orderBy string, memoFind *store.FindMemo) error {
|
||||||
|
// Parse order_by field like "display_time desc" or "create_time asc"
|
||||||
|
parts := strings.Fields(strings.TrimSpace(orderBy))
|
||||||
|
if len(parts) == 0 {
|
||||||
|
return errors.New("empty order_by")
|
||||||
|
}
|
||||||
|
|
||||||
|
field := parts[0]
|
||||||
|
direction := "desc" // default
|
||||||
|
if len(parts) > 1 {
|
||||||
|
direction = strings.ToLower(parts[1])
|
||||||
|
if direction != "asc" && direction != "desc" {
|
||||||
|
return errors.Errorf("invalid order direction: %s, must be 'asc' or 'desc'", parts[1])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
switch field {
|
||||||
|
case "display_time":
|
||||||
|
memoFind.OrderByTimeAsc = direction == "asc"
|
||||||
|
case "create_time":
|
||||||
|
memoFind.OrderByTimeAsc = direction == "asc"
|
||||||
|
case "update_time":
|
||||||
|
memoFind.OrderByUpdatedTs = true
|
||||||
|
memoFind.OrderByTimeAsc = direction == "asc"
|
||||||
|
case "name":
|
||||||
|
// For ordering by memo name/id - not commonly used but supported
|
||||||
|
memoFind.OrderByTimeAsc = direction == "asc"
|
||||||
|
default:
|
||||||
|
return errors.Errorf("unsupported order field: %s, supported fields are: display_time, create_time, update_time, name", field)
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,10 +3,12 @@ package v1
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"time"
|
||||||
|
|
||||||
"google.golang.org/grpc/codes"
|
"google.golang.org/grpc/codes"
|
||||||
"google.golang.org/grpc/status"
|
"google.golang.org/grpc/status"
|
||||||
"google.golang.org/protobuf/types/known/emptypb"
|
"google.golang.org/protobuf/types/known/emptypb"
|
||||||
|
"google.golang.org/protobuf/types/known/timestamppb"
|
||||||
|
|
||||||
v1pb "github.com/usememos/memos/proto/gen/api/v1"
|
v1pb "github.com/usememos/memos/proto/gen/api/v1"
|
||||||
"github.com/usememos/memos/store"
|
"github.com/usememos/memos/store"
|
||||||
|
|
@ -55,8 +57,13 @@ func (s *APIV1Service) UpsertMemoReaction(ctx context.Context, request *v1pb.Ups
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *APIV1Service) DeleteMemoReaction(ctx context.Context, request *v1pb.DeleteMemoReactionRequest) (*emptypb.Empty, error) {
|
func (s *APIV1Service) DeleteMemoReaction(ctx context.Context, request *v1pb.DeleteMemoReactionRequest) (*emptypb.Empty, error) {
|
||||||
|
reactionID, err := ExtractReactionIDFromName(request.Name)
|
||||||
|
if err != nil {
|
||||||
|
return nil, status.Errorf(codes.InvalidArgument, "invalid reaction name: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
if err := s.Store.DeleteReaction(ctx, &store.DeleteReaction{
|
if err := s.Store.DeleteReaction(ctx, &store.DeleteReaction{
|
||||||
ID: request.Id,
|
ID: reactionID,
|
||||||
}); err != nil {
|
}); err != nil {
|
||||||
return nil, status.Errorf(codes.Internal, "failed to delete reaction")
|
return nil, status.Errorf(codes.Internal, "failed to delete reaction")
|
||||||
}
|
}
|
||||||
|
|
@ -71,10 +78,14 @@ func (s *APIV1Service) convertReactionFromStore(ctx context.Context, reaction *s
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
reactionUID := fmt.Sprintf("%d", reaction.ID)
|
||||||
return &v1pb.Reaction{
|
return &v1pb.Reaction{
|
||||||
Id: reaction.ID,
|
Name: fmt.Sprintf("%s%s", ReactionNamePrefix, reactionUID),
|
||||||
|
Uid: reactionUID,
|
||||||
Creator: fmt.Sprintf("%s%d", UserNamePrefix, creator.ID),
|
Creator: fmt.Sprintf("%s%d", UserNamePrefix, creator.ID),
|
||||||
ContentId: reaction.ContentID,
|
ContentId: reaction.ContentID,
|
||||||
ReactionType: reaction.ReactionType,
|
ReactionType: reaction.ReactionType,
|
||||||
|
CreateTime: timestamppb.New(time.Unix(reaction.CreatedTs, 0)),
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,7 @@ const (
|
||||||
UserNamePrefix = "users/"
|
UserNamePrefix = "users/"
|
||||||
MemoNamePrefix = "memos/"
|
MemoNamePrefix = "memos/"
|
||||||
AttachmentNamePrefix = "attachments/"
|
AttachmentNamePrefix = "attachments/"
|
||||||
|
ReactionNamePrefix = "reactions/"
|
||||||
InboxNamePrefix = "inboxes/"
|
InboxNamePrefix = "inboxes/"
|
||||||
IdentityProviderNamePrefix = "identityProviders/"
|
IdentityProviderNamePrefix = "identityProviders/"
|
||||||
ActivityNamePrefix = "activities/"
|
ActivityNamePrefix = "activities/"
|
||||||
|
|
@ -93,6 +94,20 @@ func ExtractAttachmentUIDFromName(name string) (string, error) {
|
||||||
return id, nil
|
return id, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ExtractReactionIDFromName returns the reaction ID from a resource name.
|
||||||
|
// e.g., "reactions/123" -> 123.
|
||||||
|
func ExtractReactionIDFromName(name string) (int32, error) {
|
||||||
|
tokens, err := GetNameParentTokens(name, ReactionNamePrefix)
|
||||||
|
if err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
id, err := util.ConvertStringToInt32(tokens[0])
|
||||||
|
if err != nil {
|
||||||
|
return 0, errors.Errorf("invalid reaction ID %q", tokens[0])
|
||||||
|
}
|
||||||
|
return id, nil
|
||||||
|
}
|
||||||
|
|
||||||
// ExtractInboxIDFromName returns the inbox ID from a resource name.
|
// ExtractInboxIDFromName returns the inbox ID from a resource name.
|
||||||
func ExtractInboxIDFromName(name string) (int32, error) {
|
func ExtractInboxIDFromName(name string) (int32, error) {
|
||||||
tokens, err := GetNameParentTokens(name, InboxNamePrefix)
|
tokens, err := GetNameParentTokens(name, InboxNamePrefix)
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,6 @@ type Reaction struct {
|
||||||
CreatedTs int64
|
CreatedTs int64
|
||||||
CreatorID int32
|
CreatorID int32
|
||||||
// ContentID is the id of the content that the reaction is for.
|
// ContentID is the id of the content that the reaction is for.
|
||||||
// This can be a memo. e.g. memos/101
|
|
||||||
ContentID string
|
ContentID string
|
||||||
ReactionType string
|
ReactionType string
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -396,6 +396,10 @@ const MemoEditor = observer((props: Props) => {
|
||||||
relations: state.relationList,
|
relations: state.relationList,
|
||||||
location: state.location,
|
location: state.location,
|
||||||
}),
|
}),
|
||||||
|
// Optional fields can be omitted
|
||||||
|
memoId: "",
|
||||||
|
validateOnly: false,
|
||||||
|
requestId: "",
|
||||||
})
|
})
|
||||||
: memoServiceClient
|
: memoServiceClient
|
||||||
.createMemoComment({
|
.createMemoComment({
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ import useCurrentUser from "@/hooks/useCurrentUser";
|
||||||
import { userStore } from "@/store/v2";
|
import { userStore } from "@/store/v2";
|
||||||
import { State } from "@/types/proto/api/v1/common";
|
import { State } from "@/types/proto/api/v1/common";
|
||||||
import { Memo } from "@/types/proto/api/v1/memo_service";
|
import { Memo } from "@/types/proto/api/v1/memo_service";
|
||||||
import { Reaction } from "@/types/proto/api/v1/reaction_service";
|
import { Reaction } from "@/types/proto/api/v1/memo_service";
|
||||||
import { User } from "@/types/proto/api/v1/user_service";
|
import { User } from "@/types/proto/api/v1/user_service";
|
||||||
import ReactionSelector from "./ReactionSelector";
|
import ReactionSelector from "./ReactionSelector";
|
||||||
import ReactionView from "./ReactionView";
|
import ReactionView from "./ReactionView";
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ import { DEFAULT_LIST_MEMOS_PAGE_SIZE } from "@/helpers/consts";
|
||||||
import useResponsiveWidth from "@/hooks/useResponsiveWidth";
|
import useResponsiveWidth from "@/hooks/useResponsiveWidth";
|
||||||
import { Routes } from "@/router";
|
import { Routes } from "@/router";
|
||||||
import { memoStore, viewStore } from "@/store/v2";
|
import { memoStore, viewStore } from "@/store/v2";
|
||||||
import { Direction, State } from "@/types/proto/api/v1/common";
|
import { State } from "@/types/proto/api/v1/common";
|
||||||
import { Memo } from "@/types/proto/api/v1/memo_service";
|
import { Memo } from "@/types/proto/api/v1/memo_service";
|
||||||
import { useTranslate } from "@/utils/i18n";
|
import { useTranslate } from "@/utils/i18n";
|
||||||
import Empty from "../Empty";
|
import Empty from "../Empty";
|
||||||
|
|
@ -20,7 +20,7 @@ interface Props {
|
||||||
listSort?: (list: Memo[]) => Memo[];
|
listSort?: (list: Memo[]) => Memo[];
|
||||||
owner?: string;
|
owner?: string;
|
||||||
state?: State;
|
state?: State;
|
||||||
direction?: Direction;
|
orderBy?: string;
|
||||||
filter?: string;
|
filter?: string;
|
||||||
oldFilter?: string;
|
oldFilter?: string;
|
||||||
pageSize?: number;
|
pageSize?: number;
|
||||||
|
|
@ -51,7 +51,7 @@ const PagedMemoList = observer((props: Props) => {
|
||||||
const response = await memoStore.fetchMemos({
|
const response = await memoStore.fetchMemos({
|
||||||
parent: props.owner || "",
|
parent: props.owner || "",
|
||||||
state: props.state || State.NORMAL,
|
state: props.state || State.NORMAL,
|
||||||
direction: props.direction || Direction.DESC,
|
orderBy: props.orderBy || "display_time desc",
|
||||||
filter: props.filter || "",
|
filter: props.filter || "",
|
||||||
oldFilter: props.oldFilter || "",
|
oldFilter: props.oldFilter || "",
|
||||||
pageSize: props.pageSize || DEFAULT_LIST_MEMOS_PAGE_SIZE,
|
pageSize: props.pageSize || DEFAULT_LIST_MEMOS_PAGE_SIZE,
|
||||||
|
|
@ -103,7 +103,7 @@ const PagedMemoList = observer((props: Props) => {
|
||||||
// Initial load and reload when props change
|
// Initial load and reload when props change
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
refreshList();
|
refreshList();
|
||||||
}, [props.owner, props.state, props.direction, props.filter, props.oldFilter, props.pageSize]);
|
}, [props.owner, props.state, props.orderBy, props.filter, props.oldFilter, props.pageSize]);
|
||||||
|
|
||||||
// Auto-fetch more content when list changes and page isn't full
|
// Auto-fetch more content when list changes and page isn't full
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,7 @@ const ReactionSelector = observer((props: Props) => {
|
||||||
(reaction) => reaction.reactionType === reactionType && reaction.creator === currentUser.name,
|
(reaction) => reaction.reactionType === reactionType && reaction.creator === currentUser.name,
|
||||||
);
|
);
|
||||||
for (const reaction of reactions) {
|
for (const reaction of reactions) {
|
||||||
await memoServiceClient.deleteMemoReaction({ id: reaction.id });
|
await memoServiceClient.deleteMemoReaction({ name: reaction.name });
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
await memoServiceClient.upsertMemoReaction({
|
await memoServiceClient.upsertMemoReaction({
|
||||||
|
|
|
||||||
|
|
@ -55,7 +55,7 @@ const ReactionView = observer((props: Props) => {
|
||||||
(reaction) => reaction.reactionType === reactionType && reaction.creator === currentUser.name,
|
(reaction) => reaction.reactionType === reactionType && reaction.creator === currentUser.name,
|
||||||
);
|
);
|
||||||
for (const reaction of reactions) {
|
for (const reaction of reactions) {
|
||||||
await memoServiceClient.deleteMemoReaction({ id: reaction.id });
|
await memoServiceClient.deleteMemoReaction({ name: reaction.name });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch {
|
} catch {
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ import PagedMemoList from "@/components/PagedMemoList";
|
||||||
import useCurrentUser from "@/hooks/useCurrentUser";
|
import useCurrentUser from "@/hooks/useCurrentUser";
|
||||||
import { viewStore } from "@/store/v2";
|
import { viewStore } from "@/store/v2";
|
||||||
import memoFilterStore from "@/store/v2/memoFilter";
|
import memoFilterStore from "@/store/v2/memoFilter";
|
||||||
import { Direction, State } from "@/types/proto/api/v1/common";
|
import { State } from "@/types/proto/api/v1/common";
|
||||||
import { Memo } from "@/types/proto/api/v1/memo_service";
|
import { Memo } from "@/types/proto/api/v1/memo_service";
|
||||||
|
|
||||||
const Archived = observer(() => {
|
const Archived = observer(() => {
|
||||||
|
|
@ -46,7 +46,7 @@ const Archived = observer(() => {
|
||||||
}
|
}
|
||||||
owner={user.name}
|
owner={user.name}
|
||||||
state={State.ARCHIVED}
|
state={State.ARCHIVED}
|
||||||
direction={viewStore.state.orderByTimeAsc ? Direction.ASC : Direction.DESC}
|
orderBy={viewStore.state.orderByTimeAsc ? "display_time asc" : "display_time desc"}
|
||||||
oldFilter={memoListFilter}
|
oldFilter={memoListFilter}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ import MobileHeader from "@/components/MobileHeader";
|
||||||
import PagedMemoList from "@/components/PagedMemoList";
|
import PagedMemoList from "@/components/PagedMemoList";
|
||||||
import useResponsiveWidth from "@/hooks/useResponsiveWidth";
|
import useResponsiveWidth from "@/hooks/useResponsiveWidth";
|
||||||
import { viewStore } from "@/store/v2";
|
import { viewStore } from "@/store/v2";
|
||||||
import { Direction, State } from "@/types/proto/api/v1/common";
|
import { State } from "@/types/proto/api/v1/common";
|
||||||
import { Memo } from "@/types/proto/api/v1/memo_service";
|
import { Memo } from "@/types/proto/api/v1/memo_service";
|
||||||
|
|
||||||
const Explore = observer(() => {
|
const Explore = observer(() => {
|
||||||
|
|
@ -26,7 +26,7 @@ const Explore = observer(() => {
|
||||||
: dayjs(b.displayTime).unix() - dayjs(a.displayTime).unix(),
|
: dayjs(b.displayTime).unix() - dayjs(a.displayTime).unix(),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
direction={viewStore.state.orderByTimeAsc ? Direction.ASC : Direction.DESC}
|
orderBy={viewStore.state.orderByTimeAsc ? "display_time asc" : "display_time desc"}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ import PagedMemoList from "@/components/PagedMemoList";
|
||||||
import useCurrentUser from "@/hooks/useCurrentUser";
|
import useCurrentUser from "@/hooks/useCurrentUser";
|
||||||
import { viewStore, userStore } from "@/store/v2";
|
import { viewStore, userStore } from "@/store/v2";
|
||||||
import memoFilterStore from "@/store/v2/memoFilter";
|
import memoFilterStore from "@/store/v2/memoFilter";
|
||||||
import { Direction, State } from "@/types/proto/api/v1/common";
|
import { State } from "@/types/proto/api/v1/common";
|
||||||
import { Memo } from "@/types/proto/api/v1/memo_service";
|
import { Memo } from "@/types/proto/api/v1/memo_service";
|
||||||
|
|
||||||
// Helper function to extract shortcut ID from resource name
|
// Helper function to extract shortcut ID from resource name
|
||||||
|
|
@ -68,7 +68,7 @@ const Home = observer(() => {
|
||||||
.sort((a, b) => Number(b.pinned) - Number(a.pinned))
|
.sort((a, b) => Number(b.pinned) - Number(a.pinned))
|
||||||
}
|
}
|
||||||
owner={user.name}
|
owner={user.name}
|
||||||
direction={viewStore.state.orderByTimeAsc ? Direction.ASC : Direction.DESC}
|
orderBy={viewStore.state.orderByTimeAsc ? "display_time asc" : "display_time desc"}
|
||||||
filter={selectedShortcut?.filter || ""}
|
filter={selectedShortcut?.filter || ""}
|
||||||
oldFilter={memoListFilter}
|
oldFilter={memoListFilter}
|
||||||
/>
|
/>
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ import UserAvatar from "@/components/UserAvatar";
|
||||||
import useLoading from "@/hooks/useLoading";
|
import useLoading from "@/hooks/useLoading";
|
||||||
import { viewStore, userStore } from "@/store/v2";
|
import { viewStore, userStore } from "@/store/v2";
|
||||||
import memoFilterStore from "@/store/v2/memoFilter";
|
import memoFilterStore from "@/store/v2/memoFilter";
|
||||||
import { Direction, State } from "@/types/proto/api/v1/common";
|
import { State } from "@/types/proto/api/v1/common";
|
||||||
import { Memo } from "@/types/proto/api/v1/memo_service";
|
import { Memo } from "@/types/proto/api/v1/memo_service";
|
||||||
import { User } from "@/types/proto/api/v1/user_service";
|
import { User } from "@/types/proto/api/v1/user_service";
|
||||||
import { useTranslate } from "@/utils/i18n";
|
import { useTranslate } from "@/utils/i18n";
|
||||||
|
|
@ -112,7 +112,7 @@ const UserProfile = observer(() => {
|
||||||
.sort((a, b) => Number(b.pinned) - Number(a.pinned))
|
.sort((a, b) => Number(b.pinned) - Number(a.pinned))
|
||||||
}
|
}
|
||||||
owner={user.name}
|
owner={user.name}
|
||||||
direction={viewStore.state.orderByTimeAsc ? Direction.ASC : Direction.DESC}
|
orderBy={viewStore.state.orderByTimeAsc ? "display_time asc" : "display_time desc"}
|
||||||
oldFilter={memoListFilter}
|
oldFilter={memoListFilter}
|
||||||
/>
|
/>
|
||||||
</>
|
</>
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -1,122 +0,0 @@
|
||||||
// Code generated by protoc-gen-ts_proto. DO NOT EDIT.
|
|
||||||
// versions:
|
|
||||||
// protoc-gen-ts_proto v2.6.1
|
|
||||||
// protoc unknown
|
|
||||||
// source: api/v1/reaction_service.proto
|
|
||||||
|
|
||||||
/* eslint-disable */
|
|
||||||
import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire";
|
|
||||||
|
|
||||||
export const protobufPackage = "memos.api.v1";
|
|
||||||
|
|
||||||
export interface Reaction {
|
|
||||||
id: number;
|
|
||||||
/**
|
|
||||||
* The name of the creator.
|
|
||||||
* Format: users/{user}
|
|
||||||
*/
|
|
||||||
creator: string;
|
|
||||||
/**
|
|
||||||
* The content identifier.
|
|
||||||
* For memo, it should be the `Memo.name`.
|
|
||||||
*/
|
|
||||||
contentId: string;
|
|
||||||
reactionType: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
function createBaseReaction(): Reaction {
|
|
||||||
return { id: 0, creator: "", contentId: "", reactionType: "" };
|
|
||||||
}
|
|
||||||
|
|
||||||
export const Reaction: MessageFns<Reaction> = {
|
|
||||||
encode(message: Reaction, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
|
|
||||||
if (message.id !== 0) {
|
|
||||||
writer.uint32(8).int32(message.id);
|
|
||||||
}
|
|
||||||
if (message.creator !== "") {
|
|
||||||
writer.uint32(18).string(message.creator);
|
|
||||||
}
|
|
||||||
if (message.contentId !== "") {
|
|
||||||
writer.uint32(26).string(message.contentId);
|
|
||||||
}
|
|
||||||
if (message.reactionType !== "") {
|
|
||||||
writer.uint32(34).string(message.reactionType);
|
|
||||||
}
|
|
||||||
return writer;
|
|
||||||
},
|
|
||||||
|
|
||||||
decode(input: BinaryReader | Uint8Array, length?: number): Reaction {
|
|
||||||
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
|
|
||||||
let end = length === undefined ? reader.len : reader.pos + length;
|
|
||||||
const message = createBaseReaction();
|
|
||||||
while (reader.pos < end) {
|
|
||||||
const tag = reader.uint32();
|
|
||||||
switch (tag >>> 3) {
|
|
||||||
case 1: {
|
|
||||||
if (tag !== 8) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.id = reader.int32();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
case 2: {
|
|
||||||
if (tag !== 18) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.creator = reader.string();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
case 3: {
|
|
||||||
if (tag !== 26) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.contentId = reader.string();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
case 4: {
|
|
||||||
if (tag !== 34) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
message.reactionType = reader.string();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ((tag & 7) === 4 || tag === 0) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
reader.skip(tag & 7);
|
|
||||||
}
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
|
|
||||||
create(base?: DeepPartial<Reaction>): Reaction {
|
|
||||||
return Reaction.fromPartial(base ?? {});
|
|
||||||
},
|
|
||||||
fromPartial(object: DeepPartial<Reaction>): Reaction {
|
|
||||||
const message = createBaseReaction();
|
|
||||||
message.id = object.id ?? 0;
|
|
||||||
message.creator = object.creator ?? "";
|
|
||||||
message.contentId = object.contentId ?? "";
|
|
||||||
message.reactionType = object.reactionType ?? "";
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;
|
|
||||||
|
|
||||||
export type DeepPartial<T> = T extends Builtin ? T
|
|
||||||
: T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>
|
|
||||||
: T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>
|
|
||||||
: T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }
|
|
||||||
: Partial<T>;
|
|
||||||
|
|
||||||
export interface MessageFns<T> {
|
|
||||||
encode(message: T, writer?: BinaryWriter): BinaryWriter;
|
|
||||||
decode(input: BinaryReader | Uint8Array, length?: number): T;
|
|
||||||
create(base?: DeepPartial<T>): T;
|
|
||||||
fromPartial(object: DeepPartial<T>): T;
|
|
||||||
}
|
|
||||||
Loading…
Reference in New Issue