Skip to content

Commit

Permalink
Rename WithForeignKeyConstraintDisabled to WithForeignKeys
Browse files Browse the repository at this point in the history
  • Loading branch information
karolis-arbaciauskas committed Oct 4, 2023
1 parent a769628 commit c732e6f
Show file tree
Hide file tree
Showing 5 changed files with 32 additions and 32 deletions.
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@ data "external_schema" "gorm" {
"load",
"--path", "./path/to/models",
"--dialect", "mysql", // | postgres | sqlite
"--disable-migration-foreign-key-constraint",
"--disable-foreign-keys",
]
}
```
Expand All @@ -144,7 +144,7 @@ import (
)

func main() {
stmts, err := gormschema.New("mysql" gormschema.WithForeignKeyConstraintDisabled()).Load(&models.User{}, &models.Pet{})
stmts, err := gormschema.New("mysql" gormschema.WithForeignKeys(false)).Load(&models.User{}, &models.Pet{})
if err != nil {
fmt.Fprintf(os.Stderr, "failed to load gorm schema: %v\n", err)
os.Exit(1)
Expand Down
4 changes: 2 additions & 2 deletions gormschema/gorm.go
Original file line number Diff line number Diff line change
Expand Up @@ -55,9 +55,9 @@ func (l *Loader) Load(models ...interface{}) (string, error) {
return s.Stmts(), nil
}

func WithForeignKeyConstraintDisabled() func(*gorm.Config) {
func WithForeignKeys(b bool) func(*gorm.Config) {
return func(c *gorm.Config) {
c.DisableForeignKeyConstraintWhenMigrating = true
c.DisableForeignKeyConstraintWhenMigrating = !b
}
}

Expand Down
4 changes: 2 additions & 2 deletions loader.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,8 @@ func handleError(err error, message string) {
}

func constructGormConfig() (config []func(*gorm.Config)) {
if {{ .DisableMigrationForeignKeyConstraint }} {
config = append(config, gormschema.WithForeignKeyConstraintDisabled())
if {{ .DisableForeignKeys }} {
config = append(config, gormschema.WithForeignKeys(false))
}

return
Expand Down
22 changes: 11 additions & 11 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,11 +39,11 @@ func main() {

// LoadCmd is a command to load models
type LoadCmd struct {
Path string `help:"path to schema package" required:""`
Models []string `help:"Models to load"`
Dialect string `help:"dialect to use" enum:"mysql,sqlite,postgres" required:""`
DisableMigrationForeignKeyConstraint bool `help:"disables foreign key constraint when migrating"`
out io.Writer
Path string `help:"path to schema package" required:""`
Models []string `help:"Models to load"`
Dialect string `help:"dialect to use" enum:"mysql,sqlite,postgres" required:""`
DisableForeignKeys bool `help:"disables foreign key constraint"`
out io.Writer
}

func (c *LoadCmd) Run() error {
Expand All @@ -54,9 +54,9 @@ func (c *LoadCmd) Run() error {
}
models := gatherModels(pkgs)
p := Payload{
Models: models,
Dialect: c.Dialect,
DisableMigrationForeignKeyConstraint: c.DisableMigrationForeignKeyConstraint,
Models: models,
Dialect: c.Dialect,
DisableForeignKeys: c.DisableForeignKeys,
}
var buf bytes.Buffer
if err := loaderTmpl.Execute(&buf, p); err != nil {
Expand Down Expand Up @@ -119,9 +119,9 @@ func filename(pkg string) string {
}

type Payload struct {
Models []model
Dialect string
DisableMigrationForeignKeyConstraint bool
Models []model
Dialect string
DisableForeignKeys bool
}

func (p Payload) Imports() []string {
Expand Down
30 changes: 15 additions & 15 deletions main_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,41 +9,41 @@ import (

func TestLoad(t *testing.T) {
testCases := []struct {
dialect string
disableMigrationForeignKeyConstraint bool
dialect string
disableForeignKeys bool
}{
{dialect: "mysql", disableMigrationForeignKeyConstraint: false},
{dialect: "sqlite", disableMigrationForeignKeyConstraint: false},
{dialect: "postgres", disableMigrationForeignKeyConstraint: false},
{dialect: "mysql", disableMigrationForeignKeyConstraint: true},
{dialect: "sqlite", disableMigrationForeignKeyConstraint: true},
{dialect: "postgres", disableMigrationForeignKeyConstraint: true},
{dialect: "mysql", disableForeignKeys: false},
{dialect: "sqlite", disableForeignKeys: false},
{dialect: "postgres", disableForeignKeys: false},
{dialect: "mysql", disableForeignKeys: true},
{dialect: "sqlite", disableForeignKeys: true},
{dialect: "postgres", disableForeignKeys: true},
}

for _, tc := range testCases {
t.Run(tc.dialect, func(t *testing.T) {
var buf bytes.Buffer
cmd := &LoadCmd{
Path: "./internal/testdata/models",
Dialect: tc.dialect,
out: &buf,
DisableMigrationForeignKeyConstraint: tc.disableMigrationForeignKeyConstraint,
Path: "./internal/testdata/models",
Dialect: tc.dialect,
out: &buf,
DisableForeignKeys: tc.disableForeignKeys,
}
err := cmd.Run()
require.NoError(t, err)

assertLoadOutput(t, buf.String(), tc.disableMigrationForeignKeyConstraint)
assertLoadOutput(t, buf.String(), tc.disableForeignKeys)
})
}
}

func assertLoadOutput(t *testing.T, output string, disableMigrationForeignKeyConstraint bool) {
func assertLoadOutput(t *testing.T, output string, disableForeignKeys bool) {
require.Contains(t, output, "CREATE TABLE")
require.Contains(t, output, "pets")
require.Contains(t, output, "users")
require.NotContains(t, output, "toys") // Struct without GORM annotations

if disableMigrationForeignKeyConstraint {
if disableForeignKeys {
require.NotContains(t, output, "CONSTRAINT")
require.NotContains(t, output, "FOREIGN KEY")
} else {
Expand Down

0 comments on commit c732e6f

Please sign in to comment.