package types
import (
)
const (
pgBool = 16
pgInt2 = 21
pgInt4 = 23
pgInt8 = 20
pgFloat4 = 700
pgFloat8 = 701
pgText = 25
pgVarchar = 1043
pgBytea = 17
pgJSON = 114
pgJSONB = 3802
pgTimestamp = 1114
pgTimestamptz = 1184
pgInt32Array = 1007
pgInt8Array = 1016
pgFloat8Array = 1022
pgStringArray = 1009
pgUUID = 2950
)
type ColumnInfo = pool.ColumnInfo
type RawValue struct {
Type int32
Value string
}
func ( RawValue) ( []byte, int) ([]byte, error) {
return AppendString(, .Value, ), nil
}
func ( RawValue) () ([]byte, error) {
return pgjson.Marshal(.Value)
}
func ( ColumnInfo, Reader, int) (interface{}, error) {
switch .DataType {
case pgBool:
return ScanBool(, )
case pgInt2:
, := scanInt64(, , 16)
if != nil {
return nil,
}
return int16(), nil
case pgInt4:
, := scanInt64(, , 32)
if != nil {
return nil,
}
return int32(), nil
case pgInt8:
return ScanInt64(, )
case pgFloat4:
return ScanFloat32(, )
case pgFloat8:
return ScanFloat64(, )
case pgBytea:
return ScanBytes(, )
case pgText, pgVarchar, pgUUID:
return ScanString(, )
case pgJSON, pgJSONB:
, := ScanString(, )
if != nil {
return nil,
}
return json.RawMessage(), nil
case pgTimestamp:
return ScanTime(, )
case pgTimestamptz:
return ScanTime(, )
case pgInt32Array:
return scanInt64Array(, )
case pgInt8Array:
return scanInt64Array(, )
case pgFloat8Array:
return scanFloat64Array(, )
case pgStringArray:
return scanStringArray(, )
default:
, := ScanString(, )
if != nil {
return nil,
}
return RawValue{
Type: .DataType,
Value: ,
}, nil
}
}