Add QRM error if result set is empty when scanning into struct destination.
This commit is contained in:
parent
02fafd8a7a
commit
8c9ae77cd8
6 changed files with 61 additions and 22 deletions
|
|
@ -516,7 +516,8 @@ func TestStringOperators(t *testing.T) {
|
|||
|
||||
fmt.Println(query.DebugSql())
|
||||
|
||||
err := query.Query(db, &struct{}{})
|
||||
dest := []struct{}{}
|
||||
err := query.Query(db, &dest)
|
||||
|
||||
assert.NilError(t, err)
|
||||
}
|
||||
|
|
@ -586,7 +587,8 @@ FROM test_sample.all_types;
|
|||
`, "20:34:58", "23:06:06", "22:06:06.011", "21:06:06.011111", "20:16:06",
|
||||
"19:26:06", "18:36:06", "17:46:06", "16:56:56", "15:16:46", "14:26:36")
|
||||
|
||||
err := query.Query(db, &struct{}{})
|
||||
dest := []struct{}{}
|
||||
err := query.Query(db, &dest)
|
||||
|
||||
assert.NilError(t, err)
|
||||
}
|
||||
|
|
@ -646,7 +648,8 @@ SELECT CAST(? AS DATE),
|
|||
FROM test_sample.all_types;
|
||||
`)
|
||||
|
||||
err := query.Query(db, &struct{}{})
|
||||
dest := []struct{}{}
|
||||
err := query.Query(db, &dest)
|
||||
|
||||
assert.NilError(t, err)
|
||||
}
|
||||
|
|
@ -708,7 +711,8 @@ SELECT all_types.date_time = all_types.date_time,
|
|||
FROM test_sample.all_types;
|
||||
`)
|
||||
|
||||
err := query.Query(db, &struct{}{})
|
||||
dest := []struct{}{}
|
||||
err := query.Query(db, &dest)
|
||||
|
||||
assert.NilError(t, err)
|
||||
}
|
||||
|
|
@ -769,7 +773,8 @@ SELECT all_types.timestamp = all_types.timestamp,
|
|||
CURRENT_TIMESTAMP(2)
|
||||
FROM test_sample.all_types;
|
||||
`)
|
||||
err := query.Query(db, &struct{}{})
|
||||
dest := []struct{}{}
|
||||
err := query.Query(db, &dest)
|
||||
|
||||
assert.NilError(t, err)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -228,7 +228,8 @@ LIMIT ?;
|
|||
|
||||
testutils.AssertStatementSql(t, query, expectedSQL, int64(1), int64(1), int64(10), int64(1), int64(2), int64(1), int64(12))
|
||||
|
||||
err := query.Query(db, &struct{}{})
|
||||
dest := []struct{}{}
|
||||
err := query.Query(db, &dest)
|
||||
assert.NilError(t, err)
|
||||
}
|
||||
|
||||
|
|
@ -263,7 +264,8 @@ LIMIT ?;
|
|||
|
||||
testutils.AssertStatementSql(t, query2, expectedSQL, int64(1), int64(10), int64(1), int64(2), int64(1))
|
||||
|
||||
err := query.Query(db, &struct{}{})
|
||||
dest := []struct{}{}
|
||||
err := query.Query(db, &dest)
|
||||
assert.NilError(t, err)
|
||||
}
|
||||
|
||||
|
|
@ -305,7 +307,8 @@ OFFSET ?;
|
|||
|
||||
testutils.AssertStatementSql(t, query2, expectedSQL, int64(1), int64(10), int64(1), int64(2), int64(4), int64(3))
|
||||
|
||||
err := query.Query(db, &struct{}{})
|
||||
dest := []struct{}{}
|
||||
err := query.Query(db, &dest)
|
||||
assert.NilError(t, err)
|
||||
}
|
||||
|
||||
|
|
@ -510,7 +513,8 @@ SELECT true,
|
|||
'date';
|
||||
`)
|
||||
|
||||
err := query.Query(db, &struct{}{})
|
||||
dest := []struct{}{}
|
||||
err := query.Query(db, &dest)
|
||||
assert.NilError(t, err)
|
||||
}
|
||||
|
||||
|
|
@ -530,7 +534,8 @@ LOCK IN SHARE MODE;
|
|||
|
||||
testutils.AssertDebugStatementSql(t, query, expectedSQL)
|
||||
|
||||
err := query.Query(db, &struct{}{})
|
||||
dest := []struct{}{}
|
||||
err := query.Query(db, &dest)
|
||||
assert.NilError(t, err)
|
||||
}
|
||||
|
||||
|
|
@ -606,7 +611,8 @@ GROUP BY payment.amount, payment.customer_id, payment.payment_date;
|
|||
|
||||
testutils.AssertStatementSql(t, query, expectedSQL, 100, 100, int64(10))
|
||||
|
||||
err := query.Query(db, &struct{}{})
|
||||
dest := []struct{}{}
|
||||
err := query.Query(db, &dest)
|
||||
assert.NilError(t, err)
|
||||
}
|
||||
|
||||
|
|
@ -641,7 +647,8 @@ ORDER BY payment.customer_id;
|
|||
|
||||
testutils.AssertStatementSql(t, query, expectedSQL, int64(10))
|
||||
|
||||
err := query.Query(db, &struct{}{})
|
||||
dest := []struct{}{}
|
||||
err := query.Query(db, &dest)
|
||||
|
||||
assert.NilError(t, err)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -170,7 +170,8 @@ func TestExpressionCast(t *testing.T) {
|
|||
|
||||
//fmt.Println(query.DebugSql())
|
||||
|
||||
err := query.Query(db, &struct{}{})
|
||||
dest := []struct{}{}
|
||||
err := query.Query(db, &dest)
|
||||
|
||||
assert.NilError(t, err)
|
||||
}
|
||||
|
|
@ -249,7 +250,8 @@ func TestStringOperators(t *testing.T) {
|
|||
|
||||
//fmt.Println(query.DebugSql())
|
||||
|
||||
err := query.Query(db, &struct{}{})
|
||||
dest := []struct{}{}
|
||||
err := query.Query(db, &dest)
|
||||
|
||||
assert.NilError(t, err)
|
||||
}
|
||||
|
|
@ -618,7 +620,8 @@ func TestTimeExpression(t *testing.T) {
|
|||
|
||||
//fmt.Println(query.DebugSql())
|
||||
|
||||
err := query.Query(db, &struct{}{})
|
||||
dest := []struct{}{}
|
||||
err := query.Query(db, &dest)
|
||||
|
||||
assert.NilError(t, err)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -50,14 +50,16 @@ func TestScanToInvalidDestination(t *testing.T) {
|
|||
|
||||
func TestScanToValidDestination(t *testing.T) {
|
||||
t.Run("pointer to struct", func(t *testing.T) {
|
||||
err := query.Query(db, &struct{}{})
|
||||
dest := []struct{}{}
|
||||
err := query.Query(db, &dest)
|
||||
|
||||
assert.NilError(t, err)
|
||||
})
|
||||
|
||||
t.Run("global query function scan", func(t *testing.T) {
|
||||
queryStr, args := query.Sql()
|
||||
err := qrm.Query(nil, db, queryStr, args, &struct{}{})
|
||||
dest := []struct{}{}
|
||||
err := qrm.Query(nil, db, queryStr, args, &dest)
|
||||
assert.NilError(t, err)
|
||||
})
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
package postgres
|
||||
|
||||
import (
|
||||
"database/sql"
|
||||
"fmt"
|
||||
"github.com/go-jet/jet/internal/testutils"
|
||||
. "github.com/go-jet/jet/postgres"
|
||||
|
|
@ -162,7 +163,8 @@ LIMIT 12;
|
|||
|
||||
testutils.AssertDebugStatementSql(t, query, expectedSQL, int64(1), int64(1), int64(10), int64(1), int64(2), int64(1), int64(12))
|
||||
|
||||
err := query.Query(db, &struct{}{})
|
||||
dest := []struct{}{}
|
||||
err := query.Query(db, &dest)
|
||||
assert.NilError(t, err)
|
||||
}
|
||||
|
||||
|
|
@ -1617,7 +1619,8 @@ SELECT true,
|
|||
'date';
|
||||
`)
|
||||
|
||||
err := query.Query(db, &struct{}{})
|
||||
dest := []struct{}{}
|
||||
err := query.Query(db, &dest)
|
||||
assert.NilError(t, err)
|
||||
}
|
||||
|
||||
|
|
@ -1688,7 +1691,8 @@ GROUP BY payment.amount, payment.customer_id, payment.payment_date;
|
|||
|
||||
testutils.AssertStatementSql(t, query, expectedSQL, 100, 100, int64(10))
|
||||
|
||||
err := query.Query(db, &struct{}{})
|
||||
dest := []struct{}{}
|
||||
err := query.Query(db, &dest)
|
||||
assert.NilError(t, err)
|
||||
}
|
||||
|
||||
|
|
@ -1723,12 +1727,14 @@ ORDER BY payment.customer_id;
|
|||
|
||||
testutils.AssertStatementSql(t, query, expectedSQL, int64(10))
|
||||
|
||||
err := query.Query(db, &struct{}{})
|
||||
dest := []struct{}{}
|
||||
err := query.Query(db, &dest)
|
||||
|
||||
assert.NilError(t, err)
|
||||
}
|
||||
|
||||
func TestSimpleView(t *testing.T) {
|
||||
|
||||
query := SELECT(
|
||||
view.ActorInfo.AllColumns,
|
||||
).
|
||||
|
|
@ -1743,6 +1749,12 @@ func TestSimpleView(t *testing.T) {
|
|||
FilmInfo string
|
||||
}
|
||||
|
||||
//sql, args := query.Sql()
|
||||
//
|
||||
//row := db.QueryRow(sql, args...)
|
||||
//
|
||||
//row.Scan()
|
||||
|
||||
var dest []ActorInfo
|
||||
|
||||
err := query.Query(db, &dest)
|
||||
|
|
@ -1786,3 +1798,13 @@ func TestJoinViewWithTable(t *testing.T) {
|
|||
assert.Equal(t, len(dest[0].Rentals), 32)
|
||||
assert.Equal(t, len(dest[1].Rentals), 27)
|
||||
}
|
||||
|
||||
func TestErrNoRows(t *testing.T) {
|
||||
query := SELECT(Customer.AllColumns).FROM(Customer).WHERE(Customer.CustomerID.EQ(Int(-1)))
|
||||
|
||||
customer := model.Customer{}
|
||||
|
||||
err := query.Query(db, &customer)
|
||||
|
||||
assert.Error(t, err, sql.ErrNoRows.Error())
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue