wms-be/database/seeders/seeds/maintenance_group_role_seed.go

59 lines
1.6 KiB
Go

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
}