|
@@ -3,6 +3,7 @@ package controller
|
|
|
import (
|
|
import (
|
|
|
"fmt"
|
|
"fmt"
|
|
|
"net/http"
|
|
"net/http"
|
|
|
|
|
+ "regexp"
|
|
|
"slices"
|
|
"slices"
|
|
|
"strings"
|
|
"strings"
|
|
|
"sync"
|
|
"sync"
|
|
@@ -169,10 +170,7 @@ func collectPendingUpstreamModelChangesFromModels(
|
|
|
upstreamSet[modelName] = struct{}{}
|
|
upstreamSet[modelName] = struct{}{}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- ignoredSet := make(map[string]struct{})
|
|
|
|
|
- for _, modelName := range normalizeModelNames(ignoredModels) {
|
|
|
|
|
- ignoredSet[modelName] = struct{}{}
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ normalizedIgnoredModels := normalizeModelNames(ignoredModels)
|
|
|
|
|
|
|
|
redirectSourceSet := make(map[string]struct{}, len(modelMapping))
|
|
redirectSourceSet := make(map[string]struct{}, len(modelMapping))
|
|
|
redirectTargetSet := make(map[string]struct{}, len(modelMapping))
|
|
redirectTargetSet := make(map[string]struct{}, len(modelMapping))
|
|
@@ -193,7 +191,13 @@ func collectPendingUpstreamModelChangesFromModels(
|
|
|
if _, ok := coveredUpstreamSet[modelName]; ok {
|
|
if _, ok := coveredUpstreamSet[modelName]; ok {
|
|
|
return false
|
|
return false
|
|
|
}
|
|
}
|
|
|
- if _, ok := ignoredSet[modelName]; ok {
|
|
|
|
|
|
|
+ if lo.ContainsBy(normalizedIgnoredModels, func(ignoredModel string) bool {
|
|
|
|
|
+ if regexBody, ok := strings.CutPrefix(ignoredModel, "regex:"); ok {
|
|
|
|
|
+ matched, err := regexp.MatchString(strings.TrimSpace(regexBody), modelName)
|
|
|
|
|
+ return err == nil && matched
|
|
|
|
|
+ }
|
|
|
|
|
+ return ignoredModel == modelName
|
|
|
|
|
+ }) {
|
|
|
return false
|
|
return false
|
|
|
}
|
|
}
|
|
|
return true
|
|
return true
|