meta/area/area.proto
syntax = "proto3";
package jsgenerate_kb2022.meta.area;
option go_package = "gateway/protocol/meta/area";
import "google/api/annotations.proto";
import "google/api/httpbody.proto";
// 區域相關
service Area {
// 添加一個區域
rpc Add (AddRequest) returns (AddResponse){
option (google.api.http) = {
post: "/api/v1/meta/area"
body: "*"
};
}
// 導入區域
// 對於 http 可以請求 /api/v1/meta/area/import_file 進行檔案上傳
// curl -X POST -F "attachment=@/tmp/somefile.txt" http://localhost/api/v1/meta/area/import_file
rpc Import (ImportRequest) returns (ImportResponse){
option (google.api.http) = {
post: "/api/v1/meta/area/import"
body: "*"
};
}
// 導出區域
rpc Export (ExportRequest) returns (google.api.HttpBody){
option (google.api.http) = {
get: "/api/v1/meta/area/export"
};
}
// 修改區域屬性
rpc Change (ChangeRequest) returns (ChangeResponse){
option (google.api.http) = {
patch: "/api/v1/meta/area"
body: "*"
};
}
// 停用區域
rpc Disable (DisableRequest) returns (DisableResponse){
option (google.api.http) = {
delete: "/api/v1/meta/area"
};
}
// 返回所有啓用的區域
rpc List (ListRequest) returns (ListResponse){
option (google.api.http) = {
get: "/api/v1/meta/area/list"
};
}
// 返回所有啓用的 根節點(所有頂級區域)
rpc Root (RootRequest) returns (ListResponse){
option (google.api.http) = {
get: "/api/v1/meta/area/list/root"
};
}
// 返回所有 以指定邏輯碼開頭且被啓用的區域 (列出指定區域和其所有子區域)
rpc ListByLogic (ListByLogicRequest) returns (ListResponse){
option (google.api.http) = {
get: "/api/v1/meta/area/list/by_logic"
};
}
// 返回指定 id 的區域,僅用於顯示歷史數據
rpc ID (IDRequest) returns (IDResponse){
option (google.api.http) = {
get: "/api/v1/meta/area/by_id"
};
}
}
message View{
// 區域唯一識別代碼
int64 id = 1;
// 區域邏輯碼
// 父區域邏輯碼固定爲 logic[:len(logic)-2],所以可知根節點的 len(logic) == 2
string logic = 2;
// 區域戶名
string name = 3;
// 該區域下包含多少個設備
uint32 device = 4;
}
// 代表一個區域資源
message Assets{
int64 id = 1;
string logic = 2;
}
message AddRequest{
string logic = 1;
string name = 2;
}
message AddResponse{
// 添加成功時返回 添加的 區域 id
int64 id = 1;
}
message ImportRequest{
// 導入數據 必須是 utf8 文本
// 一行一個區域, 區域碼 和 區域名稱以 空格隔開例如
// 如果行以 # 字符作爲開頭則表示註釋,解析器將忽略此行內容
// 5101 成都
// 510101 錦江區
// 510102 成華區
string text = 1;
}
message ImportResponse{
int64 changed = 1;
}
message ExportRequest{
// 要導出區域的邏輯碼
string logic = 1;
}
message ChangeRequest{
// 要修改的區域
Assets assets = 1;
// 要變更的名稱
string name = 2;
}
message ChangeResponse{
}
message DisableRequest{
// 要停用的區域
Assets assets = 1;
}
message DisableResponse{
int64 changed = 1;
}
message ListRequest{
}
message RootRequest{
}
message ListByLogicRequest{
string logic = 1;
}
message ListResponse{
repeated Data data = 1;
}
message Data{
// 區域唯一識別代碼
int64 id = 1;
// 區域邏輯碼
// 父區域邏輯碼固定爲 logic[:len(logic)-2]
string logic = 2;
// 區域戶名
string name = 3;
// 該區域下包含多少個設備
uint32 device = 4;
// 是否被停用
bool disabled = 5;
// 被停用的時間
int64 disabledAt = 6;
}
message IDRequest{
repeated int64 id = 1;
}
message IDResponse{
repeated Data data = 1;
}