MCPcopy
hub / github.com/gogf/gf / ConvertValueForLocal

Method ConvertValueForLocal

contrib/drivers/pgsql/pgsql_convert.go:159–273  ·  view source on GitHub ↗

ConvertValueForLocal converts value to local Golang type of value according field type name from database. The parameter `fieldType` is in lower case, like: `int2`, `int4`, `int8`, `_int2`, `_int4`, `_int8`, `uuid`, `_uuid`, etc. See: https://www.postgresql.org/docs/current/datatype.html PostgreSQ

(ctx context.Context, fieldType string, fieldValue any)

Source from the content-addressed store, hash-verified

157// - _date (date[]), _timestamp (timestamp[]), _timestamptz (timestamptz[])
158// - _jsonb (jsonb[]), _json (json[])
159func (d *Driver) ConvertValueForLocal(ctx context.Context, fieldType string, fieldValue any) (any, error) {
160 typeName, _ := gregex.ReplaceString(`\(.+\)`, "", fieldType)
161 typeName = strings.ToLower(typeName)
162
163 // Basic types are mostly handled by Core layer; handle array types and special-case bytea here.
164 switch typeName {
165
166 // []byte
167 case "bytea":
168 if v, ok := fieldValue.([]byte); ok {
169 return v, nil
170 }
171 return fieldValue, nil
172
173 // []int32
174 case "_int2", "_int4":
175 var result pq.Int32Array
176 if err := result.Scan(fieldValue); err != nil {
177 return nil, err
178 }
179 return []int32(result), nil
180
181 // []int64
182 case "_int8":
183 var result pq.Int64Array
184 if err := result.Scan(fieldValue); err != nil {
185 return nil, err
186 }
187 return []int64(result), nil
188
189 // []float32
190 case "_float4":
191 var result pq.Float32Array
192 if err := result.Scan(fieldValue); err != nil {
193 return nil, err
194 }
195 return []float32(result), nil
196
197 // []float64
198 case "_float8":
199 var result pq.Float64Array
200 if err := result.Scan(fieldValue); err != nil {
201 return nil, err
202 }
203 return []float64(result), nil
204
205 // []bool
206 case "_bool":
207 var result pq.BoolArray
208 if err := result.Scan(fieldValue); err != nil {
209 return nil, err
210 }
211 return []bool(result), nil
212
213 // []string
214 case "_varchar", "_text", "_char", "_bpchar":
215 var result pq.StringArray
216 if err := result.Scan(fieldValue); err != nil {

Callers

nothing calls this directly

Calls 5

ReplaceStringFunction · 0.92
StringFunction · 0.92
ScanMethod · 0.65
ConvertValueForLocalMethod · 0.65
ParseMethod · 0.45

Tested by

no test coverage detected