61 lines
1.3 KiB
Go
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)
|
|
}
|