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 }