mirror of
https://github.com/usememos/memos.git
synced 2025-06-05 22:09:59 +02:00
refactor: add markdown service
This commit is contained in:
@ -1,28 +0,0 @@
|
||||
syntax = "proto3";
|
||||
|
||||
package memos.api.v1;
|
||||
|
||||
import "google/api/annotations.proto";
|
||||
|
||||
option go_package = "gen/api/v1";
|
||||
|
||||
service LinkService {
|
||||
// GetLinkMetadata returns metadata for a given link.
|
||||
rpc GetLinkMetadata(GetLinkMetadataRequest) returns (GetLinkMetadataResponse) {
|
||||
option (google.api.http) = {get: "/api/v1/linkMetadata"};
|
||||
}
|
||||
}
|
||||
|
||||
message GetLinkMetadataRequest {
|
||||
string link = 1;
|
||||
}
|
||||
|
||||
message GetLinkMetadataResponse {
|
||||
LinkMetadata link_metadata = 1;
|
||||
}
|
||||
|
||||
message LinkMetadata {
|
||||
string title = 1;
|
||||
string description = 2;
|
||||
string image = 3;
|
||||
}
|
259
proto/api/v1/markdown_service.proto
Normal file
259
proto/api/v1/markdown_service.proto
Normal file
@ -0,0 +1,259 @@
|
||||
syntax = "proto3";
|
||||
|
||||
package memos.api.v1;
|
||||
|
||||
import "google/api/annotations.proto";
|
||||
|
||||
option go_package = "gen/api/v1";
|
||||
|
||||
service MarkdownService {
|
||||
// Parses the given markdown content and returns a list of nodes.
|
||||
rpc ParseMarkdown(ParseMarkdownRequest) returns (ParseMarkdownResponse) {
|
||||
option (google.api.http) = {
|
||||
post: "/api/v1/markdown/parse"
|
||||
body: "*"
|
||||
};
|
||||
}
|
||||
// Restores the given nodes to markdown content.
|
||||
rpc RestoreMarkdown(RestoreMarkdownRequest) returns (RestoreMarkdownResponse) {
|
||||
option (google.api.http) = {
|
||||
post: "/api/v1/markdown:restore"
|
||||
body: "*"
|
||||
};
|
||||
}
|
||||
// GetLinkMetadata returns metadata for a given link.
|
||||
rpc GetLinkMetadata(GetLinkMetadataRequest) returns (LinkMetadata) {
|
||||
option (google.api.http) = {get: "/api/v1/markdown/link:metadata"};
|
||||
}
|
||||
}
|
||||
|
||||
message ParseMarkdownRequest {
|
||||
string markdown = 1;
|
||||
}
|
||||
|
||||
message ParseMarkdownResponse {
|
||||
repeated Node nodes = 1;
|
||||
}
|
||||
|
||||
message RestoreMarkdownRequest {
|
||||
repeated Node nodes = 1;
|
||||
}
|
||||
|
||||
message RestoreMarkdownResponse {
|
||||
string markdown = 1;
|
||||
}
|
||||
|
||||
message GetLinkMetadataRequest {
|
||||
string link = 1;
|
||||
}
|
||||
|
||||
message LinkMetadata {
|
||||
string title = 1;
|
||||
string description = 2;
|
||||
string image = 3;
|
||||
}
|
||||
|
||||
enum NodeType {
|
||||
NODE_UNSPECIFIED = 0;
|
||||
LINE_BREAK = 1;
|
||||
PARAGRAPH = 2;
|
||||
CODE_BLOCK = 3;
|
||||
HEADING = 4;
|
||||
HORIZONTAL_RULE = 5;
|
||||
BLOCKQUOTE = 6;
|
||||
ORDERED_LIST = 7;
|
||||
UNORDERED_LIST = 8;
|
||||
TASK_LIST = 9;
|
||||
MATH_BLOCK = 10;
|
||||
TABLE = 11;
|
||||
EMBEDDED_CONTENT = 12;
|
||||
TEXT = 13;
|
||||
BOLD = 14;
|
||||
ITALIC = 15;
|
||||
BOLD_ITALIC = 16;
|
||||
CODE = 17;
|
||||
IMAGE = 18;
|
||||
LINK = 19;
|
||||
AUTO_LINK = 20;
|
||||
TAG = 21;
|
||||
STRIKETHROUGH = 22;
|
||||
ESCAPING_CHARACTER = 23;
|
||||
MATH = 24;
|
||||
HIGHLIGHT = 25;
|
||||
SUBSCRIPT = 26;
|
||||
SUPERSCRIPT = 27;
|
||||
REFERENCED_CONTENT = 28;
|
||||
SPOILER = 29;
|
||||
}
|
||||
|
||||
message Node {
|
||||
NodeType type = 1;
|
||||
oneof node {
|
||||
LineBreakNode line_break_node = 2;
|
||||
ParagraphNode paragraph_node = 3;
|
||||
CodeBlockNode code_block_node = 4;
|
||||
HeadingNode heading_node = 5;
|
||||
HorizontalRuleNode horizontal_rule_node = 6;
|
||||
BlockquoteNode blockquote_node = 7;
|
||||
OrderedListNode ordered_list_node = 8;
|
||||
UnorderedListNode unordered_list_node = 9;
|
||||
TaskListNode task_list_node = 10;
|
||||
MathBlockNode math_block_node = 11;
|
||||
TableNode table_node = 12;
|
||||
EmbeddedContentNode embedded_content_node = 13;
|
||||
TextNode text_node = 14;
|
||||
BoldNode bold_node = 15;
|
||||
ItalicNode italic_node = 16;
|
||||
BoldItalicNode bold_italic_node = 17;
|
||||
CodeNode code_node = 18;
|
||||
ImageNode image_node = 19;
|
||||
LinkNode link_node = 20;
|
||||
AutoLinkNode auto_link_node = 21;
|
||||
TagNode tag_node = 22;
|
||||
StrikethroughNode strikethrough_node = 23;
|
||||
EscapingCharacterNode escaping_character_node = 24;
|
||||
MathNode math_node = 25;
|
||||
HighlightNode highlight_node = 26;
|
||||
SubscriptNode subscript_node = 27;
|
||||
SuperscriptNode superscript_node = 28;
|
||||
ReferencedContentNode referenced_content_node = 29;
|
||||
SpoilerNode spoiler_node = 30;
|
||||
}
|
||||
}
|
||||
|
||||
message LineBreakNode {}
|
||||
|
||||
message ParagraphNode {
|
||||
repeated Node children = 1;
|
||||
}
|
||||
|
||||
message CodeBlockNode {
|
||||
string language = 1;
|
||||
string content = 2;
|
||||
}
|
||||
|
||||
message HeadingNode {
|
||||
int32 level = 1;
|
||||
repeated Node children = 2;
|
||||
}
|
||||
|
||||
message HorizontalRuleNode {
|
||||
string symbol = 1;
|
||||
}
|
||||
|
||||
message BlockquoteNode {
|
||||
repeated Node children = 1;
|
||||
}
|
||||
|
||||
message OrderedListNode {
|
||||
string number = 1;
|
||||
int32 indent = 2;
|
||||
repeated Node children = 3;
|
||||
}
|
||||
|
||||
message UnorderedListNode {
|
||||
string symbol = 1;
|
||||
int32 indent = 2;
|
||||
repeated Node children = 3;
|
||||
}
|
||||
|
||||
message TaskListNode {
|
||||
string symbol = 1;
|
||||
int32 indent = 2;
|
||||
bool complete = 3;
|
||||
repeated Node children = 4;
|
||||
}
|
||||
|
||||
message MathBlockNode {
|
||||
string content = 1;
|
||||
}
|
||||
|
||||
message TableNode {
|
||||
repeated string header = 1;
|
||||
repeated string delimiter = 2;
|
||||
|
||||
message Row {
|
||||
repeated string cells = 1;
|
||||
}
|
||||
repeated Row rows = 3;
|
||||
}
|
||||
|
||||
message EmbeddedContentNode {
|
||||
string resource_name = 1;
|
||||
string params = 2;
|
||||
}
|
||||
|
||||
message TextNode {
|
||||
string content = 1;
|
||||
}
|
||||
|
||||
message BoldNode {
|
||||
string symbol = 1;
|
||||
repeated Node children = 2;
|
||||
}
|
||||
|
||||
message ItalicNode {
|
||||
string symbol = 1;
|
||||
string content = 2;
|
||||
}
|
||||
|
||||
message BoldItalicNode {
|
||||
string symbol = 1;
|
||||
string content = 2;
|
||||
}
|
||||
|
||||
message CodeNode {
|
||||
string content = 1;
|
||||
}
|
||||
|
||||
message ImageNode {
|
||||
string alt_text = 1;
|
||||
string url = 2;
|
||||
}
|
||||
|
||||
message LinkNode {
|
||||
string text = 1;
|
||||
string url = 2;
|
||||
}
|
||||
|
||||
message AutoLinkNode {
|
||||
string url = 1;
|
||||
bool is_raw_text = 2;
|
||||
}
|
||||
|
||||
message TagNode {
|
||||
string content = 1;
|
||||
}
|
||||
|
||||
message StrikethroughNode {
|
||||
string content = 1;
|
||||
}
|
||||
|
||||
message EscapingCharacterNode {
|
||||
string symbol = 1;
|
||||
}
|
||||
|
||||
message MathNode {
|
||||
string content = 1;
|
||||
}
|
||||
|
||||
message HighlightNode {
|
||||
string content = 1;
|
||||
}
|
||||
|
||||
message SubscriptNode {
|
||||
string content = 1;
|
||||
}
|
||||
|
||||
message SuperscriptNode {
|
||||
string content = 1;
|
||||
}
|
||||
|
||||
message ReferencedContentNode {
|
||||
string resource_name = 1;
|
||||
string params = 2;
|
||||
}
|
||||
|
||||
message SpoilerNode {
|
||||
string content = 1;
|
||||
}
|
@ -3,6 +3,7 @@ syntax = "proto3";
|
||||
package memos.api.v1;
|
||||
|
||||
import "api/v1/common.proto";
|
||||
import "api/v1/markdown_service.proto";
|
||||
import "api/v1/memo_relation_service.proto";
|
||||
import "api/v1/reaction_service.proto";
|
||||
import "api/v1/resource_service.proto";
|
||||
@ -146,21 +147,23 @@ message Memo {
|
||||
|
||||
google.protobuf.Timestamp update_time = 6;
|
||||
|
||||
google.protobuf.Timestamp display_time = 78;
|
||||
google.protobuf.Timestamp display_time = 7;
|
||||
|
||||
string content = 8;
|
||||
|
||||
Visibility visibility = 9;
|
||||
repeated Node nodes = 9 [(google.api.field_behavior) = OUTPUT_ONLY];
|
||||
|
||||
bool pinned = 10;
|
||||
Visibility visibility = 10;
|
||||
|
||||
optional int32 parent_id = 11 [(google.api.field_behavior) = OUTPUT_ONLY];
|
||||
bool pinned = 11;
|
||||
|
||||
repeated Resource resources = 12 [(google.api.field_behavior) = OUTPUT_ONLY];
|
||||
optional int32 parent_id = 12 [(google.api.field_behavior) = OUTPUT_ONLY];
|
||||
|
||||
repeated MemoRelation relations = 13 [(google.api.field_behavior) = OUTPUT_ONLY];
|
||||
repeated Resource resources = 13 [(google.api.field_behavior) = OUTPUT_ONLY];
|
||||
|
||||
repeated Reaction reactions = 14 [(google.api.field_behavior) = OUTPUT_ONLY];
|
||||
repeated MemoRelation relations = 14 [(google.api.field_behavior) = OUTPUT_ONLY];
|
||||
|
||||
repeated Reaction reactions = 15 [(google.api.field_behavior) = OUTPUT_ONLY];
|
||||
}
|
||||
|
||||
message CreateMemoRequest {
|
||||
|
Reference in New Issue
Block a user