77use Casbin \Persist \Adapter ;
88use Casbin \Persist \AdapterHelper ;
99use Casbin \Persist \UpdatableAdapter ;
10+ use Casbin \Persist \BatchAdapter ;
1011use think \facade \Db ;
1112
1213/**
1314 * DatabaseAdapter.
1415 *
15161617 */
17- class DatabaseAdapter implements Adapter, UpdatableAdapter
18+ class DatabaseAdapter implements Adapter, UpdatableAdapter, BatchAdapter
1819{
1920 use AdapterHelper;
2021
@@ -101,6 +102,30 @@ public function addPolicy(string $sec, string $ptype, array $rule): void
101102 $ this ->savePolicyLine ($ ptype , $ rule );
102103 }
103104
105+ /**
106+ * Adds a policy rules to the storage.
107+ * This is part of the Auto-Save feature.
108+ *
109+ * @param string $sec
110+ * @param string $ptype
111+ * @param string[][] $rules
112+ */
113+ public function addPolicies (string $ sec , string $ ptype , array $ rules ): void
114+ {
115+ $ cols = [];
116+ $ i = 0 ;
117+
118+ foreach ($ rules as $ rule ) {
119+ $ temp ['ptype ' ] = $ ptype ;
120+ foreach ($ rule as $ key => $ value ) {
121+ $ temp ['v ' . strval ($ key )] = $ value ;
122+ }
123+ $ cols [$ i ++] = $ temp ;
124+ $ temp = [];
125+ }
126+ $ this ->model ->cache ('tauthz ' )->insertAll ($ cols );
127+ }
128+
104129 /**
105130 * This is part of the Auto-Save feature.
106131 *
@@ -125,6 +150,23 @@ public function removePolicy(string $sec, string $ptype, array $rule): void
125150 }
126151 }
127152
153+ /**
154+ * Removes policy rules from the storage.
155+ * This is part of the Auto-Save feature.
156+ *
157+ * @param string $sec
158+ * @param string $ptype
159+ * @param string[][] $rules
160+ */
161+ public function removePolicies (string $ sec , string $ ptype , array $ rules ): void
162+ {
163+ Db::transaction (function () use ($ sec , $ ptype , $ rules ) {
164+ foreach ($ rules as $ rule ) {
165+ $ this ->removePolicy ($ sec , $ ptype , $ rule );
166+ }
167+ });
168+ }
169+
128170 /**
129171 * RemoveFilteredPolicy removes policy rules that match the filter from the storage.
130172 * This is part of the Auto-Save feature.
0 commit comments