MySQL execution and scan support.

This commit is contained in:
go-jet 2019-07-29 18:08:53 +02:00
parent 5dda5e1e11
commit bffa102849
34 changed files with 48216 additions and 337 deletions

View file

@ -2,17 +2,75 @@ package main
import (
"database/sql"
"flag"
"fmt"
"github.com/go-jet/jet/generator/mysql"
"github.com/go-jet/jet/generator/postgres"
"github.com/go-jet/jet/tests/dbconfig"
_ "github.com/lib/pq"
"io/ioutil"
"os"
"os/exec"
)
func main() {
fmt.Println(dbconfig.ConnectString)
var testSuite string
db, err := sql.Open("postgres", dbconfig.ConnectString)
func init() {
flag.StringVar(&testSuite, "testsuite", "all", "Test suite name (postgres or mysql)")
flag.Parse()
}
func main() {
if testSuite == "postgres" {
initPostgresDB()
return
}
if testSuite == "mysql" {
initMySQLDB()
return
}
initMySQLDB()
initPostgresDB()
}
func initMySQLDB() {
mySQLDBs := []string{
"test_sample",
}
for _, dbName := range mySQLDBs {
cmdLine := fmt.Sprintf("mysql -u %s -p%s %s < %s",
dbconfig.MySQLUser, dbconfig.MySQLPassword, dbName, "./init/data/mysql/"+dbName+".sql")
cmd := exec.Command("sh", "-c", cmdLine)
cmd.Stderr = os.Stderr
cmd.Stdout = os.Stdout
err := cmd.Run()
panicOnError(err)
err = mysql.Generate("./.gentestdata/mysql", mysql.DBConnection{
Host: dbconfig.MySqLHost,
Port: dbconfig.MySQLPort,
User: dbconfig.MySQLUser,
Password: dbconfig.MySQLPassword,
//SslMode:
//Params
DBName: dbName,
})
panicOnError(err)
}
}
func initPostgresDB() {
db, err := sql.Open("postgres", dbconfig.PostgresConnectString)
if err != nil {
panic("Failed to connect to test db")
}
@ -29,13 +87,8 @@ func main() {
}
for _, schemaName := range schemaNames {
testSampleSql, err := ioutil.ReadFile("./init/data/" + schemaName + ".sql")
panicOnError(err)
_, err = db.Exec(string(testSampleSql))
panicOnError(err)
execFile(db, "./init/data/postgres/"+schemaName+".sql")
err = postgres.Generate("./.gentestdata", postgres.DBConnection{
Host: dbconfig.Host,
@ -46,11 +99,18 @@ func main() {
SchemaName: schemaName,
SslMode: "disable",
})
panicOnError(err)
}
}
func execFile(db *sql.DB, sqlFilePath string) {
testSampleSql, err := ioutil.ReadFile(sqlFilePath)
panicOnError(err)
_, err = db.Exec(string(testSampleSql))
panicOnError(err)
}
func panicOnError(err error) {
if err != nil {
panic(err)