| 626 | } |
| 627 | |
| 628 | func parquetToProtoAttrs(parquetAttrs []Attribute) []*v1.KeyValue { |
| 629 | var protoAttrs []*v1.KeyValue |
| 630 | |
| 631 | for _, attr := range parquetAttrs { |
| 632 | var protoVal v1.AnyValue |
| 633 | |
| 634 | if !attr.IsArray { |
| 635 | switch { |
| 636 | case len(attr.Value) > 0: |
| 637 | protoVal.Value = &v1.AnyValue_StringValue{StringValue: attr.Value[0]} |
| 638 | case len(attr.ValueInt) > 0: |
| 639 | protoVal.Value = &v1.AnyValue_IntValue{IntValue: attr.ValueInt[0]} |
| 640 | case len(attr.ValueDouble) > 0: |
| 641 | protoVal.Value = &v1.AnyValue_DoubleValue{DoubleValue: attr.ValueDouble[0]} |
| 642 | case len(attr.ValueBool) > 0: |
| 643 | protoVal.Value = &v1.AnyValue_BoolValue{BoolValue: attr.ValueBool[0]} |
| 644 | case attr.ValueUnsupported != nil: |
| 645 | _ = jsonpb.Unmarshal(bytes.NewBufferString(*attr.ValueUnsupported), &protoVal) |
| 646 | } |
| 647 | } else { |
| 648 | switch { |
| 649 | case len(attr.Value) > 0: |
| 650 | values := make([]*v1.AnyValue, len(attr.Value)) |
| 651 | anyValues := make([]v1.AnyValue, len(values)) |
| 652 | strValues := make([]v1.AnyValue_StringValue, len(values)) |
| 653 | for i, v := range attr.Value { |
| 654 | s := &strValues[i] |
| 655 | s.StringValue = v |
| 656 | values[i] = &anyValues[i] |
| 657 | values[i].Value = s |
| 658 | } |
| 659 | protoVal.Value = &v1.AnyValue_ArrayValue{ArrayValue: &v1.ArrayValue{Values: values}} |
| 660 | |
| 661 | case len(attr.ValueInt) > 0: |
| 662 | values := make([]*v1.AnyValue, len(attr.ValueInt)) |
| 663 | anyValues := make([]v1.AnyValue, len(values)) |
| 664 | intValues := make([]v1.AnyValue_IntValue, len(values)) |
| 665 | for i, v := range attr.ValueInt { |
| 666 | n := &intValues[i] |
| 667 | n.IntValue = v |
| 668 | values[i] = &anyValues[i] |
| 669 | values[i].Value = n |
| 670 | } |
| 671 | protoVal.Value = &v1.AnyValue_ArrayValue{ArrayValue: &v1.ArrayValue{Values: values}} |
| 672 | |
| 673 | case len(attr.ValueDouble) > 0: |
| 674 | values := make([]*v1.AnyValue, len(attr.ValueDouble)) |
| 675 | anyValues := make([]v1.AnyValue, len(values)) |
| 676 | doubleValues := make([]v1.AnyValue_DoubleValue, len(values)) |
| 677 | for i, v := range attr.ValueDouble { |
| 678 | n := &doubleValues[i] |
| 679 | n.DoubleValue = v |
| 680 | values[i] = &anyValues[i] |
| 681 | values[i].Value = n |
| 682 | } |
| 683 | protoVal.Value = &v1.AnyValue_ArrayValue{ArrayValue: &v1.ArrayValue{Values: values}} |
| 684 | |
| 685 | case len(attr.ValueBool) > 0: |