MCPcopy
hub / github.com/sqlc-dev/sqlc / CreateMySQLDatabase

Function CreateMySQLDatabase

internal/sqltest/mysql.go:21–88  ·  view source on GitHub ↗
(t *testing.T, name string, migrations []string)

Source from the content-addressed store, hash-verified

19}
20
21func CreateMySQLDatabase(t *testing.T, name string, migrations []string) (*sql.DB, func()) {
22 t.Helper()
23
24 data := os.Getenv("MYSQL_DATABASE")
25 host := os.Getenv("MYSQL_HOST")
26 pass := os.Getenv("MYSQL_ROOT_PASSWORD")
27 port := os.Getenv("MYSQL_PORT")
28 user := os.Getenv("MYSQL_USER")
29
30 if user == "" {
31 user = "root"
32 }
33
34 if pass == "" {
35 pass = "mysecretpassword"
36 }
37
38 if port == "" {
39 port = "3306"
40 }
41
42 if host == "" {
43 host = "127.0.0.1"
44 }
45
46 if data == "" {
47 data = "dinotest"
48 }
49
50 source := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?multiStatements=true&parseTime=true", user, pass, host, port, data)
51 t.Logf("db: %s", source)
52
53 db, err := sql.Open("mysql", source)
54 if err != nil {
55 t.Fatal(err)
56 }
57
58 if _, err := db.Exec("CREATE DATABASE " + name); err != nil {
59 t.Fatal(err)
60 }
61
62 source = fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?multiStatements=true&parseTime=true", user, pass, host, port, name)
63 sdb, err := sql.Open("mysql", source)
64 if err != nil {
65 t.Fatal(err)
66 }
67
68 files, err := sqlpath.Glob(migrations)
69 if err != nil {
70 t.Fatal(err)
71 }
72 for _, f := range files {
73 blob, err := os.ReadFile(f)
74 if err != nil {
75 t.Fatal(err)
76 }
77 if _, err := sdb.Exec(string(blob)); err != nil {
78 t.Fatalf("%s: %s", filepath.Base(f), err)

Callers 1

MySQLFunction · 0.85

Calls 3

GlobFunction · 0.92
OpenMethod · 0.80
ExecMethod · 0.65

Tested by

no test coverage detected