Skip to content

Commit f8270d0

Browse files
committed
Add mysql + mariadb drivers
1 parent b6feaa7 commit f8270d0

25 files changed

Lines changed: 1607 additions & 60 deletions

cmd/mangosql/mangosql.go

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import (
55
"bytes"
66
"fmt"
77
"go/format"
8-
"log"
98
"os"
109
"path"
1110
"regexp"
@@ -16,9 +15,15 @@ import (
1615
"github.com/urfave/cli/v2"
1716
)
1817

18+
var (
19+
version = "dev"
20+
commit = "none"
21+
date = "unknown"
22+
)
23+
1924
func main() {
2025
app := &cli.App{
21-
Version: "v0.0.1",
26+
Version: fmt.Sprintf("%s (%s - %s)", version, commit, date),
2227
Name: "mangosql",
2328
HelpName: "MangoSQL",
2429
Usage: "Generate a SQL Client from a SQL file or folder of SQL migrations",
@@ -62,7 +67,7 @@ Example: mangosql --output db/file.go db/schema.sql`,
6267
return fmt.Errorf("missing source folder")
6368
}
6469

65-
allowed_drivers := []string{"pq", "pgx", "sqlite"}
70+
allowed_drivers := []string{"pq", "pgx", "sqlite", "mysql", "mariadb"}
6671
driver := ctx.String("driver")
6772
if !slices.Contains(allowed_drivers, driver) {
6873
return fmt.Errorf("unknown driver, should be one of %v", allowed_drivers)
@@ -87,7 +92,8 @@ Example: mangosql --output db/file.go db/schema.sql`,
8792
}
8893

8994
if err := app.Run(os.Args); err != nil {
90-
log.Fatal(err)
95+
fmt.Println("\033[31mError\033[0m:", err)
96+
os.Exit(1)
9197
}
9298
}
9399

devenv.lock

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -112,11 +112,11 @@
112112
"nixpkgs-stable": "nixpkgs-stable"
113113
},
114114
"locked": {
115-
"lastModified": 1724227338,
115+
"lastModified": 1724440431,
116116
"owner": "cachix",
117117
"repo": "pre-commit-hooks.nix",
118-
"rev": "6cedaa7c1b4f82a266e5d30f212273e60d62cb0d",
119-
"treeHash": "698918d3a04360f1dfd19164903511a167368ec1",
118+
"rev": "c8a54057aae480c56e28ef3e14e4960628ac495b",
119+
"treeHash": "40ee1da550348c789ed9503eea365533a618506c",
120120
"type": "github"
121121
},
122122
"original": {

docker-compose.yml

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,27 @@
11
version: "3.6"
22
services:
3+
mysqltestdb:
4+
image: mysql:8.0
5+
environment:
6+
MYSQL_ROOT_PASSWORD: root
7+
MYSQL_USER: user
8+
MYSQL_PASSWORD: password
9+
MYSQL_DATABASE: test
10+
restart: unless-stopped
11+
ports:
12+
- "3307:3306"
13+
14+
mariatestdb:
15+
image: mariadb:latest
16+
environment:
17+
MYSQL_ROOT_PASSWORD: root
18+
MYSQL_USER: user
19+
MYSQL_PASSWORD: password
20+
MYSQL_DATABASE: test
21+
restart: unless-stopped
22+
ports:
23+
- "3306:3306"
24+
325
pgtestdb:
426
image: postgres:16
527
environment:

docs/getting-started/index.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,10 @@ mangosql schema.sql
1818
# Download from docker registry: https://github.com/kefniark/mango-sql/pkgs/container/mango-sql
1919

2020
# Use MangoSQL CLI
21-
docker run -it -v [MOUNT FOLDER]:/app/ ghcr.io/kefniark/mango-sql:latest -i /app/[YOUR SQL FILE] > [OUTPUT GO FILE]
21+
docker run -t --rm -v [MOUNT FOLDER]:/app/ ghcr.io/kefniark/mango-sql:latest -i /app/[YOUR SQL FILE] > [OUTPUT GO FILE]
2222

2323
# Example
24-
docker run -it -v .:/app/ ghcr.io/kefniark/mango-sql:latest -i /app/schema.sql > client.go
24+
docker run -t --rm -v .:/app/ ghcr.io/kefniark/mango-sql:latest -i /app/schema.sql > client.go
2525

2626
# -i/--inline: allow to get the generated code without dealing with volume mount and permission issues
2727
```

go.mod

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,26 +9,29 @@ require (
99
github.com/auxten/postgresql-parser v1.0.1
1010
github.com/gertd/go-pluralize v0.2.1
1111
github.com/go-echarts/go-echarts/v2 v2.4.1
12+
github.com/go-sql-driver/mysql v1.8.1
1213
github.com/google/uuid v1.6.0
1314
github.com/iancoleman/strcase v0.3.0
1415
github.com/jackc/pgx/v5 v5.6.0
1516
github.com/jmoiron/sqlx v1.4.0
1617
github.com/lib/pq v1.10.9
18+
github.com/matoous/go-nanoid/v2 v2.1.0
1719
github.com/peterldowns/pgtestdb v0.0.14
1820
github.com/peterldowns/pgtestdb/migrators/goosemigrator v0.0.14
1921
github.com/rs/zerolog v1.33.0
2022
github.com/sirupsen/logrus v1.9.3
2123
github.com/stretchr/testify v1.9.0
2224
github.com/urfave/cli/v2 v2.27.4
2325
go.uber.org/zap v1.27.0
24-
golang.org/x/exp v0.0.0-20240808152545-0cdaa3abc0fa
26+
golang.org/x/exp v0.0.0-20240823005443-9b4947da3948
2527
gorm.io/driver/postgres v1.5.9
2628
gorm.io/driver/sqlite v1.5.6
2729
gorm.io/gorm v1.25.11
2830
modernc.org/sqlite v1.29.6
2931
)
3032

3133
require (
34+
filippo.io/edwards25519 v1.1.0 // indirect
3235
github.com/certifi/gocertifi v0.0.0-20210507211836-431795d63e8d // indirect
3336
github.com/cockroachdb/apd v1.1.1-0.20181017181144-bced77f817b4 // indirect
3437
github.com/cockroachdb/errors v1.11.3 // indirect
@@ -69,13 +72,12 @@ require (
6972
github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 // indirect
7073
go.uber.org/multierr v1.11.0 // indirect
7174
golang.org/x/crypto v0.26.0 // indirect
72-
golang.org/x/net v0.28.0 // indirect
7375
golang.org/x/sync v0.8.0 // indirect
7476
golang.org/x/sys v0.24.0 // indirect
7577
golang.org/x/text v0.17.0 // indirect
76-
google.golang.org/genproto v0.0.0-20240814211410-ddb44dafa142 // indirect
77-
google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142 // indirect
78-
google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142 // indirect
78+
google.golang.org/genproto v0.0.0-20240823204242-4ba0660f739c // indirect
79+
google.golang.org/genproto/googleapis/api v0.0.0-20240823204242-4ba0660f739c // indirect
80+
google.golang.org/genproto/googleapis/rpc v0.0.0-20240823204242-4ba0660f739c // indirect
7981
google.golang.org/grpc v1.65.0 // indirect
8082
google.golang.org/protobuf v1.34.2 // indirect
8183
gopkg.in/yaml.v3 v3.0.1 // indirect

go.sum

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,8 @@ github.com/lib/pq v1.9.0/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
194194
github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw=
195195
github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
196196
github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
197+
github.com/matoous/go-nanoid/v2 v2.1.0 h1:P64+dmq21hhWdtvZfEAofnvJULaRR1Yib0+PnU669bE=
198+
github.com/matoous/go-nanoid/v2 v2.1.0/go.mod h1:KlbGNQ+FhrUNIHUxZdL63t7tl4LaPkZNpUULS8H4uVM=
197199
github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
198200
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
199201
github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
@@ -324,8 +326,8 @@ golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPh
324326
golang.org/x/crypto v0.26.0 h1:RrRspgV4mU+YwB4FYnuBoKsUapNIL5cohGAmSH3azsw=
325327
golang.org/x/crypto v0.26.0/go.mod h1:GY7jblb9wI+FOo5y8/S2oY4zWP07AkOJ4+jxCqdqn54=
326328
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
327-
golang.org/x/exp v0.0.0-20240808152545-0cdaa3abc0fa h1:ELnwvuAXPNtPk1TJRuGkI9fDTwym6AYBu0qzT8AcHdI=
328-
golang.org/x/exp v0.0.0-20240808152545-0cdaa3abc0fa/go.mod h1:akd2r19cwCdwSwWeIdzYQGa/EZZyqcOdwWiwj5L5eKQ=
329+
golang.org/x/exp v0.0.0-20240823005443-9b4947da3948 h1:kx6Ds3MlpiUHKj7syVnbp57++8WpuKPcR5yjLBjvLEA=
330+
golang.org/x/exp v0.0.0-20240823005443-9b4947da3948/go.mod h1:akd2r19cwCdwSwWeIdzYQGa/EZZyqcOdwWiwj5L5eKQ=
329331
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
330332
golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
331333
golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
@@ -417,12 +419,12 @@ google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98
417419
google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
418420
google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
419421
google.golang.org/genproto v0.0.0-20200911024640-645f7a48b24f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
420-
google.golang.org/genproto v0.0.0-20240814211410-ddb44dafa142 h1:oLiyxGgE+rt22duwci1+TG7bg2/L1LQsXwfjPlmuJA0=
421-
google.golang.org/genproto v0.0.0-20240814211410-ddb44dafa142/go.mod h1:G11eXq53iI5Q+kyNOmCvnzBaxEA2Q/Ik5Tj7nqBE8j4=
422-
google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142 h1:wKguEg1hsxI2/L3hUYrpo1RVi48K+uTyzKqprwLXsb8=
423-
google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142/go.mod h1:d6be+8HhtEtucleCbxpPW9PA9XwISACu8nvpPqF0BVo=
424-
google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142 h1:e7S5W7MGGLaSu8j3YjdezkZ+m1/Nm0uRVRMEMGk26Xs=
425-
google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU=
422+
google.golang.org/genproto v0.0.0-20240823204242-4ba0660f739c h1:TYOEhrQMrNDTAd2rX9m+WgGr8Ku6YNuj1D7OX6rWSok=
423+
google.golang.org/genproto v0.0.0-20240823204242-4ba0660f739c/go.mod h1:2rC5OendXvZ8wGEo/cSLheztrZDZaSoHanUcd1xtZnw=
424+
google.golang.org/genproto/googleapis/api v0.0.0-20240823204242-4ba0660f739c h1:e0zB268kOca6FbuJkYUGxfwG4DKFZG/8DLyv9Zv66cE=
425+
google.golang.org/genproto/googleapis/api v0.0.0-20240823204242-4ba0660f739c/go.mod h1:fO8wJzT2zbQbAjbIoos1285VfEIYKDDY+Dt+WpTkh6g=
426+
google.golang.org/genproto/googleapis/rpc v0.0.0-20240823204242-4ba0660f739c h1:Kqjm4WpoWvwhMPcrAczoTyMySQmYa9Wy2iL6Con4zn8=
427+
google.golang.org/genproto/googleapis/rpc v0.0.0-20240823204242-4ba0660f739c/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU=
426428
google.golang.org/grpc v1.12.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw=
427429
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
428430
google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=

0 commit comments

Comments
 (0)