| 611 | } |
| 612 | |
| 613 | func parquetToProtoAttrs(parquetAttrs []Attribute) []*v1.KeyValue { |
| 614 | var protoAttrs []*v1.KeyValue |
| 615 | |
| 616 | for _, attr := range parquetAttrs { |
| 617 | var protoVal v1.AnyValue |
| 618 | |
| 619 | if !attr.IsArray { |
| 620 | switch { |
| 621 | case len(attr.Value) > 0: |
| 622 | protoVal.Value = &v1.AnyValue_StringValue{StringValue: attr.Value[0]} |
| 623 | case len(attr.ValueInt) > 0: |
| 624 | protoVal.Value = &v1.AnyValue_IntValue{IntValue: attr.ValueInt[0]} |
| 625 | case len(attr.ValueDouble) > 0: |
| 626 | protoVal.Value = &v1.AnyValue_DoubleValue{DoubleValue: attr.ValueDouble[0]} |
| 627 | case len(attr.ValueBool) > 0: |
| 628 | protoVal.Value = &v1.AnyValue_BoolValue{BoolValue: attr.ValueBool[0]} |
| 629 | case attr.ValueUnsupported != nil: |
| 630 | _ = jsonpb.Unmarshal(bytes.NewBufferString(*attr.ValueUnsupported), &protoVal) |
| 631 | default: |
| 632 | continue |
| 633 | } |
| 634 | } else { |
| 635 | switch { |
| 636 | case len(attr.Value) > 0: |
| 637 | values := make([]*v1.AnyValue, len(attr.Value)) |
| 638 | |
| 639 | anyValues := make([]v1.AnyValue, len(values)) |
| 640 | strValues := make([]v1.AnyValue_StringValue, len(values)) |
| 641 | for i, v := range attr.Value { |
| 642 | s := &strValues[i] |
| 643 | s.StringValue = v |
| 644 | values[i] = &anyValues[i] |
| 645 | values[i].Value = s |
| 646 | } |
| 647 | |
| 648 | protoVal.Value = &v1.AnyValue_ArrayValue{ArrayValue: &v1.ArrayValue{Values: values}} |
| 649 | case len(attr.ValueInt) > 0: |
| 650 | values := make([]*v1.AnyValue, len(attr.ValueInt)) |
| 651 | |
| 652 | anyValues := make([]v1.AnyValue, len(values)) |
| 653 | intValues := make([]v1.AnyValue_IntValue, len(values)) |
| 654 | for i, v := range attr.ValueInt { |
| 655 | n := &intValues[i] |
| 656 | n.IntValue = v |
| 657 | values[i] = &anyValues[i] |
| 658 | values[i].Value = n |
| 659 | } |
| 660 | |
| 661 | protoVal.Value = &v1.AnyValue_ArrayValue{ArrayValue: &v1.ArrayValue{Values: values}} |
| 662 | case len(attr.ValueDouble) > 0: |
| 663 | values := make([]*v1.AnyValue, len(attr.ValueDouble)) |
| 664 | |
| 665 | anyValues := make([]v1.AnyValue, len(values)) |
| 666 | doubleValues := make([]v1.AnyValue_DoubleValue, len(values)) |
| 667 | for i, v := range attr.ValueDouble { |
| 668 | n := &doubleValues[i] |
| 669 | n.DoubleValue = v |
| 670 | values[i] = &anyValues[i] |