(t *testing.T)
| 462 | } |
| 463 | |
| 464 | func TestPostgresTimeArray(t *testing.T) { |
| 465 | type Model struct { |
| 466 | ID int64 `bun:",pk,autoincrement"` |
| 467 | Array1 []time.Time `bun:",array"` |
| 468 | Array2 *[]time.Time `bun:",array"` |
| 469 | Array3 *[]time.Time `bun:",array"` |
| 470 | Array4 []*time.Time `bun:",array"` |
| 471 | } |
| 472 | |
| 473 | db := pg(t) |
| 474 | t.Cleanup(func() { db.Close() }) |
| 475 | |
| 476 | mustResetModel(t, ctx, db, (*Model)(nil)) |
| 477 | |
| 478 | time1 := time.Now() |
| 479 | time2 := time.Now().Add(time.Hour) |
| 480 | time3 := time.Now().AddDate(0, 0, 1) |
| 481 | |
| 482 | model1 := &Model{ |
| 483 | ID: 123, |
| 484 | Array1: []time.Time{time1, time2, time3}, |
| 485 | Array2: &[]time.Time{time1, time2, time3}, |
| 486 | Array4: []*time.Time{&time1, &time2, &time3}, |
| 487 | } |
| 488 | _, err := db.NewInsert().Model(model1).Exec(ctx) |
| 489 | require.NoError(t, err) |
| 490 | |
| 491 | model2 := new(Model) |
| 492 | err = db.NewSelect().Model(model2).Scan(ctx) |
| 493 | require.NoError(t, err) |
| 494 | require.Equal(t, len(model1.Array1), len(model2.Array1)) |
| 495 | |
| 496 | var times []time.Time |
| 497 | err = db.NewSelect().Model((*Model)(nil)). |
| 498 | Column("array1"). |
| 499 | Scan(ctx, pgdialect.Array(×)) |
| 500 | require.NoError(t, err) |
| 501 | require.Equal(t, len(times), len(model1.Array1)) |
| 502 | |
| 503 | err = db.NewSelect().Model((*Model)(nil)). |
| 504 | Column("array2"). |
| 505 | Scan(ctx, pgdialect.Array(×)) |
| 506 | require.NoError(t, err) |
| 507 | require.Equal(t, 3, len(*model1.Array2)) |
| 508 | |
| 509 | err = db.NewSelect().Model((*Model)(nil)). |
| 510 | Column("array3"). |
| 511 | Scan(ctx, pgdialect.Array(×)) |
| 512 | require.NoError(t, err) |
| 513 | require.Nil(t, times) |
| 514 | |
| 515 | err = db.NewSelect().Model((*Model)(nil)). |
| 516 | Column("array4"). |
| 517 | Scan(ctx, pgdialect.Array(×)) |
| 518 | require.NoError(t, err) |
| 519 | require.Equal(t, 3, len(model1.Array4)) |
| 520 | } |
| 521 |
nothing calls this directly
no test coverage detected
searching dependent graphs…