gorm/cli/generatorDbConfig.go
2025-08-21 05:32:26 +07:00

61 lines
1.3 KiB
Go

package cli
import (
"fmt"
"os"
"strings"
)
// GenerateDBConfig membuat file configs/db.go untuk berbagai DB
func GenerateDBConfig(baseFolder, dbType string) error {
configsFolder := fmt.Sprintf("%s/configs", baseFolder)
if err := os.MkdirAll(configsFolder, os.ModePerm); err != nil {
return err
}
dbFile := fmt.Sprintf("%s/db.go", configsFolder)
dbType = strings.ToLower(dbType)
var importLine, openLine string
switch dbType {
case "postgres":
importLine = `"gorm.io/driver/postgres"`
openLine = `gorm.Open(postgres.Open(dsn), &gorm.Config{})`
case "mysql":
importLine = `"gorm.io/driver/mysql"`
openLine = `gorm.Open(mysql.Open(dsn), &gorm.Config{})`
case "sqlite":
importLine = `"gorm.io/driver/sqlite"`
openLine = `gorm.Open(sqlite.Open(dsn), &gorm.Config{})`
case "sqlserver":
importLine = `"gorm.io/driver/sqlserver"`
openLine = `gorm.Open(sqlserver.Open(dsn), &gorm.Config{})`
default:
return fmt.Errorf("Unsupported DB type: %s", dbType)
}
content := fmt.Sprintf(`package configs
import (
"fmt"
"log"
"gorm.io/gorm"
%s
)
var DB *gorm.DB
func InitDB(dsn string) {
var err error
DB, err = %s
if err != nil {
log.Fatalf("Failed to connect to database: %%v", err)
}
fmt.Println("Database connected via GORM")
}
`, importLine, openLine)
return os.WriteFile(dbFile, []byte(content), 0644)
}