Skip to content

Commit 87dd6fe

Browse files
authored
fix: optimize performance for loop in UpdateFilteredPolicies() (#185)
1 parent 198ef24 commit 87dd6fe

File tree

1 file changed

+9
-10
lines changed

1 file changed

+9
-10
lines changed

adapter.go

+9-10
Original file line numberDiff line numberDiff line change
@@ -835,17 +835,16 @@ func (a *Adapter) UpdateFilteredPolicies(sec string, ptype string, newPolicies [
835835
}
836836

837837
tx := a.db.Begin()
838-
838+
str, args := line.queryString()
839+
if err := tx.Where(str, args...).Find(&oldP).Error; err != nil {
840+
tx.Rollback()
841+
return nil, err
842+
}
843+
if err := tx.Where(str, args...).Delete([]CasbinRule{}).Error; err != nil {
844+
tx.Rollback()
845+
return nil, err
846+
}
839847
for i := range newP {
840-
str, args := line.queryString()
841-
if err := tx.Where(str, args...).Find(&oldP).Error; err != nil {
842-
tx.Rollback()
843-
return nil, err
844-
}
845-
if err := tx.Where(str, args...).Delete([]CasbinRule{}).Error; err != nil {
846-
tx.Rollback()
847-
return nil, err
848-
}
849848
if err := tx.Create(&newP[i]).Error; err != nil {
850849
tx.Rollback()
851850
return nil, err

0 commit comments

Comments
 (0)