package seeds import ( "encoding/json" "io" "os" "github.com/Caknoooo/go-gin-clean-starter/database/entities" "github.com/sirupsen/logrus" "gorm.io/gorm" ) type RolePermissionSeed struct { RoleName string `json:"role_name"` PermissionName string `json:"permission_name"` } func ListRolePermissionSeeder(db *gorm.DB) error { jsonFile, err := os.Open("./database/seeders/json/role_permissions.json") if err != nil { return err } jsonData, err := io.ReadAll(jsonFile) if err != nil { return err } var listRolePermission []RolePermissionSeed if err := json.Unmarshal(jsonData, &listRolePermission); err != nil { return err } hasTable := db.Migrator().HasTable(&entities.M_Role_Permission{}) if !hasTable { if err := db.Migrator().CreateTable(&entities.M_Role_Permission{}); err != nil { return err } } for _, data := range listRolePermission { var role entities.M_Role var permission entities.M_Permissions if err := db.Where("name = ?", data.RoleName).First(&role).Error; err != nil { logrus.Error("Role not found: ", err) return err // role tidak ditemukan } if err := db.Where("name = ?", data.PermissionName).First(&permission).Error; err != nil { logrus.Error("Permission not found: ", err) return err // permission tidak ditemukan } var rolePermission entities.M_Role_Permission if err := db.FirstOrCreate(&rolePermission, entities.M_Role_Permission{ RoleID: role.ID, PermissionID: permission.ID, }).Error; err != nil { return err } } return nil }