Skip to content

Commit 51b06eb

Browse files
authored
Merge pull request #132 from tangyang9464/batch
fix: change AddPolicies to batch insert
2 parents 8fe458e + 992ab30 commit 51b06eb

File tree

2 files changed

+15
-9
lines changed

2 files changed

+15
-9
lines changed

adapter.go

+6-9
Original file line numberDiff line numberDiff line change
@@ -553,15 +553,12 @@ func (a *Adapter) RemovePolicy(sec string, ptype string, rule []string) error {
553553

554554
// AddPolicies adds multiple policy rules to the storage.
555555
func (a *Adapter) AddPolicies(sec string, ptype string, rules [][]string) error {
556-
return a.db.Transaction(func(tx *gorm.DB) error {
557-
for _, rule := range rules {
558-
line := a.savePolicyLine(ptype, rule)
559-
if err := tx.Create(&line).Error; err != nil {
560-
return err
561-
}
562-
}
563-
return nil
564-
})
556+
var lines []CasbinRule
557+
for _, rule := range rules {
558+
line := a.savePolicyLine(ptype, rule)
559+
lines = append(lines, line)
560+
}
561+
return a.db.Create(&lines).Error
565562
}
566563

567564
// RemovePolicies removes multiple policy rules from the storage.

adapter_test.go

+9
Original file line numberDiff line numberDiff line change
@@ -516,3 +516,12 @@ func TestAdapters(t *testing.T) {
516516
//testUpdatePolicy(t, a)
517517
//testUpdatePolicies(t, a)
518518
}
519+
520+
func TestAddPolicies(t *testing.T) {
521+
a := initAdapter(t, "mysql", "root:@tcp(127.0.0.1:3306)/", "casbin", "casbin_rule")
522+
e, _ := casbin.NewEnforcer("examples/rbac_model.conf", a)
523+
e.AddPolicies([][]string{{"jack", "data1", "read"}, {"jack2", "data1", "read"}})
524+
e.LoadPolicy()
525+
526+
testGetPolicy(t, e, [][]string{{"alice", "data1", "read"}, {"bob", "data2", "write"}, {"data2_admin", "data2", "read"}, {"data2_admin", "data2", "write"}, {"jack", "data1", "read"}, {"jack2", "data1", "read"}})
527+
}

0 commit comments

Comments
 (0)