| 8407 | } |
| 8408 | |
| 8409 | func (cmd *VectorScoreAttribSliceCmd) readReply(rd *proto.Reader) error { |
| 8410 | replyType, err := rd.PeekReplyType() |
| 8411 | if err != nil { |
| 8412 | return err |
| 8413 | } |
| 8414 | |
| 8415 | if replyType == proto.RespMap { |
| 8416 | n, err := rd.ReadMapLen() |
| 8417 | if err != nil { |
| 8418 | return err |
| 8419 | } |
| 8420 | cmd.val = make([]VectorScoreAttrib, n) |
| 8421 | for i := 0; i < n; i++ { |
| 8422 | name, err := rd.ReadString() |
| 8423 | if err != nil { |
| 8424 | return err |
| 8425 | } |
| 8426 | if err := rd.ReadFixedArrayLen(2); err != nil { |
| 8427 | return err |
| 8428 | } |
| 8429 | score, err := rd.ReadFloat() |
| 8430 | if err != nil { |
| 8431 | return err |
| 8432 | } |
| 8433 | attrib, err := readVectorAttribStringOrNil(rd) |
| 8434 | if err != nil { |
| 8435 | return err |
| 8436 | } |
| 8437 | cmd.val[i] = VectorScoreAttrib{Name: name, Score: score, Attribs: attrib} |
| 8438 | } |
| 8439 | return nil |
| 8440 | } |
| 8441 | |
| 8442 | n, err := rd.ReadArrayLen() |
| 8443 | if err != nil { |
| 8444 | return err |
| 8445 | } |
| 8446 | if n%3 != 0 { |
| 8447 | return fmt.Errorf("redis: got %d elements in the VSIM array, wanted a multiple of 3", n) |
| 8448 | } |
| 8449 | cmd.val = make([]VectorScoreAttrib, n/3) |
| 8450 | for i := range cmd.val { |
| 8451 | name, err := rd.ReadString() |
| 8452 | if err != nil { |
| 8453 | return err |
| 8454 | } |
| 8455 | score, err := rd.ReadFloat() |
| 8456 | if err != nil { |
| 8457 | return err |
| 8458 | } |
| 8459 | attrib, err := readVectorAttribStringOrNil(rd) |
| 8460 | if err != nil { |
| 8461 | return err |
| 8462 | } |
| 8463 | cmd.val[i] = VectorScoreAttrib{Name: name, Score: score, Attribs: attrib} |
| 8464 | } |
| 8465 | return nil |
| 8466 | } |