Add support for json.RawMessage type and update dependencies.
This commit is contained in:
parent
7b56e1a621
commit
ab3a265a5c
4 changed files with 109 additions and 6 deletions
96
tests/postgres/json_test.go
Normal file
96
tests/postgres/json_test.go
Normal file
|
|
@ -0,0 +1,96 @@
|
|||
package postgres
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/go-jet/jet/v2/tests/.gentestdata/jetdb/test_sample/model"
|
||||
"github.com/google/uuid"
|
||||
"github.com/lib/pq"
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
. "github.com/go-jet/jet/v2/postgres"
|
||||
. "github.com/go-jet/jet/v2/tests/.gentestdata/jetdb/test_sample/table"
|
||||
)
|
||||
|
||||
type AllTypesJsonRawMessageResult struct {
|
||||
SmallIntPtr *int16 `alias:"all_types.small_int_ptr"`
|
||||
SmallInt int16 `alias:"all_types.small_int"`
|
||||
IntegerPtr *int32 `alias:"all_types.integer_ptr"`
|
||||
Integer int32 `alias:"all_types.integer"`
|
||||
BigIntPtr *int64 `alias:"all_types.big_int_ptr"`
|
||||
BigInt int64 `alias:"all_types.big_int"`
|
||||
DecimalPtr *float64 `alias:"all_types.decimal_ptr"`
|
||||
Decimal float64 `alias:"all_types.decimal"`
|
||||
NumericPtr *float64 `alias:"all_types.numeric_ptr"`
|
||||
Numeric float64 `alias:"all_types.numeric"`
|
||||
RealPtr *float32 `alias:"all_types.real_ptr"`
|
||||
Real float32 `alias:"all_types.real"`
|
||||
DoublePrecisionPtr *float64 `alias:"all_types.double_precision_ptr"`
|
||||
DoublePrecision float64 `alias:"all_types.double_precision"`
|
||||
Smallserial int64 `alias:"all_types.smallserial"`
|
||||
Serial int64 `sql:"primary_key" alias:"all_types.serial"`
|
||||
Bigserial int64 `alias:"all_types.bigserial"`
|
||||
VarCharPtr *string `alias:"all_types.var_char_ptr"`
|
||||
VarChar string `alias:"all_types.var_char"`
|
||||
CharPtr *string `alias:"all_types.char_ptr"`
|
||||
Char string `alias:"all_types.char"`
|
||||
TextPtr *string `alias:"all_types.text_ptr"`
|
||||
Text string `alias:"all_types.text"`
|
||||
ByteaPtr *[]byte `alias:"all_types.bytea_ptr"`
|
||||
Bytea []byte `alias:"all_types.bytea"`
|
||||
TimestampzPtr *time.Time `alias:"all_types.timestampz_ptr"`
|
||||
Timestampz time.Time `alias:"all_types.timestampz"`
|
||||
TimestampPtr *time.Time `alias:"all_types.timestamp_ptr"`
|
||||
Timestamp time.Time `alias:"all_types.timestamp"`
|
||||
DatePtr *time.Time `alias:"all_types.date_ptr"`
|
||||
Date time.Time `alias:"all_types.date"`
|
||||
TimezPtr *time.Time `alias:"all_types.timez_ptr"`
|
||||
Timez time.Time `alias:"all_types.timez"`
|
||||
TimePtr *time.Time `alias:"all_types.time_ptr"`
|
||||
Time time.Time `alias:"all_types.time"`
|
||||
IntervalPtr *string `alias:"all_types.interval_ptr"`
|
||||
Interval string `alias:"all_types.interval"`
|
||||
BooleanPtr *bool `alias:"all_types.boolean_ptr"`
|
||||
Boolean bool `alias:"all_types.boolean"`
|
||||
PointPtr *string `alias:"all_types.point_ptr"`
|
||||
BitPtr *string `alias:"all_types.bit_ptr"`
|
||||
Bit string `alias:"all_types.bit"`
|
||||
BitVaryingPtr *string `alias:"all_types.bit_varying_ptr"`
|
||||
BitVarying string `alias:"all_types.bit_varying"`
|
||||
TsvectorPtr *string `alias:"all_types.tsvector_ptr"`
|
||||
Tsvector string `alias:"all_types.tsvector"`
|
||||
UUIDPtr *uuid.UUID `alias:"all_types.uuid_ptr"`
|
||||
UUID uuid.UUID `alias:"all_types.uuid"`
|
||||
XMLPtr *string `alias:"all_types.xml_ptr"`
|
||||
XML string `alias:"all_types.xml"`
|
||||
JSONPtr *string `alias:"all_types.json_ptr"`
|
||||
JSON string `alias:"all_types.json"`
|
||||
JsonbPtr *json.RawMessage `alias:"all_types.jsonb_ptr"`
|
||||
Jsonb json.RawMessage `alias:"all_types.jsonb"`
|
||||
IntegerArrayPtr *pq.Int32Array `alias:"all_types.integer_array_ptr"`
|
||||
IntegerArray pq.Int32Array `alias:"all_types.integer_array"`
|
||||
TextArrayPtr *pq.StringArray `alias:"all_types.text_array_ptr"`
|
||||
TextArray pq.StringArray `alias:"all_types.text_array"`
|
||||
JsonbArray pq.StringArray `alias:"all_types.jsonb_array"`
|
||||
TextMultiDimArrayPtr *string `alias:"all_types.text_multi_dim_array_ptr"`
|
||||
TextMultiDimArray string `alias:"all_types.text_multi_dim_array"`
|
||||
MoodPtr *model.Mood `alias:"all_types.mood_ptr"`
|
||||
Mood model.Mood `alias:"all_types.mood"`
|
||||
}
|
||||
|
||||
func TestJsonRawMessage(t *testing.T) {
|
||||
var dest []AllTypesJsonRawMessageResult
|
||||
|
||||
err := SELECT(AllTypes.AllColumns).
|
||||
FROM(AllTypes).
|
||||
LIMIT(2).
|
||||
QueryContext(ctx, db, &dest)
|
||||
|
||||
require.NoError(t, err)
|
||||
|
||||
for _, row := range dest {
|
||||
t.Logf("%+v", string(row.Jsonb))
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue