43 lines
787 B
Go
43 lines
787 B
Go
package migration
|
|
|
|
import (
|
|
"fmt"
|
|
"io"
|
|
"os"
|
|
|
|
"ariga.io/atlas-provider-gorm/gormschema"
|
|
"gorm.io/gorm"
|
|
"gorm.io/gorm/schema"
|
|
)
|
|
|
|
func loader(input string) {
|
|
gormCfg := &gorm.Config{
|
|
NamingStrategy: schema.NamingStrategy{
|
|
SingularTable: true,
|
|
NoLowerCase: true,
|
|
},
|
|
}
|
|
stmts, err := gormschema.New("postgres", gormschema.WithConfig(gormCfg)).Load(getEntities(input)...)
|
|
if err != nil {
|
|
fmt.Fprintf(os.Stderr, "failed to load gorm schema: %v\n", err)
|
|
os.Exit(1)
|
|
}
|
|
_, _ = io.WriteString(os.Stdout, stmts)
|
|
}
|
|
|
|
func getEntities(input string) []any {
|
|
switch input {
|
|
case "main":
|
|
return getMainEntities()
|
|
case "satusehat":
|
|
return getSatuSehatEntities()
|
|
case "simgossync":
|
|
return getSyncEntities()
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func Migrate(input string) {
|
|
loader(input)
|
|
}
|