改良写入字段,减少使用者失误

This commit is contained in:
algotao
2025-12-16 17:19:06 +08:00
parent 9a892eb533
commit d4bf3297d4
7 changed files with 265 additions and 199 deletions

289
cmd.pb.go
View File

@@ -1174,9 +1174,15 @@ func (x *Write) GetWriteItems() []*WriteItem {
type WriteItem struct {
state protoimpl.MessageState `protogen:"open.v1"`
Userid string `protobuf:"bytes,1,opt,name=userid,proto3" json:"userid,omitempty"` // 用户ID
WriteBytes *Bytes `protobuf:"bytes,2,opt,name=write_bytes,json=writeBytes,proto3" json:"write_bytes,omitempty"` // byte区域
WriteUint32S *Uint32S `protobuf:"bytes,3,opt,name=write_uint32s,json=writeUint32s,proto3" json:"write_uint32s,omitempty"` // uint32区域
WriteFlagsWithExpire *FlagsWithExpire `protobuf:"bytes,4,opt,name=write_flags_with_expire,json=writeFlagsWithExpire,proto3" json:"write_flags_with_expire,omitempty"` // 标志位区域
// Deprecated: Marked as deprecated in cmd.proto.
WriteBytes *Bytes `protobuf:"bytes,2,opt,name=write_bytes,json=writeBytes,proto3" json:"write_bytes,omitempty"` // byte区域。!!!弃用请使用bytes_kv
// Deprecated: Marked as deprecated in cmd.proto.
WriteUint32S *Uint32S `protobuf:"bytes,3,opt,name=write_uint32s,json=writeUint32s,proto3" json:"write_uint32s,omitempty"` // uint32区域。!!!弃用请使用uint32s_kv
// Deprecated: Marked as deprecated in cmd.proto.
WriteFlagsWithExpire *FlagsWithExpire `protobuf:"bytes,4,opt,name=write_flags_with_expire,json=writeFlagsWithExpire,proto3" json:"write_flags_with_expire,omitempty"` // 标志位区域。!!!弃用请使用flags_with_expire_kv
BytesKv map[uint32]uint32 `protobuf:"bytes,5,rep,name=bytes_kv,json=bytesKv,proto3" json:"bytes_kv,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"` // 写入bytekey为1-64索引值value为0-255数值。index/value超限会丢弃
Uint32SKv map[uint32]uint32 `protobuf:"bytes,6,rep,name=uint32s_kv,json=uint32sKv,proto3" json:"uint32s_kv,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"` // 写入uint32key为1-64索引值value为uint32数值。index超限会丢弃
FlagsWithExpireKv map[uint32]*FlagWithExpire `protobuf:"bytes,7,rep,name=flags_with_expire_kv,json=flagsWithExpireKv,proto3" json:"flags_with_expire_kv,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // 写入标志位key为1-64索引值index超限会丢弃
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
@@ -1218,6 +1224,7 @@ func (x *WriteItem) GetUserid() string {
return ""
}
// Deprecated: Marked as deprecated in cmd.proto.
func (x *WriteItem) GetWriteBytes() *Bytes {
if x != nil {
return x.WriteBytes
@@ -1225,6 +1232,7 @@ func (x *WriteItem) GetWriteBytes() *Bytes {
return nil
}
// Deprecated: Marked as deprecated in cmd.proto.
func (x *WriteItem) GetWriteUint32S() *Uint32S {
if x != nil {
return x.WriteUint32S
@@ -1232,6 +1240,7 @@ func (x *WriteItem) GetWriteUint32S() *Uint32S {
return nil
}
// Deprecated: Marked as deprecated in cmd.proto.
func (x *WriteItem) GetWriteFlagsWithExpire() *FlagsWithExpire {
if x != nil {
return x.WriteFlagsWithExpire
@@ -1239,6 +1248,27 @@ func (x *WriteItem) GetWriteFlagsWithExpire() *FlagsWithExpire {
return nil
}
func (x *WriteItem) GetBytesKv() map[uint32]uint32 {
if x != nil {
return x.BytesKv
}
return nil
}
func (x *WriteItem) GetUint32SKv() map[uint32]uint32 {
if x != nil {
return x.Uint32SKv
}
return nil
}
func (x *WriteItem) GetFlagsWithExpireKv() map[uint32]*FlagWithExpire {
if x != nil {
return x.FlagsWithExpireKv
}
return nil
}
// Bytes 写入byte区域
type Bytes struct {
state protoimpl.MessageState `protogen:"open.v1"`
@@ -3471,7 +3501,7 @@ type ReadRes struct {
state protoimpl.MessageState `protogen:"open.v1"`
SuccCmdCount uint32 `protobuf:"varint,1,opt,name=succ_cmd_count,json=succCmdCount,proto3" json:"succ_cmd_count,omitempty"` // 成功的命令数量
FailCmdCount uint32 `protobuf:"varint,2,opt,name=fail_cmd_count,json=failCmdCount,proto3" json:"fail_cmd_count,omitempty"` // 失败的命令数量
CmdRes []*ValueItem `protobuf:"bytes,3,rep,name=cmd_res,json=cmdRes,proto3" json:"cmd_res,omitempty"` // 返回的命令
CmdRes []*ValueItem `protobuf:"bytes,3,rep,name=cmd_res,json=cmdRes,proto3" json:"cmd_res,omitempty"` // 返回的命令
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
@@ -3579,11 +3609,17 @@ type ValueItem struct {
state protoimpl.MessageState `protogen:"open.v1"`
CmdIndex uint32 `protobuf:"varint,1,opt,name=cmd_index,json=cmdIndex,proto3" json:"cmd_index,omitempty"` // 命令索引
CmdCode CmdErrorCode `protobuf:"varint,2,opt,name=cmd_code,json=cmdCode,proto3,enum=saasapi.CmdErrorCode" json:"cmd_code,omitempty"` // 状态
Bytes []byte `protobuf:"bytes,3,opt,name=bytes,proto3" json:"bytes,omitempty"` // byte区域
Uint32S []uint32 `protobuf:"varint,4,rep,packed,name=uint32s,proto3" json:"uint32s,omitempty"` // uint32区域
FlagsWithExpire []*FlagWithExpire `protobuf:"bytes,5,rep,name=flags_with_expire,json=flagsWithExpire,proto3" json:"flags_with_expire,omitempty"` // 标志位区域
// Deprecated: Marked as deprecated in cmd.proto.
Bytes []byte `protobuf:"bytes,3,opt,name=bytes,proto3" json:"bytes,omitempty"` // byte区域。!!!弃用
// Deprecated: Marked as deprecated in cmd.proto.
Uint32S []uint32 `protobuf:"varint,4,rep,packed,name=uint32s,proto3" json:"uint32s,omitempty"` // uint32区域。!!!弃用
// Deprecated: Marked as deprecated in cmd.proto.
FlagsWithExpire []*FlagWithExpire `protobuf:"bytes,5,rep,name=flags_with_expire,json=flagsWithExpire,proto3" json:"flags_with_expire,omitempty"` // 标志位区域。!!!弃用
LastModifyTime uint32 `protobuf:"varint,6,opt,name=last_modify_time,json=lastModifyTime,proto3" json:"last_modify_time,omitempty"` // 最后修改时间
Version uint32 `protobuf:"varint,7,opt,name=version,proto3" json:"version,omitempty"` // 存储版本
BytesKv map[uint32]uint32 `protobuf:"bytes,8,rep,name=bytes_kv,json=bytesKv,proto3" json:"bytes_kv,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"` // byte区域
Uint32SKv map[uint32]uint32 `protobuf:"bytes,9,rep,name=uint32s_kv,json=uint32sKv,proto3" json:"uint32s_kv,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"` // uint32区域
FlagsWithExpireKv map[uint32]*FlagWithExpire `protobuf:"bytes,10,rep,name=flags_with_expire_kv,json=flagsWithExpireKv,proto3" json:"flags_with_expire_kv,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // 标志位区域
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
@@ -3632,6 +3668,7 @@ func (x *ValueItem) GetCmdCode() CmdErrorCode {
return CmdErrorCode_OK
}
// Deprecated: Marked as deprecated in cmd.proto.
func (x *ValueItem) GetBytes() []byte {
if x != nil {
return x.Bytes
@@ -3639,6 +3676,7 @@ func (x *ValueItem) GetBytes() []byte {
return nil
}
// Deprecated: Marked as deprecated in cmd.proto.
func (x *ValueItem) GetUint32S() []uint32 {
if x != nil {
return x.Uint32S
@@ -3646,6 +3684,7 @@ func (x *ValueItem) GetUint32S() []uint32 {
return nil
}
// Deprecated: Marked as deprecated in cmd.proto.
func (x *ValueItem) GetFlagsWithExpire() []*FlagWithExpire {
if x != nil {
return x.FlagsWithExpire
@@ -3667,6 +3706,27 @@ func (x *ValueItem) GetVersion() uint32 {
return 0
}
func (x *ValueItem) GetBytesKv() map[uint32]uint32 {
if x != nil {
return x.BytesKv
}
return nil
}
func (x *ValueItem) GetUint32SKv() map[uint32]uint32 {
if x != nil {
return x.Uint32SKv
}
return nil
}
func (x *ValueItem) GetFlagsWithExpireKv() map[uint32]*FlagWithExpire {
if x != nil {
return x.FlagsWithExpireKv
}
return nil
}
// TaskListRes 任务列表返回
type TaskListRes struct {
state protoimpl.MessageState `protogen:"open.v1"`
@@ -5045,13 +5105,26 @@ const file_cmd_proto_rawDesc = "" +
"\x05appid\x18\x02 \x01(\tR\x05appid\x12+\n" +
"\x12is_clear_all_first\x18\x03 \x01(\bR\x0fisClearAllFirst\x123\n" +
"\vwrite_items\x18\x04 \x03(\v2\x12.saasapi.WriteItemR\n" +
"writeItems\"\xdc\x01\n" +
"writeItems\"\x9b\x05\n" +
"\tWriteItem\x12\x16\n" +
"\x06userid\x18\x01 \x01(\tR\x06userid\x12/\n" +
"\vwrite_bytes\x18\x02 \x01(\v2\x0e.saasapi.BytesR\n" +
"writeBytes\x125\n" +
"\rwrite_uint32s\x18\x03 \x01(\v2\x10.saasapi.Uint32sR\fwriteUint32s\x12O\n" +
"\x17write_flags_with_expire\x18\x04 \x01(\v2\x18.saasapi.FlagsWithExpireR\x14writeFlagsWithExpire\"6\n" +
"\x06userid\x18\x01 \x01(\tR\x06userid\x123\n" +
"\vwrite_bytes\x18\x02 \x01(\v2\x0e.saasapi.BytesB\x02\x18\x01R\n" +
"writeBytes\x129\n" +
"\rwrite_uint32s\x18\x03 \x01(\v2\x10.saasapi.Uint32sB\x02\x18\x01R\fwriteUint32s\x12S\n" +
"\x17write_flags_with_expire\x18\x04 \x01(\v2\x18.saasapi.FlagsWithExpireB\x02\x18\x01R\x14writeFlagsWithExpire\x12:\n" +
"\bbytes_kv\x18\x05 \x03(\v2\x1f.saasapi.WriteItem.BytesKvEntryR\abytesKv\x12@\n" +
"\n" +
"uint32s_kv\x18\x06 \x03(\v2!.saasapi.WriteItem.Uint32sKvEntryR\tuint32sKv\x12Z\n" +
"\x14flags_with_expire_kv\x18\a \x03(\v2).saasapi.WriteItem.FlagsWithExpireKvEntryR\x11flagsWithExpireKv\x1a:\n" +
"\fBytesKvEntry\x12\x10\n" +
"\x03key\x18\x01 \x01(\rR\x03key\x12\x14\n" +
"\x05value\x18\x02 \x01(\rR\x05value:\x028\x01\x1a<\n" +
"\x0eUint32sKvEntry\x12\x10\n" +
"\x03key\x18\x01 \x01(\rR\x03key\x12\x14\n" +
"\x05value\x18\x02 \x01(\rR\x05value:\x028\x01\x1a]\n" +
"\x16FlagsWithExpireKvEntry\x12\x10\n" +
"\x03key\x18\x01 \x01(\rR\x03key\x12-\n" +
"\x05value\x18\x02 \x01(\v2\x17.saasapi.FlagWithExpireR\x05value:\x028\x01\"6\n" +
"\x05Bytes\x12\x14\n" +
"\x05bytes\x18\x01 \x01(\fR\x05bytes\x12\x17\n" +
"\aindex_1\x18\x02 \x01(\x04R\x06index1\"<\n" +
@@ -5217,15 +5290,29 @@ const file_cmd_proto_rawDesc = "" +
"\x0efail_cmd_count\x18\x02 \x01(\rR\ffailCmdCount\x12+\n" +
"\acmd_res\x18\x03 \x03(\v2\x12.saasapi.ValueItemR\x06cmdRes\"/\n" +
"\bWriteRes\x12#\n" +
"\rfailed_userid\x18\x03 \x03(\tR\ffailedUserid\"\x93\x02\n" +
"\rfailed_userid\x18\x03 \x03(\tR\ffailedUserid\"\xd2\x05\n" +
"\tValueItem\x12\x1b\n" +
"\tcmd_index\x18\x01 \x01(\rR\bcmdIndex\x120\n" +
"\bcmd_code\x18\x02 \x01(\x0e2\x15.saasapi.CmdErrorCodeR\acmdCode\x12\x14\n" +
"\x05bytes\x18\x03 \x01(\fR\x05bytes\x12\x18\n" +
"\auint32s\x18\x04 \x03(\rR\auint32s\x12C\n" +
"\x11flags_with_expire\x18\x05 \x03(\v2\x17.saasapi.FlagWithExpireR\x0fflagsWithExpire\x12(\n" +
"\bcmd_code\x18\x02 \x01(\x0e2\x15.saasapi.CmdErrorCodeR\acmdCode\x12\x18\n" +
"\x05bytes\x18\x03 \x01(\fB\x02\x18\x01R\x05bytes\x12\x1c\n" +
"\auint32s\x18\x04 \x03(\rB\x02\x18\x01R\auint32s\x12G\n" +
"\x11flags_with_expire\x18\x05 \x03(\v2\x17.saasapi.FlagWithExpireB\x02\x18\x01R\x0fflagsWithExpire\x12(\n" +
"\x10last_modify_time\x18\x06 \x01(\rR\x0elastModifyTime\x12\x18\n" +
"\aversion\x18\a \x01(\rR\aversion\"2\n" +
"\aversion\x18\a \x01(\rR\aversion\x12:\n" +
"\bbytes_kv\x18\b \x03(\v2\x1f.saasapi.ValueItem.BytesKvEntryR\abytesKv\x12@\n" +
"\n" +
"uint32s_kv\x18\t \x03(\v2!.saasapi.ValueItem.Uint32sKvEntryR\tuint32sKv\x12Z\n" +
"\x14flags_with_expire_kv\x18\n" +
" \x03(\v2).saasapi.ValueItem.FlagsWithExpireKvEntryR\x11flagsWithExpireKv\x1a:\n" +
"\fBytesKvEntry\x12\x10\n" +
"\x03key\x18\x01 \x01(\rR\x03key\x12\x14\n" +
"\x05value\x18\x02 \x01(\rR\x05value:\x028\x01\x1a<\n" +
"\x0eUint32sKvEntry\x12\x10\n" +
"\x03key\x18\x01 \x01(\rR\x03key\x12\x14\n" +
"\x05value\x18\x02 \x01(\rR\x05value:\x028\x01\x1a]\n" +
"\x16FlagsWithExpireKvEntry\x12\x10\n" +
"\x03key\x18\x01 \x01(\rR\x03key\x12-\n" +
"\x05value\x18\x02 \x01(\v2\x17.saasapi.FlagWithExpireR\x05value:\x028\x01\"2\n" +
"\vTaskListRes\x12#\n" +
"\x05tasks\x18\x01 \x03(\v2\r.saasapi.TaskR\x05tasks\"\xa7\x01\n" +
"\rTargetListRes\x12G\n" +
@@ -5417,7 +5504,7 @@ func file_cmd_proto_rawDescGZIP() []byte {
}
var file_cmd_proto_enumTypes = make([]protoimpl.EnumInfo, 7)
var file_cmd_proto_msgTypes = make([]protoimpl.MessageInfo, 67)
var file_cmd_proto_msgTypes = make([]protoimpl.MessageInfo, 73)
var file_cmd_proto_goTypes = []any{
(BindType)(0), // 0: saasapi.BindType
(BindSourceType)(0), // 1: saasapi.BindSourceType
@@ -5490,9 +5577,15 @@ var file_cmd_proto_goTypes = []any{
(*ExpData)(nil), // 68: saasapi.ExpData
(*ExpBaseFields)(nil), // 69: saasapi.ExpBaseFields
(*ExpGrantListRes)(nil), // 70: saasapi.ExpGrantListRes
nil, // 71: saasapi.TargetListRes.TargetListEntry
nil, // 72: saasapi.ExpData.ExtFieldsEntry
nil, // 73: saasapi.ExpData.GroupEntry
nil, // 71: saasapi.WriteItem.BytesKvEntry
nil, // 72: saasapi.WriteItem.Uint32sKvEntry
nil, // 73: saasapi.WriteItem.FlagsWithExpireKvEntry
nil, // 74: saasapi.ValueItem.BytesKvEntry
nil, // 75: saasapi.ValueItem.Uint32sKvEntry
nil, // 76: saasapi.ValueItem.FlagsWithExpireKvEntry
nil, // 77: saasapi.TargetListRes.TargetListEntry
nil, // 78: saasapi.ExpData.ExtFieldsEntry
nil, // 79: saasapi.ExpData.GroupEntry
}
var file_cmd_proto_depIdxs = []int32{
8, // 0: saasapi.SaasReq.info:type_name -> saasapi.Info
@@ -5528,76 +5621,84 @@ var file_cmd_proto_depIdxs = []int32{
13, // 30: saasapi.WriteItem.write_bytes:type_name -> saasapi.Bytes
14, // 31: saasapi.WriteItem.write_uint32s:type_name -> saasapi.Uint32s
15, // 32: saasapi.WriteItem.write_flags_with_expire:type_name -> saasapi.FlagsWithExpire
16, // 33: saasapi.FlagsWithExpire.flags_with_expire:type_name -> saasapi.FlagWithExpire
13, // 34: saasapi.ColumnWrite.write_bytes:type_name -> saasapi.Bytes
14, // 35: saasapi.ColumnWrite.write_uint32s:type_name -> saasapi.Uint32s
15, // 36: saasapi.ColumnWrite.write_flags_with_expire:type_name -> saasapi.FlagsWithExpire
23, // 37: saasapi.Task.task_file_infos:type_name -> saasapi.FileInfo
4, // 38: saasapi.Task.status:type_name -> saasapi.TaskStatus
4, // 39: saasapi.TaskList.status_filter:type_name -> saasapi.TaskStatus
24, // 40: saasapi.FileInfo.file_blocks:type_name -> saasapi.FileBlock
53, // 41: saasapi.BindSet.binds:type_name -> saasapi.Bind
53, // 42: saasapi.BindDelete.binds:type_name -> saasapi.Bind
5, // 43: saasapi.ScriptRun.os:type_name -> saasapi.OS
2, // 44: saasapi.SaasRes.code:type_name -> saasapi.ErrorCode
44, // 45: saasapi.SaasRes.info_res:type_name -> saasapi.InfoRes
45, // 46: saasapi.SaasRes.read_res:type_name -> saasapi.ReadRes
46, // 47: saasapi.SaasRes.write_res:type_name -> saasapi.WriteRes
18, // 48: saasapi.SaasRes.task_create_res:type_name -> saasapi.Task
48, // 49: saasapi.SaasRes.task_list_res:type_name -> saasapi.TaskListRes
18, // 50: saasapi.SaasRes.task_run_res:type_name -> saasapi.Task
18, // 51: saasapi.SaasRes.task_delete_res:type_name -> saasapi.Task
18, // 52: saasapi.SaasRes.task_info_res:type_name -> saasapi.Task
49, // 53: saasapi.SaasRes.target_list_res:type_name -> saasapi.TargetListRes
50, // 54: saasapi.SaasRes.target_create_res:type_name -> saasapi.TargetCreateRes
51, // 55: saasapi.SaasRes.target_delete_res:type_name -> saasapi.TargetDeleteRes
54, // 56: saasapi.SaasRes.bind_set_res:type_name -> saasapi.BindSetRes
55, // 57: saasapi.SaasRes.bind_delete_res:type_name -> saasapi.BindDeleteRes
57, // 58: saasapi.SaasRes.grant_list_res:type_name -> saasapi.GrantListRes
31, // 59: saasapi.SaasRes.grant_add_res:type_name -> saasapi.Grant
31, // 60: saasapi.SaasRes.grant_delete_res:type_name -> saasapi.Grant
58, // 61: saasapi.SaasRes.script_run_res:type_name -> saasapi.ScriptRunRes
60, // 62: saasapi.SaasRes.script_create_res:type_name -> saasapi.ScriptCreateRes
61, // 63: saasapi.SaasRes.script_list_res:type_name -> saasapi.ScriptListRes
63, // 64: saasapi.SaasRes.script_delete_res:type_name -> saasapi.ScriptDeleteRes
62, // 65: saasapi.SaasRes.script_get_res:type_name -> saasapi.ScriptGetRes
64, // 66: saasapi.SaasRes.script_use_res:type_name -> saasapi.ScriptUseRes
65, // 67: saasapi.SaasRes.exp_list_res:type_name -> saasapi.ExpListRes
67, // 68: saasapi.SaasRes.exp_get_res:type_name -> saasapi.ExpGetRes
70, // 69: saasapi.SaasRes.exp_grant_list_res:type_name -> saasapi.ExpGrantListRes
41, // 70: saasapi.SaasRes.exp_grant_add_res:type_name -> saasapi.ExpGrant
41, // 71: saasapi.SaasRes.exp_grant_delete_res:type_name -> saasapi.ExpGrant
43, // 72: saasapi.InfoRes.dataspace:type_name -> saasapi.DataSpace
47, // 73: saasapi.ReadRes.cmd_res:type_name -> saasapi.ValueItem
3, // 74: saasapi.ValueItem.cmd_code:type_name -> saasapi.CmdErrorCode
16, // 75: saasapi.ValueItem.flags_with_expire:type_name -> saasapi.FlagWithExpire
18, // 76: saasapi.TaskListRes.tasks:type_name -> saasapi.Task
71, // 77: saasapi.TargetListRes.target_list:type_name -> saasapi.TargetListRes.TargetListEntry
53, // 78: saasapi.Binds.binds:type_name -> saasapi.Bind
0, // 79: saasapi.Bind.bind_type:type_name -> saasapi.BindType
1, // 80: saasapi.Bind.bind_source:type_name -> saasapi.BindSourceType
56, // 81: saasapi.BindSetRes.errors:type_name -> saasapi.BindError
56, // 82: saasapi.BindDeleteRes.errors:type_name -> saasapi.BindError
31, // 83: saasapi.GrantListRes.from:type_name -> saasapi.Grant
31, // 84: saasapi.GrantListRes.to:type_name -> saasapi.Grant
59, // 85: saasapi.ScriptCreateRes.script_info:type_name -> saasapi.ScriptInfo
59, // 86: saasapi.ScriptListRes.script_info:type_name -> saasapi.ScriptInfo
59, // 87: saasapi.ScriptGetRes.script_info:type_name -> saasapi.ScriptInfo
59, // 88: saasapi.ScriptDeleteRes.script_info:type_name -> saasapi.ScriptInfo
59, // 89: saasapi.ScriptUseRes.script_info:type_name -> saasapi.ScriptInfo
66, // 90: saasapi.ExpListRes.buckets:type_name -> saasapi.ExpBucket
68, // 91: saasapi.ExpGetRes.exp_data:type_name -> saasapi.ExpData
69, // 92: saasapi.ExpData.base_fields:type_name -> saasapi.ExpBaseFields
72, // 93: saasapi.ExpData.ext_fields:type_name -> saasapi.ExpData.ExtFieldsEntry
73, // 94: saasapi.ExpData.group:type_name -> saasapi.ExpData.GroupEntry
41, // 95: saasapi.ExpGrantListRes.from:type_name -> saasapi.ExpGrant
41, // 96: saasapi.ExpGrantListRes.to:type_name -> saasapi.ExpGrant
52, // 97: saasapi.TargetListRes.TargetListEntry.value:type_name -> saasapi.Binds
98, // [98:98] is the sub-list for method output_type
98, // [98:98] is the sub-list for method input_type
98, // [98:98] is the sub-list for extension type_name
98, // [98:98] is the sub-list for extension extendee
0, // [0:98] is the sub-list for field type_name
71, // 33: saasapi.WriteItem.bytes_kv:type_name -> saasapi.WriteItem.BytesKvEntry
72, // 34: saasapi.WriteItem.uint32s_kv:type_name -> saasapi.WriteItem.Uint32sKvEntry
73, // 35: saasapi.WriteItem.flags_with_expire_kv:type_name -> saasapi.WriteItem.FlagsWithExpireKvEntry
16, // 36: saasapi.FlagsWithExpire.flags_with_expire:type_name -> saasapi.FlagWithExpire
13, // 37: saasapi.ColumnWrite.write_bytes:type_name -> saasapi.Bytes
14, // 38: saasapi.ColumnWrite.write_uint32s:type_name -> saasapi.Uint32s
15, // 39: saasapi.ColumnWrite.write_flags_with_expire:type_name -> saasapi.FlagsWithExpire
23, // 40: saasapi.Task.task_file_infos:type_name -> saasapi.FileInfo
4, // 41: saasapi.Task.status:type_name -> saasapi.TaskStatus
4, // 42: saasapi.TaskList.status_filter:type_name -> saasapi.TaskStatus
24, // 43: saasapi.FileInfo.file_blocks:type_name -> saasapi.FileBlock
53, // 44: saasapi.BindSet.binds:type_name -> saasapi.Bind
53, // 45: saasapi.BindDelete.binds:type_name -> saasapi.Bind
5, // 46: saasapi.ScriptRun.os:type_name -> saasapi.OS
2, // 47: saasapi.SaasRes.code:type_name -> saasapi.ErrorCode
44, // 48: saasapi.SaasRes.info_res:type_name -> saasapi.InfoRes
45, // 49: saasapi.SaasRes.read_res:type_name -> saasapi.ReadRes
46, // 50: saasapi.SaasRes.write_res:type_name -> saasapi.WriteRes
18, // 51: saasapi.SaasRes.task_create_res:type_name -> saasapi.Task
48, // 52: saasapi.SaasRes.task_list_res:type_name -> saasapi.TaskListRes
18, // 53: saasapi.SaasRes.task_run_res:type_name -> saasapi.Task
18, // 54: saasapi.SaasRes.task_delete_res:type_name -> saasapi.Task
18, // 55: saasapi.SaasRes.task_info_res:type_name -> saasapi.Task
49, // 56: saasapi.SaasRes.target_list_res:type_name -> saasapi.TargetListRes
50, // 57: saasapi.SaasRes.target_create_res:type_name -> saasapi.TargetCreateRes
51, // 58: saasapi.SaasRes.target_delete_res:type_name -> saasapi.TargetDeleteRes
54, // 59: saasapi.SaasRes.bind_set_res:type_name -> saasapi.BindSetRes
55, // 60: saasapi.SaasRes.bind_delete_res:type_name -> saasapi.BindDeleteRes
57, // 61: saasapi.SaasRes.grant_list_res:type_name -> saasapi.GrantListRes
31, // 62: saasapi.SaasRes.grant_add_res:type_name -> saasapi.Grant
31, // 63: saasapi.SaasRes.grant_delete_res:type_name -> saasapi.Grant
58, // 64: saasapi.SaasRes.script_run_res:type_name -> saasapi.ScriptRunRes
60, // 65: saasapi.SaasRes.script_create_res:type_name -> saasapi.ScriptCreateRes
61, // 66: saasapi.SaasRes.script_list_res:type_name -> saasapi.ScriptListRes
63, // 67: saasapi.SaasRes.script_delete_res:type_name -> saasapi.ScriptDeleteRes
62, // 68: saasapi.SaasRes.script_get_res:type_name -> saasapi.ScriptGetRes
64, // 69: saasapi.SaasRes.script_use_res:type_name -> saasapi.ScriptUseRes
65, // 70: saasapi.SaasRes.exp_list_res:type_name -> saasapi.ExpListRes
67, // 71: saasapi.SaasRes.exp_get_res:type_name -> saasapi.ExpGetRes
70, // 72: saasapi.SaasRes.exp_grant_list_res:type_name -> saasapi.ExpGrantListRes
41, // 73: saasapi.SaasRes.exp_grant_add_res:type_name -> saasapi.ExpGrant
41, // 74: saasapi.SaasRes.exp_grant_delete_res:type_name -> saasapi.ExpGrant
43, // 75: saasapi.InfoRes.dataspace:type_name -> saasapi.DataSpace
47, // 76: saasapi.ReadRes.cmd_res:type_name -> saasapi.ValueItem
3, // 77: saasapi.ValueItem.cmd_code:type_name -> saasapi.CmdErrorCode
16, // 78: saasapi.ValueItem.flags_with_expire:type_name -> saasapi.FlagWithExpire
74, // 79: saasapi.ValueItem.bytes_kv:type_name -> saasapi.ValueItem.BytesKvEntry
75, // 80: saasapi.ValueItem.uint32s_kv:type_name -> saasapi.ValueItem.Uint32sKvEntry
76, // 81: saasapi.ValueItem.flags_with_expire_kv:type_name -> saasapi.ValueItem.FlagsWithExpireKvEntry
18, // 82: saasapi.TaskListRes.tasks:type_name -> saasapi.Task
77, // 83: saasapi.TargetListRes.target_list:type_name -> saasapi.TargetListRes.TargetListEntry
53, // 84: saasapi.Binds.binds:type_name -> saasapi.Bind
0, // 85: saasapi.Bind.bind_type:type_name -> saasapi.BindType
1, // 86: saasapi.Bind.bind_source:type_name -> saasapi.BindSourceType
56, // 87: saasapi.BindSetRes.errors:type_name -> saasapi.BindError
56, // 88: saasapi.BindDeleteRes.errors:type_name -> saasapi.BindError
31, // 89: saasapi.GrantListRes.from:type_name -> saasapi.Grant
31, // 90: saasapi.GrantListRes.to:type_name -> saasapi.Grant
59, // 91: saasapi.ScriptCreateRes.script_info:type_name -> saasapi.ScriptInfo
59, // 92: saasapi.ScriptListRes.script_info:type_name -> saasapi.ScriptInfo
59, // 93: saasapi.ScriptGetRes.script_info:type_name -> saasapi.ScriptInfo
59, // 94: saasapi.ScriptDeleteRes.script_info:type_name -> saasapi.ScriptInfo
59, // 95: saasapi.ScriptUseRes.script_info:type_name -> saasapi.ScriptInfo
66, // 96: saasapi.ExpListRes.buckets:type_name -> saasapi.ExpBucket
68, // 97: saasapi.ExpGetRes.exp_data:type_name -> saasapi.ExpData
69, // 98: saasapi.ExpData.base_fields:type_name -> saasapi.ExpBaseFields
78, // 99: saasapi.ExpData.ext_fields:type_name -> saasapi.ExpData.ExtFieldsEntry
79, // 100: saasapi.ExpData.group:type_name -> saasapi.ExpData.GroupEntry
41, // 101: saasapi.ExpGrantListRes.from:type_name -> saasapi.ExpGrant
41, // 102: saasapi.ExpGrantListRes.to:type_name -> saasapi.ExpGrant
16, // 103: saasapi.WriteItem.FlagsWithExpireKvEntry.value:type_name -> saasapi.FlagWithExpire
16, // 104: saasapi.ValueItem.FlagsWithExpireKvEntry.value:type_name -> saasapi.FlagWithExpire
52, // 105: saasapi.TargetListRes.TargetListEntry.value:type_name -> saasapi.Binds
106, // [106:106] is the sub-list for method output_type
106, // [106:106] is the sub-list for method input_type
106, // [106:106] is the sub-list for extension type_name
106, // [106:106] is the sub-list for extension extendee
0, // [0:106] is the sub-list for field type_name
}
func init() { file_cmd_proto_init() }
@@ -5670,7 +5771,7 @@ func file_cmd_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: unsafe.Slice(unsafe.StringData(file_cmd_proto_rawDesc), len(file_cmd_proto_rawDesc)),
NumEnums: 7,
NumMessages: 67,
NumMessages: 73,
NumExtensions: 0,
NumServices: 0,
},

View File

@@ -73,9 +73,12 @@ message Write {
// WriteItem 写入命令
message WriteItem {
string userid = 1; // 用户ID
Bytes write_bytes = 2; // byte区域
Uint32s write_uint32s = 3; // uint32区域
FlagsWithExpire write_flags_with_expire = 4; // 标志位区域
Bytes write_bytes = 2 [deprecated = true]; // byte区域。!!!弃用请使用bytes_kv
Uint32s write_uint32s = 3 [deprecated = true]; // uint32区域。!!!弃用请使用uint32s_kv
FlagsWithExpire write_flags_with_expire = 4 [deprecated = true]; // 标志位区域。!!!弃用请使用flags_with_expire_kv
map<uint32, uint32> bytes_kv = 5; // 写入bytekey为1-64索引值value为0-255数值。index/value超限会丢弃
map<uint32, uint32> uint32s_kv = 6; // 写入uint32key为1-64索引值value为uint32数值。index超限会丢弃
map<uint32, FlagWithExpire> flags_with_expire_kv = 7; // 写入标志位key为1-64索引值index超限会丢弃
}
// Bytes 写入byte区域
@@ -330,7 +333,7 @@ message InfoRes {
message ReadRes {
uint32 succ_cmd_count = 1; // 成功的命令数量
uint32 fail_cmd_count = 2; // 失败的命令数量
repeated ValueItem cmd_res = 3; // 返回的命令
repeated ValueItem cmd_res = 3 ; // 返回的命令
}
// WriteRes 写记录返回
@@ -344,11 +347,14 @@ message WriteRes {
message ValueItem {
uint32 cmd_index = 1; // 命令索引
CmdErrorCode cmd_code = 2; // 状态
bytes bytes = 3; // byte区域
repeated uint32 uint32s = 4; // uint32区域
repeated FlagWithExpire flags_with_expire = 5; // 标志位区域
bytes bytes = 3 [deprecated = true]; // byte区域。!!!弃用
repeated uint32 uint32s = 4 [deprecated = true]; // uint32区域。!!!弃用
repeated FlagWithExpire flags_with_expire = 5 [deprecated = true]; // 标志位区域。!!!弃用
uint32 last_modify_time = 6; // 最后修改时间
uint32 version = 7; // 存储版本
map<uint32, uint32> bytes_kv = 8; // byte区域
map<uint32, uint32> uint32s_kv = 9; // uint32区域
map<uint32, FlagWithExpire> flags_with_expire_kv = 10; // 标志位区域
}
// TaskListRes 任务列表返回

View File

@@ -280,13 +280,11 @@ func (d *Daemon) parseQuery(q url.Values, lineNum int) (writeItem *saasapi.Write
writeItem = &saasapi.WriteItem{
Userid: userid,
BytesKv: map[uint32]uint32{},
Uint32SKv: map[uint32]uint32{},
FlagsWithExpireKv: map[uint32]*saasapi.FlagWithExpire{},
}
// 临时存储按index排序后再写入
u8Map := make(map[uint64]uint8)
u32Map := make(map[uint64]uint32)
flagMap := make(map[uint64]*saasapi.FlagWithExpire)
for key, value := range q {
parts := strings.Split(strings.ToLower(key), ".")
if len(parts) == 2 {
@@ -309,9 +307,7 @@ func (d *Daemon) parseQuery(q url.Values, lineNum int) (writeItem *saasapi.Write
return
}
if _, exists := u8Map[index]; !exists {
u8Map[index] = uint8(nValue)
}
writeItem.BytesKv[uint32(index)] = uint32(nValue)
case "u32":
index, err := strconv.ParseUint(parts[1], 10, 8)
@@ -330,9 +326,7 @@ func (d *Daemon) parseQuery(q url.Values, lineNum int) (writeItem *saasapi.Write
return
}
if _, exists := u32Map[index]; !exists {
u32Map[index] = uint32(nValue)
}
writeItem.Uint32SKv[uint32(index)] = uint32(nValue)
case "flag":
index, err := strconv.ParseUint(parts[1], 10, 8)
@@ -345,10 +339,6 @@ func (d *Daemon) parseQuery(q url.Values, lineNum int) (writeItem *saasapi.Write
return
}
if _, exists := flagMap[index]; exists {
continue
}
flag := &saasapi.FlagWithExpire{}
switch strings.ToLower(value[0]) {
case "true":
@@ -379,40 +369,7 @@ func (d *Daemon) parseQuery(q url.Values, lineNum int) (writeItem *saasapi.Write
}
}
flagMap[index] = flag
}
}
}
// 按index顺序写入u8
if len(u8Map) > 0 {
writeItem.WriteBytes = &saasapi.Bytes{}
for i := uint64(1); i <= uint64(saasapi.MAX_U8); i++ {
if v, exists := u8Map[i]; exists {
writeItem.WriteBytes.Bytes = append(writeItem.WriteBytes.Bytes, v)
writeItem.WriteBytes.Index_1 |= 1 << (i - 1)
}
}
}
// 按index顺序写入u32
if len(u32Map) > 0 {
writeItem.WriteUint32S = &saasapi.Uint32S{}
for i := uint64(1); i <= uint64(saasapi.MAX_U32); i++ {
if v, exists := u32Map[i]; exists {
writeItem.WriteUint32S.Uint32S = append(writeItem.WriteUint32S.Uint32S, v)
writeItem.WriteUint32S.Index_1 |= 1 << (i - 1)
}
}
}
// 按index顺序写入flag
if len(flagMap) > 0 {
writeItem.WriteFlagsWithExpire = &saasapi.FlagsWithExpire{}
for i := uint64(1); i <= uint64(saasapi.MAX_FLAG); i++ {
if v, exists := flagMap[i]; exists {
writeItem.WriteFlagsWithExpire.FlagsWithExpire = append(writeItem.WriteFlagsWithExpire.FlagsWithExpire, v)
writeItem.WriteFlagsWithExpire.Index_1 |= 1 << (i - 1)
writeItem.FlagsWithExpireKv[uint32(index)] = flag
}
}
}

1
datasample/test.txt Normal file
View File

@@ -0,0 +1 @@
{"userid":"test_user", "writeBytes": {"bytes": "AQ==", "index1": "1"}, "writeUint32s": {"uint32s": [112547657,28270208],"index1": "3"}}

1
datasample/testv2.txt Normal file
View File

@@ -0,0 +1 @@
{"userid":"test_user", "bytesKv": {"1": 1,"2": 2,"3": 3,"4": 4,"5": 50,"6": 6,"40": 40,"55": 55,"100": 100}, "uint32sKv": {"1": 100000,"2": 200000,"3": 300000,"4": 400000,"5": 500000,"6": 600000,"55": 5500000,"100": 10000000},"flagsWithExpireKv": {"1": {"flag": true,"expire": 1865854386},"2": {"flag": false,"expire": 1865854386}, "64": {"expire": 1765854386}}}

View File

@@ -4,7 +4,7 @@ set -e
docker buildx build --platform linux/amd64 \
-t rta-docker.pkg.coding.net/public/docker/saastool:latest \
-t rta-docker.pkg.coding.net/public/docker/saastool:2025121210 \
-t rta-docker.pkg.coding.net/public/docker/saastool:2025121617 \
-o type=registry \
-f saastool.Dockerfile \
../ ;