meta/meta.proto

syntax = "proto3";

package jsgenerate_kb2022.meta;
option go_package = "gateway/protocol/meta";

import "google/api/annotations.proto";

// 系統元信息
service Meta {
    // 返回系統版本信息,只有 root 可調用
    rpc Metadata (MetadataRequest) returns (MetadataResponse){
        option (google.api.http) = {
            get: "/api/v1/meta/metadata"
        };
    }

    // 返回系統支持的權限列表
    rpc Permission (PermissionRequest) returns (PermissionResponse){
        option (google.api.http) = {
            get: "/api/v1/meta/permission"
        };
    }
    // 設置權限列表,只有 root 可調用
    rpc SetPermission (SetPermissionRequest) returns (SetPermissionResponse){
        option (google.api.http) = {
            post: "/api/v1/meta/set_permission"
            body: "*"
        };
    }

    // 返回系統支持的組列表
    rpc Groups (GroupsRequest) returns (GroupsResponse){
        option (google.api.http) = {
            get: "/api/v1/meta/groups"
        };
    }
    // 設置組列表,只有 root 可調用。不要輕易使用錯誤的調用將導致系統不正常工作,通常是系統升級了需要更新元信息時在專業人員指導下使用
    rpc SetGroups (SetGroupsRequest) returns (SetGroupsResponse){
        option (google.api.http) = {
            post: "/api/v1/meta/set_groups"
            body: "*"
        };
    }

    // 返回系統支持的任務優先級列表
    rpc TaskPriority (TaskPriorityRequest) returns (TaskPriorityResponse){
        option (google.api.http) = {
            get: "/api/v1/meta/task/priority"
        };
    }
    // 設置優先級列表,只有 root 可調用。不要輕易使用錯誤的調用將導致系統不正常工作,通常是系統升級了需要更新元信息時在專業人員指導下使用
    rpc SetTaskPriority (SetTaskPriorityRequest) returns (SetTaskPriorityResponse){
        option (google.api.http) = {
            post: "/api/v1/meta/task/set_priority"
            body: "*"
        };
    }
    // 返回系統支持的人員和任務等級
    rpc Level (LevelRequest) returns (LevelResponse){
        option (google.api.http) = {
            get: "/api/v1/meta/level"
        };
    }
    // 設置等級列表,只有 root 可調用。不要輕易使用錯誤的調用將導致系統不正常工作,通常是系統升級了需要更新元信息時在專業人員指導下使用
    rpc SetLevel (SetLevelRequest) returns (SetLevelResponse){
        option (google.api.http) = {
            post: "/api/v1/meta/set_level"
            body: "*"
        };
    }
}
message MetadataRequest{
}
message MetadataResponse{
    // meta 運行平臺
    string platform = 1;
    // meta 版本
    string version = 2;
    // 數據庫驅動
    string driver = 3;
    // 數據庫版本
    uint64 db = 4;
}
message Permission{
    // 唯一的識別 id
    int32 id = 1;
    // 一個給人類查看稱呼的名稱
    string name = 2;
    // 一段給人類查看的文本說明
    string describe = 3;
}
message PermissionRequest{}
message PermissionResponse{
    repeated Permission data = 1;
}
message SetPermissionRequest{
    repeated Permission data = 1;
}
message SetPermissionResponse{}

message Group{
    // 唯一的識別 id
    int32 id = 1;
    // 一個給人類查看稱呼的名稱
    string name = 2;
    // 一段給人類查看的文本說明
    string describe = 3;
    // 此組包含哪些權限
    repeated int32 permissions = 4;
    // 從其它組派生 將包含被派生組的權限
    repeated int32 extends =5 ;
}

message GroupsRequest{}
message GroupsResponse{
    repeated Group data = 1;
}

message SetGroupsRequest{
    repeated Group data = 1;
}
message SetGroupsResponse{}

message TaskPriority{
    // 唯一的識別 id
    // id 越大優先級越高
    int32 id = 1;
    // 一個給人類查看 優先級 名稱
    string name = 2;
    // 一段給人類查看的文本說明
    string describe = 3;
}
message TaskPriorityRequest{
}
message TaskPriorityResponse{
    repeated TaskPriority data = 1;
}

message SetTaskPriorityRequest{
    repeated TaskPriority data = 1;
}
message SetTaskPriorityResponse{
}

message Level{
    // 唯一的識別 id
    // id 越大優先級越高
    int32 id = 1;
    // 一個給人類查看 優先級 名稱
    string name = 2;
    // 一段給人類查看的文本說明
    string describe = 3;
}
message LevelRequest{
}
message LevelResponse{
    repeated Level data = 1;
}
message SetLevelRequest{
    repeated Level data = 1;
}
message SetLevelResponse{
}
message MetadataOfRaw{
	uint64 DB = 1;
	int64 Unix = 2;
}