Skip to content

Commit 0fb7401

Browse files
committed
tidy up
1 parent c5fb315 commit 0fb7401

File tree

4 files changed

+53
-80
lines changed

4 files changed

+53
-80
lines changed

build.js

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,6 @@ const buf = new Uint8Array([${[...buf].join(',')}])
1111
const go = new Go()
1212
1313
export default async (t,s1,s2) => {
14-
if (!['mysql', 'sqlite3', 'mssql', 'postgres'].includes(t)) {
15-
throw new Error(\`Invalid type: \${t}. Use mysql/sqlite3/mssql/postgres\`)
16-
}
1714
const inst = await WebAssembly.instantiate(buf, go.importObject)
1815
go.run(inst.instance)
1916
const sqlDefModule = createSqlDefModule()

go/sqldef-wasm.go

Lines changed: 52 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -1,89 +1,68 @@
11
package main
22

33
import (
4-
"strings"
5-
"syscall/js"
4+
"fmt"
5+
"strings"
6+
"syscall/js"
67

7-
"github.com/sqldef/sqldef/database"
8-
"github.com/sqldef/sqldef/parser"
9-
"github.com/sqldef/sqldef/schema"
8+
"github.com/sqldef/sqldef/database"
9+
"github.com/sqldef/sqldef/parser"
10+
"github.com/sqldef/sqldef/schema"
1011
)
1112

1213
// diff takes SQL DDL statements and generates the difference
1314
func diff(mode string, desiredDDLs string, currentDDLs string) (string, error) {
14-
generatorMode := schema.GeneratorModeMysql
15-
sqlParser := database.GenericParser{}
16-
17-
if mode == "postgres" {
18-
generatorMode = schema.GeneratorModePostgres
19-
sqlParser = database.NewParser(parser.ParserModePostgres)
20-
}
15+
var generatorMode schema.GeneratorMode
16+
var sqlParser database.Parser
2117

22-
if mode == "sqlite3" {
23-
generatorMode = schema.GeneratorModeSQLite3
24-
sqlParser = database.NewParser(parser.ParserModeSQLite3)
25-
}
18+
switch mode {
19+
case "postgres":
20+
generatorMode = schema.GeneratorModePostgres
21+
sqlParser = database.NewParser(parser.ParserModePostgres)
22+
case "sqlite3":
23+
generatorMode = schema.GeneratorModeSQLite3
24+
sqlParser = database.NewParser(parser.ParserModeSQLite3)
25+
case "mssql":
26+
generatorMode = schema.GeneratorModeMssql
27+
sqlParser = database.NewParser(parser.ParserModeMssql)
28+
case "mysql":
29+
generatorMode = schema.GeneratorModeMysql
30+
sqlParser = database.GenericParser{}
31+
default:
32+
return "", fmt.Errorf("Invalid type: %s. Use mysql/sqlite3/mssql/postgres", mode)
33+
}
2634

27-
if mode == "mssql" {
28-
generatorMode = schema.GeneratorModeMssql
29-
sqlParser = database.NewParser(parser.ParserModeMssql)
30-
}
35+
ddls, err := schema.GenerateIdempotentDDLs(generatorMode, sqlParser, desiredDDLs, currentDDLs, database.GeneratorConfig{}, "")
36+
if err != nil {
37+
return "", err
38+
}
3139

32-
ddls, err := schema.GenerateIdempotentDDLs(generatorMode, sqlParser, desiredDDLs, currentDDLs, database.GeneratorConfig{}, "")
33-
out := strings.Join(ddls, ";\n")
34-
35-
if err != nil {
36-
return "", err
37-
} else {
38-
return out, nil
39-
}
40+
return strings.Join(ddls, ";\n"), nil
4041
}
4142

42-
// diffWrapper creates a JS-compatible function for the diff operation
43-
func diffWrapper() js.Func {
44-
return js.FuncOf(func(this js.Value, args []js.Value) interface{} {
45-
if len(args) != 3 {
46-
return map[string]interface{}{
47-
"error": "Invalid number of arguments. Expected 3: mode, desiredDDLs, currentDDLs",
48-
}
49-
}
50-
51-
mode := args[0].String()
52-
desiredDDLs := args[1].String()
53-
currentDDLs := args[2].String()
54-
55-
result, err := diff(mode, desiredDDLs, currentDDLs)
56-
if err != nil {
57-
return map[string]interface{}{
58-
"error": err.Error(),
59-
}
60-
}
61-
62-
return map[string]interface{}{
63-
"result": result,
64-
}
65-
})
66-
}
67-
68-
// createSqlDefModule creates an object with all exported functions
69-
func createSqlDefModule() map[string]interface{} {
70-
return map[string]interface{}{
71-
"diff": diffWrapper(),
72-
}
73-
}
74-
75-
// registerModuleFactory registers a function that returns the module
76-
func registerModuleFactory() js.Func {
77-
moduleFactory := js.FuncOf(func(this js.Value, args []js.Value) interface{} {
78-
return createSqlDefModule()
79-
})
80-
81-
js.Global().Set("createSqlDefModule", moduleFactory)
82-
return moduleFactory
43+
func jsDiff(this js.Value, args []js.Value) interface{} {
44+
if len(args) != 3 {
45+
return map[string]interface{}{
46+
"error": "Invalid number of arguments. Expected 3: mode, desiredDDLs, currentDDLs",
47+
}
48+
}
49+
result, err := diff(args[0].String(), args[1].String(), args[2].String())
50+
if err != nil {
51+
return map[string]interface{}{
52+
"error": err.Error(),
53+
}
54+
}
55+
return map[string]interface{}{
56+
"result": result,
57+
}
8358
}
8459

8560
func main() {
86-
moduleFactory := registerModuleFactory()
87-
<-make(chan bool)
88-
moduleFactory.Release()
89-
}
61+
module := map[string]interface{}{
62+
"diff": js.FuncOf(jsDiff),
63+
}
64+
js.Global().Set("createSqlDefModule", js.FuncOf(func(this js.Value, args []js.Value) interface{} {
65+
return module
66+
}))
67+
<-make(chan bool)
68+
}

go/sqldef.wasm

22.9 KB
Binary file not shown.

index.js

Lines changed: 1 addition & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)