78 lines
1.8 KiB
Go
78 lines
1.8 KiB
Go
package seeds
|
|
|
|
import (
|
|
"encoding/json"
|
|
"fmt"
|
|
"io"
|
|
"os"
|
|
|
|
"github.com/Caknoooo/go-gin-clean-starter/database/entities"
|
|
"github.com/google/uuid"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
type MaintenanceGroupSeed struct {
|
|
ID string `json:"id"`
|
|
Code string `json:"code"`
|
|
Name string `json:"name"`
|
|
Description string `json:"description"`
|
|
ClientName string `json:"client_name"`
|
|
}
|
|
|
|
func ListMaintenanceGroupSeeder(db *gorm.DB) error {
|
|
jsonFile, err := os.Open("./database/seeders/json/maintenance_group.json")
|
|
if err != nil {
|
|
fmt.Println("Error opening file:", err)
|
|
return err
|
|
}
|
|
|
|
jsonData, err := io.ReadAll(jsonFile)
|
|
if err != nil {
|
|
fmt.Println("Error reading file:", err)
|
|
return err
|
|
}
|
|
|
|
var listMaintenanceGroup []MaintenanceGroupSeed
|
|
if err := json.Unmarshal(jsonData, &listMaintenanceGroup); err != nil {
|
|
fmt.Println("Error unmarshalling JSON:", err)
|
|
return err
|
|
}
|
|
|
|
hasTable := db.Migrator().HasTable(&entities.M_MaintenanceGroup{})
|
|
if !hasTable {
|
|
fmt.Println("Creating table: M_MaintenanceGroup")
|
|
if err := db.Migrator().CreateTable(&entities.M_MaintenanceGroup{}); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
|
|
for _, data := range listMaintenanceGroup {
|
|
var maintenanceGroup entities.M_MaintenanceGroup
|
|
var client entities.M_Client
|
|
|
|
if err := db.Where("name = ?", data.ClientName).First(&client).Error; err != nil {
|
|
fmt.Println("Client not found:", err)
|
|
return err // client tidak ditemukan
|
|
}
|
|
|
|
parsedUUID, err := uuid.Parse(data.ID)
|
|
if err != nil {
|
|
fmt.Println("Invalid UUID:", err)
|
|
return err
|
|
}
|
|
|
|
if err := db.FirstOrCreate(&maintenanceGroup, entities.M_MaintenanceGroup{
|
|
ID: parsedUUID,
|
|
Code: data.Code,
|
|
Name: data.Name,
|
|
Description: data.Description,
|
|
ClientID: client.ID,
|
|
}).Error; err != nil {
|
|
fmt.Println("Error seeding maintenance group:", err)
|
|
return err
|
|
}
|
|
}
|
|
|
|
return nil
|
|
}
|