MySQL: Add Where and Limit for Delete statement.
This commit is contained in:
parent
a3ae52c43c
commit
0dd976601e
6 changed files with 91 additions and 29 deletions
|
|
@ -26,6 +26,25 @@ WHERE link.name IN ('Gmail', 'Outlook');
|
|||
testutils.AssertExec(t, deleteStmt, db, 2)
|
||||
}
|
||||
|
||||
func TestDeleteWithWhereOrderByLimit(t *testing.T) {
|
||||
initForDeleteTest(t)
|
||||
|
||||
var expectedSQL = `
|
||||
DELETE FROM test_sample.link
|
||||
WHERE link.name IN ('Gmail', 'Outlook')
|
||||
ORDER BY link.name
|
||||
LIMIT 1;
|
||||
`
|
||||
deleteStmt := Link.
|
||||
DELETE().
|
||||
WHERE(Link.Name.IN(String("Gmail"), String("Outlook"))).
|
||||
ORDER_BY(Link.Name).
|
||||
LIMIT(1)
|
||||
|
||||
testutils.AssertDebugStatementSql(t, deleteStmt, expectedSQL, "Gmail", "Outlook", int64(1))
|
||||
testutils.AssertExec(t, deleteStmt, db, 1)
|
||||
}
|
||||
|
||||
func TestDeleteQueryContext(t *testing.T) {
|
||||
initForDeleteTest(t)
|
||||
|
||||
|
|
|
|||
|
|
@ -11,14 +11,14 @@ import (
|
|||
"testing"
|
||||
)
|
||||
|
||||
const genTestDir2 = "./.gentestdata2/mysql"
|
||||
const genTestDirRoot = "./.gentestdata3"
|
||||
const genTestDir3 = "./.gentestdata3/mysql"
|
||||
|
||||
func TestGenerator(t *testing.T) {
|
||||
|
||||
err := os.RemoveAll(genTestDir2)
|
||||
err := os.RemoveAll(genTestDir3)
|
||||
assert.NilError(t, err)
|
||||
|
||||
err = mysql.Generate(genTestDir2, mysql.DBConnection{
|
||||
err = mysql.Generate(genTestDir3, mysql.DBConnection{
|
||||
Host: dbconfig.MySqLHost,
|
||||
Port: dbconfig.MySQLPort,
|
||||
User: dbconfig.MySQLUser,
|
||||
|
|
@ -30,7 +30,7 @@ func TestGenerator(t *testing.T) {
|
|||
|
||||
assertGeneratedFiles(t)
|
||||
|
||||
err = os.RemoveAll(genTestDir2)
|
||||
err = os.RemoveAll(genTestDirRoot)
|
||||
assert.NilError(t, err)
|
||||
}
|
||||
|
||||
|
|
@ -40,11 +40,11 @@ func TestCmdGenerator(t *testing.T) {
|
|||
err := goInstallJet.Run()
|
||||
assert.NilError(t, err)
|
||||
|
||||
err = os.RemoveAll(genTestDir2)
|
||||
err = os.RemoveAll(genTestDir3)
|
||||
assert.NilError(t, err)
|
||||
|
||||
cmd := exec.Command("jet", "-source=MySQL", "-dbname=dvds", "-host=localhost", "-port=3306",
|
||||
"-user=jet", "-password=jet", "-path="+genTestDir2)
|
||||
"-user=jet", "-password=jet", "-path="+genTestDir3)
|
||||
|
||||
cmd.Stderr = os.Stderr
|
||||
cmd.Stdout = os.Stdout
|
||||
|
|
@ -54,37 +54,37 @@ func TestCmdGenerator(t *testing.T) {
|
|||
|
||||
assertGeneratedFiles(t)
|
||||
|
||||
err = os.RemoveAll(genTestDir2)
|
||||
err = os.RemoveAll(genTestDirRoot)
|
||||
assert.NilError(t, err)
|
||||
}
|
||||
|
||||
func assertGeneratedFiles(t *testing.T) {
|
||||
// Table SQL Builder files
|
||||
tableSQLBuilderFiles, err := ioutil.ReadDir("./.gentestdata2/mysql/dvds/table")
|
||||
tableSQLBuilderFiles, err := ioutil.ReadDir(genTestDir3 + "/dvds/table")
|
||||
assert.NilError(t, err)
|
||||
|
||||
assertFileNameEqual(t, tableSQLBuilderFiles, "actor.go", "address.go", "category.go", "city.go", "country.go",
|
||||
"customer.go", "film.go", "film_actor.go", "film_category.go", "inventory.go", "language.go",
|
||||
"payment.go", "rental.go", "staff.go", "store.go")
|
||||
|
||||
assertFileContent(t, "./.gentestdata2/mysql/dvds/table/actor.go", "\npackage table", actorSQLBuilderFile)
|
||||
assertFileContent(t, genTestDir3+"/dvds/table/actor.go", "\npackage table", actorSQLBuilderFile)
|
||||
|
||||
// Enums SQL Builder files
|
||||
enumFiles, err := ioutil.ReadDir("./.gentestdata2/mysql/dvds/enum")
|
||||
enumFiles, err := ioutil.ReadDir(genTestDir3 + "/dvds/enum")
|
||||
assert.NilError(t, err)
|
||||
|
||||
assertFileNameEqual(t, enumFiles, "film_list_rating.go", "film_rating.go", "nicer_but_slower_film_list_rating.go")
|
||||
assertFileContent(t, "./.gentestdata2/mysql/dvds/enum/film_rating.go", "\npackage enum", mpaaRatingEnumFile)
|
||||
assertFileContent(t, genTestDir3+"/dvds/enum/film_rating.go", "\npackage enum", mpaaRatingEnumFile)
|
||||
|
||||
// Model files
|
||||
modelFiles, err := ioutil.ReadDir("./.gentestdata2/mysql/dvds/model")
|
||||
modelFiles, err := ioutil.ReadDir(genTestDir3 + "/dvds/model")
|
||||
assert.NilError(t, err)
|
||||
|
||||
assertFileNameEqual(t, modelFiles, "actor.go", "address.go", "category.go", "city.go", "country.go",
|
||||
"customer.go", "film.go", "film_actor.go", "film_category.go", "inventory.go", "language.go",
|
||||
"payment.go", "rental.go", "staff.go", "store.go", "film_list_rating.go", "film_rating.go", "nicer_but_slower_film_list_rating.go")
|
||||
|
||||
assertFileContent(t, "./.gentestdata2/mysql/dvds/model/actor.go", "\npackage model", actorModelFile)
|
||||
assertFileContent(t, genTestDir3+"/dvds/model/actor.go", "\npackage model", actorModelFile)
|
||||
}
|
||||
|
||||
func assertFileContent(t *testing.T, filePath string, contentBegin string, expectedContent string) {
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import (
|
|||
"fmt"
|
||||
"github.com/go-jet/jet/internal/testutils"
|
||||
. "github.com/go-jet/jet/mysql"
|
||||
"github.com/go-jet/jet/tests/.gentestdata/mysql/dvds/table"
|
||||
"github.com/go-jet/jet/tests/.gentestdata/mysql/test_sample/model"
|
||||
. "github.com/go-jet/jet/tests/.gentestdata/mysql/test_sample/table"
|
||||
"gotest.tools/assert"
|
||||
|
|
@ -204,6 +205,19 @@ func TestUpdateExecContext(t *testing.T) {
|
|||
assert.Error(t, err, "context deadline exceeded")
|
||||
}
|
||||
|
||||
func TestUpdateWithJoin(t *testing.T) {
|
||||
query := table.Staff.
|
||||
INNER_JOIN(table.Address, table.Address.AddressID.EQ(table.Staff.AddressID)).
|
||||
UPDATE(table.Staff.LastName).
|
||||
SET(String("New name")).
|
||||
WHERE(table.Staff.StaffID.EQ(Int(1)))
|
||||
|
||||
//fmt.Println(query.DebugSql())
|
||||
|
||||
_, err := query.Exec(db)
|
||||
assert.NilError(t, err)
|
||||
}
|
||||
|
||||
func setupLinkTableForUpdateTest(t *testing.T) {
|
||||
|
||||
cleanUpLinkTable(t)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue