You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

257 lines
6.3 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

syntax = "proto3";
import "google/protobuf/timestamp.proto";
import "gogoproto/gogo.proto";
// import "validate/validate.proto";
import "google/api/annotations.proto";
import "google/protobuf/empty.proto";
import "api/v1/attachment.proto";
import "api/v1/user.proto";
package api.v1;
option go_package = "moredoc/api/v1;v1";
option java_multiple_files = true;
option java_package = "api.v1";
message Document {
int64 id = 1;
string title = 2;
string keywords = 3;
string description = 4;
int64 user_id = 5;
string cover = 6;
int32 width = 7;
int32 height = 8;
int32 preview = 9;
int32 pages = 10;
string uuid = 11;
int32 download_count = 12;
int32 view_count = 13;
int32 favorite_count = 14;
int32 comment_count = 15;
int32 score = 16;
int32 score_count = 17;
int32 price = 18;
int64 size = 19;
int32 status = 20;
google.protobuf.Timestamp created_at = 21 [ (gogoproto.stdtime) = true ];
google.protobuf.Timestamp updated_at = 22 [ (gogoproto.stdtime) = true ];
google.protobuf.Timestamp deleted_at = 23 [ (gogoproto.stdtime) = true ];
google.protobuf.Timestamp recommend_at = 29 [ (gogoproto.stdtime) = true ];
int64 deleted_user_id = 24;
string username = 25;
repeated int64 category_id = 26;
string deleted_username = 27;
string ext = 28;
Attachment attachment = 30;
User user = 31;
bool enable_gzip = 32;
string convert_error = 33;
}
message DeleteDocumentRequest { repeated int64 id = 1; }
message RecoverRecycleDocumentRequest { repeated int64 id = 1; }
message GetDocumentRequest {
int64 id = 1;
bool with_author = 2;
}
message ListDocumentRequest {
int64 page = 1;
int64 size = 2;
string wd = 3;
repeated string field = 4;
string order = 5;
repeated int64 category_id = 6;
repeated int64 user_id = 7;
repeated int32 status = 8;
repeated bool is_recommend = 9;
int64 limit = 10;
}
message ListDocumentReply {
int64 total = 1;
repeated Document document = 2;
}
message CreateDocumentItem {
string title = 1;
int64 attachment_id = 2;
int32 price = 3;
}
message CreateDocumentRequest {
bool overwrite = 1;
repeated int64 category_id = 2;
repeated CreateDocumentItem document = 3;
}
message SetDocumentRecommendRequest {
repeated int64 id = 1;
int32 type = 2; // 0, 取消推荐1:推荐 2:重新推荐
}
message ListDocumentForHomeRequest { int64 limit = 1; }
message ListDocumentForHomeItem {
int64 category_id = 1;
string category_cover = 2;
string category_name = 3;
repeated Document document = 4;
}
message ListDocumentForHomeResponse {
repeated ListDocumentForHomeItem document = 1;
}
message SearchDocumentRequest {
int32 page = 1;
int32 size = 2;
string wd = 3;
repeated int64 category_id = 4; // 分类
string sort = 5; // 排序
string ext = 7; // 类型
}
message DocumentScore {
int64 id = 1;
int64 document_id = 2;
int64 user_id = 3;
int32 score = 4;
google.protobuf.Timestamp created_at = 5 [ (gogoproto.stdtime) = true ];
google.protobuf.Timestamp updated_at = 6 [ (gogoproto.stdtime) = true ];
}
message SearchDocumentReply {
int64 total = 1;
string spend = 2; // 搜索耗时
repeated Document document = 3;
}
message DownloadDocumentReply { string url = 1; }
service DocumentAPI {
rpc ListDocumentForHome(ListDocumentForHomeRequest)
returns (ListDocumentForHomeResponse) {
option (google.api.http) = {
get : '/api/v1/document/home',
};
}
rpc SetDocumentRecommend(SetDocumentRecommendRequest)
returns (google.protobuf.Empty) {
option (google.api.http) = {
put : '/api/v1/document/recommend',
body : '*',
};
}
rpc CreateDocument(CreateDocumentRequest) returns (google.protobuf.Empty) {
option (google.api.http) = {
post : '/api/v1/document',
body : '*',
};
}
rpc UpdateDocument(Document) returns (google.protobuf.Empty) {
option (google.api.http) = {
put : '/api/v1/document',
body : '*',
};
}
rpc DeleteDocument(DeleteDocumentRequest) returns (google.protobuf.Empty) {
option (google.api.http) = {
delete : '/api/v1/document',
};
}
rpc GetDocument(GetDocumentRequest) returns (Document) {
option (google.api.http) = {
get : '/api/v1/document',
};
}
rpc GetRelatedDocuments(Document) returns (ListDocumentReply) {
option (google.api.http) = {
get : '/api/v1/document/related',
};
}
rpc DownloadDocument(Document) returns (DownloadDocumentReply) {
option (google.api.http) = {
get : '/api/v1/document/download',
};
}
rpc ListDocument(ListDocumentRequest) returns (ListDocumentReply) {
option (google.api.http) = {
get : '/api/v1/document/list',
};
}
rpc SearchDocument(SearchDocumentRequest) returns (SearchDocumentReply) {
option (google.api.http) = {
get : '/api/v1/document/search',
};
}
// 设置文档评分
rpc SetDocumentScore(DocumentScore) returns (google.protobuf.Empty) {
option (google.api.http) = {
post : '/api/v1/document/score',
body : '*',
};
}
// 获取当前登录用户的文档评分
rpc GetDocumentScore(DocumentScore) returns (DocumentScore) {
option (google.api.http) = {
get : '/api/v1/document/score',
};
}
// 将文档一键设置为重转
rpc SetDocumentReconvert(google.protobuf.Empty)
returns (google.protobuf.Empty) {
option (google.api.http) = {
put : '/api/v1/document/reconvert',
};
}
}
service RecycleAPI {
// 文档回收站列表
rpc ListRecycleDocument(ListDocumentRequest) returns (ListDocumentReply) {
option (google.api.http) = {
get : '/api/v1/document/recycle',
};
}
// 恢复回收站文档,支持恢复单个文档或者是批量恢复
rpc RecoverRecycleDocument(RecoverRecycleDocumentRequest)
returns (google.protobuf.Empty) {
option (google.api.http) = {
put : '/api/v1/document/recycle',
body : '*',
};
}
// 删除回收站文档
rpc DeleteRecycleDocument(DeleteDocumentRequest)
returns (google.protobuf.Empty) {
option (google.api.http) = {
delete : '/api/v1/document/recycle',
};
}
// 清空回收站文档
rpc ClearRecycleDocument(google.protobuf.Empty)
returns (google.protobuf.Empty) {
option (google.api.http) = {
delete : '/api/v1/document/recycle/all',
};
}
}