package seeds import ( "encoding/json" "io" "os" "github.com/Caknoooo/go-gin-clean-starter/database/entities" "gorm.io/gorm" ) type MaintenanceGroupRoleSeed struct { MaintenanceGroupID string `json:"maintenance_group_id"` RoleID string `json:"role_id"` Level int `json:"level"` } func ListMaintenanceGroupRoleSeeder(db *gorm.DB) error { jsonFile, err := os.Open("./database/seeders/json/maintenance_group_roles.json") if err != nil { return err } jsonData, err := io.ReadAll(jsonFile) if err != nil { return err } var listMaintenanceGroupRole []MaintenanceGroupRoleSeed if err := json.Unmarshal(jsonData, &listMaintenanceGroupRole); err != nil { return err } hasTable := db.Migrator().HasTable(&entities.M_MaintenanceGroupRole{}) if !hasTable { if err := db.Migrator().CreateTable(&entities.M_MaintenanceGroupRole{}); err != nil { return err } } for _, data := range listMaintenanceGroupRole { var maintenanceGroup entities.M_MaintenanceGroup var role entities.M_Role if err := db.Where("id = ?", data.MaintenanceGroupID).First(&maintenanceGroup).Error; err != nil { return err // maintenance group tidak ditemukan } if err := db.Where("id = ?", data.RoleID).First(&role).Error; err != nil { return err // role tidak ditemukan } var maintenanceGroupRole entities.M_MaintenanceGroupRole if err := db.FirstOrCreate(&maintenanceGroupRole, entities.M_MaintenanceGroupRole{ MaintenanceGroupID: maintenanceGroup.ID, RoleID: role.ID, Level: &data.Level, }).Error; err != nil { return err } } return nil }