package mysql import ( "testing" "github.com/stretchr/testify/require" "github.com/go-jet/jet/v2/internal/testutils" "github.com/go-jet/jet/v2/tests/.gentestdata/mysql/dvds/model" . "github.com/go-jet/jet/v2/mysql" ) func TestRawStatementSelect(t *testing.T) { stmt := RawStatement(` SELECT actor.first_name AS "actor.first_name" FROM dvds.actor WHERE actor.actor_id = 2`) testutils.AssertStatementSql(t, stmt, ` SELECT actor.first_name AS "actor.first_name" FROM dvds.actor WHERE actor.actor_id = 2; `) testutils.AssertDebugStatementSql(t, stmt, ` SELECT actor.first_name AS "actor.first_name" FROM dvds.actor WHERE actor.actor_id = 2; `) var actor model.Actor err := stmt.Query(db, &actor) require.NoError(t, err) require.Equal(t, actor.FirstName, "NICK") } func TestRawStatementSelectWithArguments(t *testing.T) { stmt := RawStatement(` SELECT DISTINCT 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 WHERE actor.actor_id IN (#actorID1, #actorID2, #actorID3) AND ((#actorID1 / #actorID2) <> (#actorID2 * #actorID3)) ORDER BY actor.actor_id`, RawArgs{ "#actorID1": int64(1), "#actorID2": int64(2), "#actorID3": int64(3), }, ) testutils.AssertStatementSql(t, stmt, ` SELECT DISTINCT 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 WHERE actor.actor_id IN (?, ?, ?) AND ((? / ?) <> (? * ?)) ORDER BY actor.actor_id; `, int64(1), int64(2), int64(3), int64(1), int64(2), int64(2), int64(3)) testutils.AssertDebugStatementSql(t, stmt, ` SELECT DISTINCT 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 WHERE actor.actor_id IN (1, 2, 3) AND ((1 / 2) <> (2 * 3)) ORDER BY actor.actor_id; `) var actor []model.Actor err := stmt.Query(db, &actor) require.NoError(t, err) testutils.AssertDeepEqual(t, actor[1], model.Actor{ ActorID: 2, FirstName: "NICK", LastName: "WAHLBERG", LastUpdate: *testutils.TimestampWithoutTimeZone("2006-02-15 04:34:33", 2), }) }