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

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

View File

@@ -279,14 +279,12 @@ func (d *Daemon) parseQuery(q url.Values, lineNum int) (writeItem *saasapi.Write
}
writeItem = &saasapi.WriteItem{
Userid: userid,
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
}
}
}