package seeds import ( "encoding/json" "io" "os" "github.com/Caknoooo/go-gin-clean-starter/database/entities" "gorm.io/gorm" ) type UserRoleSeed struct { UserName string `json:"name"` RoleName string `json:"role_name"` } func ListUserRoleSeeder(db *gorm.DB) error { jsonFile, err := os.Open("./database/seeders/json/users_roles.json") if err != nil { return err } jsonData, err := io.ReadAll(jsonFile) if err != nil { return err } var listUserRole []UserRoleSeed if err := json.Unmarshal(jsonData, &listUserRole); err != nil { return err } hasTable := db.Migrator().HasTable(&entities.M_User_Role{}) if !hasTable { if err := db.Migrator().CreateTable(&entities.M_User_Role{}); err != nil { return err } } for _, data := range listUserRole { var user entities.M_User var role entities.M_Role if err := db.Where("name = ?", data.UserName).First(&user).Error; err != nil { return err // user tidak ditemukan } if err := db.Where("name = ?", data.RoleName).First(&role).Error; err != nil { return err // role tidak ditemukan } var userRole entities.M_User_Role if err := db.FirstOrCreate(&userRole, entities.M_User_Role{ UserID: user.ID, RoleID: role.ID, }).Error; err != nil { return err } } return nil }