|
|
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";
|
|
|
|
|
|
package api.v1;
|
|
|
|
|
|
option go_package = "moredoc/api/v1;v1";
|
|
|
option java_multiple_files = true;
|
|
|
option java_package = "api.v1";
|
|
|
|
|
|
// 附件
|
|
|
message Attachment {
|
|
|
int64 id = 1; // 附件ID
|
|
|
string hash = 2; // 附件哈希值,MD5
|
|
|
int64 user_id = 3; // 上传用户ID
|
|
|
int64 type_id = 4; // 附件类型ID,如果是文档类型,则为文档ID
|
|
|
int32 type = 5; // 附件类型,见 web/utils/enum.js
|
|
|
bool enable = 6; // 是否启用
|
|
|
string path = 7; // 附件路径
|
|
|
string name = 8; // 附件名称
|
|
|
int64 size = 9; // 附件大小,单位:字节
|
|
|
int64 width = 10; // 附件宽度,单位:像素。针对图片附件
|
|
|
int64 height = 11; // 附件高度,单位:像素。针对图片附件
|
|
|
string ext = 12; // 扩展名,如:.docx
|
|
|
string ip = 13; // 上传IP地址
|
|
|
string username = 16; // 用户名称
|
|
|
string type_name = 17; // 附件类型名称
|
|
|
string description = 18; // 附件描述、备注
|
|
|
google.protobuf.Timestamp created_at = 14
|
|
|
[ (gogoproto.stdtime) = true ]; // 创建时间
|
|
|
google.protobuf.Timestamp updated_at = 15
|
|
|
[ (gogoproto.stdtime) = true ]; // 更新时间
|
|
|
}
|
|
|
|
|
|
// 删除附件请求
|
|
|
message DeleteAttachmentRequest { repeated int64 id = 1; }
|
|
|
|
|
|
// 获取附件请求
|
|
|
message GetAttachmentRequest { int64 id = 1; }
|
|
|
|
|
|
// 列出附件请求
|
|
|
message ListAttachmentRequest {
|
|
|
int64 page = 1; // 页码
|
|
|
int64 size = 2; // 每页数量
|
|
|
string wd = 3; // 搜索关键字
|
|
|
repeated bool enable = 4; // 是否启用
|
|
|
repeated int64 user_id = 5; // 用户ID
|
|
|
repeated int64 type = 6; // 类型
|
|
|
string ext = 7; // 扩展名
|
|
|
}
|
|
|
|
|
|
// 列出附件响应
|
|
|
message ListAttachmentReply {
|
|
|
int64 total = 1;
|
|
|
repeated Attachment attachment = 2;
|
|
|
}
|
|
|
|
|
|
// 附件服务。只有管理员才有权限操作
|
|
|
service AttachmentAPI {
|
|
|
// 更新附件
|
|
|
rpc UpdateAttachment(Attachment) returns (google.protobuf.Empty) {
|
|
|
option (google.api.http) = {
|
|
|
put : '/api/v1/attachment',
|
|
|
body : '*',
|
|
|
};
|
|
|
}
|
|
|
|
|
|
// 删除附件。这里只是软删除,不会真正删除附件,默认24小时候会真正清除附件
|
|
|
rpc DeleteAttachment(DeleteAttachmentRequest)
|
|
|
returns (google.protobuf.Empty) {
|
|
|
option (google.api.http) = {
|
|
|
delete : '/api/v1/attachment',
|
|
|
};
|
|
|
}
|
|
|
|
|
|
// 查询附件
|
|
|
rpc GetAttachment(GetAttachmentRequest) returns (Attachment) {
|
|
|
option (google.api.http) = {
|
|
|
get : '/api/v1/attachment',
|
|
|
};
|
|
|
}
|
|
|
|
|
|
// 列出附件
|
|
|
rpc ListAttachment(ListAttachmentRequest) returns (ListAttachmentReply) {
|
|
|
option (google.api.http) = {
|
|
|
get : '/api/v1/attachment/list',
|
|
|
};
|
|
|
}
|
|
|
} |