Add support to retrieve Rows from statement
Rows statement method executes statements over db connection/transaction and returns Rows.
This commit is contained in:
parent
a5b7769589
commit
3021a6a0fd
7 changed files with 248 additions and 10 deletions
|
|
@ -1,7 +1,9 @@
|
|||
package postgres
|
||||
|
||||
import (
|
||||
"context"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
|
|
@ -136,3 +138,42 @@ RETURNING link.id AS "link.id",
|
|||
require.Equal(t, links[2].Name, "Google")
|
||||
require.Nil(t, links[2].Description)
|
||||
}
|
||||
|
||||
func TestRawStatementRows(t *testing.T) {
|
||||
stmt := RawStatement(`
|
||||
SELECT actor.actor_id AS "actor.actor_id",
|
||||
actor.first_name AS "actor.first_name",
|
||||
actor.last_name AS "actor.last_name",
|
||||
actor.last_update AS "actor.last_update"
|
||||
FROM dvds.actor
|
||||
ORDER BY actor.actor_id`)
|
||||
|
||||
rows, err := stmt.Rows(context.Background(), db)
|
||||
require.NoError(t, err)
|
||||
|
||||
for rows.Next() {
|
||||
var actor model.Actor
|
||||
err := rows.Scan(&actor)
|
||||
require.NoError(t, err)
|
||||
|
||||
require.NotEqual(t, actor.ActorID, int32(0))
|
||||
require.NotEqual(t, actor.FirstName, "")
|
||||
require.NotEqual(t, actor.LastName, "")
|
||||
require.NotEqual(t, actor.LastUpdate, time.Time{})
|
||||
|
||||
if actor.ActorID == 54 {
|
||||
require.Equal(t, actor.ActorID, int32(54))
|
||||
require.Equal(t, actor.FirstName, "Penelope")
|
||||
require.Equal(t, actor.LastName, "Pinkett")
|
||||
require.Equal(t, actor.LastUpdate.Format(time.RFC3339), "2013-05-26T14:47:57Z")
|
||||
}
|
||||
}
|
||||
|
||||
err = rows.Close()
|
||||
require.NoError(t, err)
|
||||
|
||||
err = rows.Err()
|
||||
require.NoError(t, err)
|
||||
|
||||
requireLogged(t, stmt)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,14 +1,18 @@
|
|||
package postgres
|
||||
|
||||
import (
|
||||
"context"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/google/uuid"
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
"github.com/go-jet/jet/v2/internal/testutils"
|
||||
. "github.com/go-jet/jet/v2/postgres"
|
||||
"github.com/go-jet/jet/v2/qrm"
|
||||
"github.com/go-jet/jet/v2/tests/.gentestdata/jetdb/dvds/model"
|
||||
. "github.com/go-jet/jet/v2/tests/.gentestdata/jetdb/dvds/table"
|
||||
"github.com/google/uuid"
|
||||
"github.com/stretchr/testify/require"
|
||||
"testing"
|
||||
)
|
||||
|
||||
var oneInventoryQuery = Inventory.
|
||||
|
|
@ -722,6 +726,44 @@ func TestStructScanAllNull(t *testing.T) {
|
|||
}{})
|
||||
}
|
||||
|
||||
func TestRowsScan(t *testing.T) {
|
||||
|
||||
stmt := SELECT(
|
||||
Inventory.AllColumns,
|
||||
).FROM(
|
||||
Inventory,
|
||||
).ORDER_BY(
|
||||
Inventory.InventoryID.ASC(),
|
||||
)
|
||||
|
||||
rows, err := stmt.Rows(context.Background(), db)
|
||||
require.NoError(t, err)
|
||||
|
||||
for rows.Next() {
|
||||
var inventory model.Inventory
|
||||
err = rows.Scan(&inventory)
|
||||
require.NoError(t, err)
|
||||
|
||||
require.NotEqual(t, inventory.InventoryID, int32(0))
|
||||
require.NotEqual(t, inventory.FilmID, int16(0))
|
||||
require.NotEqual(t, inventory.StoreID, int16(0))
|
||||
require.NotEqual(t, inventory.LastUpdate, time.Time{})
|
||||
|
||||
if inventory.InventoryID == 2103 {
|
||||
require.Equal(t, inventory.FilmID, int16(456))
|
||||
require.Equal(t, inventory.StoreID, int16(2))
|
||||
require.Equal(t, inventory.LastUpdate.Format(time.RFC3339), "2006-02-15T10:09:17Z")
|
||||
}
|
||||
}
|
||||
|
||||
err = rows.Close()
|
||||
require.NoError(t, err)
|
||||
err = rows.Err()
|
||||
require.NoError(t, err)
|
||||
|
||||
requireLogged(t, stmt)
|
||||
}
|
||||
|
||||
var address256 = model.Address{
|
||||
AddressID: 256,
|
||||
Address: "1497 Yuzhou Drive",
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue