mirror of
https://github.com/APIParkLab/APIPark.git
synced 2026-06-14 20:41:15 +08:00
Merge branch 'feature/sunanzhi/1.6' into 'main'
fix: resolve duplicate linked list data in model caused by updating vendor See merge request apipark/APIPark!246
This commit is contained in:
@@ -278,6 +278,7 @@ func (p *Provider) Logo() string {
|
||||
}
|
||||
|
||||
func (r *ModelRegistry) addModel(m IModel, isDefault bool) {
|
||||
_, exist := r.models.Get(m.ID())
|
||||
r.models.Set(m.ID(), m)
|
||||
|
||||
// get lock
|
||||
@@ -285,20 +286,23 @@ func (r *ModelRegistry) addModel(m IModel, isDefault bool) {
|
||||
shard.Lock()
|
||||
defer shard.Unlock()
|
||||
|
||||
// create model node
|
||||
node := &modelNode{
|
||||
model: m,
|
||||
typeKey: m.ModelType(),
|
||||
if exist {
|
||||
if node, exist := r.reverseMap[m.ID()]; exist {
|
||||
node.model = m
|
||||
}
|
||||
} else {
|
||||
node := &modelNode{
|
||||
model: m,
|
||||
typeKey: m.ModelType(),
|
||||
}
|
||||
if head := r.typeIndex[m.ModelType()]; head != nil {
|
||||
node.next = head
|
||||
head.prev = node
|
||||
}
|
||||
r.typeIndex[m.ModelType()] = node
|
||||
r.reverseMap[m.ID()] = node
|
||||
}
|
||||
|
||||
// update index
|
||||
if head := r.typeIndex[m.ModelType()]; head != nil {
|
||||
node.next = head
|
||||
head.prev = node
|
||||
}
|
||||
r.typeIndex[m.ModelType()] = node
|
||||
r.reverseMap[m.ID()] = node
|
||||
|
||||
// default model
|
||||
if isDefault {
|
||||
r.defaultModels.Set(m.ModelType(), m)
|
||||
|
||||
Reference in New Issue
Block a user