MCPcopy Create free account
hub / github.com/cloudquery/cloudquery / appendValue

Function appendValue

plugins/destination/bigquery/client/read.go:70–177  ·  view source on GitHub ↗
(builder array.Builder, value any)

Source from the content-addressed store, hash-verified

68}
69
70func appendValue(builder array.Builder, value any) error {
71 if value == nil {
72 builder.AppendNull()
73 return nil
74 }
75 switch bldr := builder.(type) {
76 case *array.StructBuilder:
77 m := value.([]bigquery.Value)
78 bldr.Append(true)
79 for f := 0; f < bldr.NumField(); f++ {
80 fieldBldr := bldr.FieldBuilder(f)
81 if err := appendValue(fieldBldr, m[f]); err != nil {
82 return err
83 }
84 }
85 return nil
86 case array.ListLikeBuilder:
87 lst := value.([]bigquery.Value)
88 if lst == nil {
89 bldr.AppendNull()
90 return nil
91 }
92 bldr.Append(true)
93 valBuilder := bldr.ValueBuilder()
94 for _, v := range lst {
95 if err := appendValue(valBuilder, v); err != nil {
96 return err
97 }
98 }
99 return nil
100 case *array.Time32Builder:
101 t := value.(civil.Time)
102 unit := bldr.Type().(*arrow.Time32Type).Unit
103 ts := stringForTime(t, unit)
104 t32, err := arrow.Time32FromString(ts, unit)
105 if err != nil {
106 return err
107 }
108 bldr.Append(t32)
109 return nil
110 case *array.Time64Builder:
111 t := value.(civil.Time)
112 unit := bldr.Type().(*arrow.Time64Type).Unit
113 ts := stringForTime(t, unit)
114 t64, err := arrow.Time64FromString(ts, unit)
115 if err != nil {
116 return err
117 }
118 bldr.Append(t64)
119 return nil
120 case *array.DayTimeIntervalBuilder:
121 t := value.([]bigquery.Value)
122 bldr.Append(arrow.DayTimeInterval{
123 Days: int32(t[0].(int64)),
124 Milliseconds: int32(t[1].(int64)),
125 })
126 return nil
127 case *array.MonthDayNanoIntervalBuilder:

Callers 1

ReadMethod · 0.70

Calls 5

stringForTimeFunction · 0.85
parseRatFunction · 0.85
AppendMethod · 0.80
ErrorfMethod · 0.80
TypeMethod · 0.45

Tested by

no test coverage detected