@@ -38,18 +38,28 @@ async def get(
3838 * ,
3939 rule_id : str | None = None ,
4040 client_key : str | None = None ,
41- ) -> Rule :
41+ rule_ids : list [str ] | None = None ,
42+ client_keys : list [str ] | None = None ,
43+ ) -> Rule | list [Rule ]:
4244 """Get a Rule.
4345
4446 Args:
4547 rule_id: The ID of the rule.
4648 client_key: The client key of the rule.
49+ rule_ids: List of rule IDs to get.
50+ client_keys: List of client keys to get.
4751
4852 Returns:
49- The Rule.
53+ The Rule or Rules .
5054 """
51- rule = await self ._low_level_client .get_rule (rule_id = rule_id , client_key = client_key )
52- return self ._apply_client_to_instance (rule )
55+ if rule_id or client_key :
56+ rule = await self ._low_level_client .get_rule (rule_id = rule_id , client_key = client_key )
57+ return self ._apply_client_to_instance (rule )
58+ else :
59+ rules = await self ._low_level_client .batch_get_rules (
60+ rule_ids = rule_ids , client_keys = client_keys
61+ )
62+ return self ._apply_client_to_instances (rules )
5363
5464 async def list_ (
5565 self ,
@@ -166,6 +176,7 @@ async def archive(
166176 self ,
167177 * ,
168178 rule : str | Rule | None = None ,
179+ client_key : str | None = None ,
169180 rules : list [Rule ] | None = None ,
170181 rule_ids : list [str ] | None = None ,
171182 client_keys : list [str ] | None = None ,
@@ -174,89 +185,50 @@ async def archive(
174185
175186 Args:
176187 rule: The Rule to archive.
188+ client_key: The client key or the Rule to archive.
177189 rules: The Rules to archive.
178190 rule_ids: The rule IDs to archive.
179- client_keys: The client keys to archive.
180- """
181- if rule :
182- if isinstance (rule , Rule ):
183- await self ._low_level_client .archive_rule (rule_id = rule .id_ )
184- else :
185- await self ._low_level_client .archive_rule (rule_id = rule )
186- elif rules :
187- if len (rules ) == 1 :
188- await self ._low_level_client .archive_rule (rule_id = rules [0 ].id_ )
189- else :
190- await self ._low_level_client .batch_archive_rules (
191- rule_ids = [r .id_ for r in rules ], # type: ignore
192- )
193- elif rule_ids :
194- if len (rule_ids ) == 1 :
195- await self ._low_level_client .archive_rule (rule_id = rule_ids [0 ])
196- else :
197- await self ._low_level_client .batch_archive_rules (rule_ids = rule_ids )
198- elif client_keys :
199- await self ._low_level_client .batch_archive_rules (client_keys = client_keys )
200- else :
201- raise ValueError ("Either rules, rule_ids, or client_keys must be provided" )
202-
203- async def restore (
204- self ,
205- * ,
206- rule : str | Rule ,
207- rule_id : str | None = None ,
208- client_key : str | None = None ,
209- ) -> Rule :
210- """Restore a rule.
211-
212- Args:
213- rule: The Rule or rule ID to restore.
214- rule_id: The rule ID to restore (alternative to rule parameter).
215- client_key: The client key to restore (alternative to rule parameter).
216-
217- Returns:
218- The restored Rule.
191+ client_keys: The client keys of the Rules tp archive.
219192 """
220- if rule_id or client_key :
221- restored_rule = await self ._low_level_client .restore_rule (
222- rule_id = rule_id , client_key = client_key
193+ if rule or client_key :
194+ rule_id = rule ._id_or_error if isinstance (rule , Rule ) else rule
195+ return await self ._low_level_client .archive_rule (rule_id = rule_id , client_key = client_key )
196+ elif rules or rule_ids or client_keys :
197+ rule_ids = rule_ids or [rule ._id_or_error for rule in rules ]
198+ return await self ._low_level_client .batch_archive_rules (
199+ rule_ids = rule_ids , client_keys = client_keys
223200 )
224201 else :
202+ raise ValueError ("Either rule or rules must be provided" )
203+
204+ async def unarchive (
205+ self ,
206+ * ,
207+ rule : str | Rule | None = None ,
208+ client_key : str | None = None ,
209+ rules : list [Rule ] | None = None ,
210+ rule_ids : list [str ] | None = None ,
211+ client_keys : list [str ] | None = None ,
212+ ) -> None :
213+ """Unarchive a Rule or multiple.
214+
215+ Args:
216+ rule: The Rule to restore.
217+ client_key: The client key of the Rule to restore.
218+ rules: The Rules to restore.
219+ rule_ids: The rule IDs to restore.
220+ client_keys: The client keys of the Rules to restore.
221+ """
222+ if rule or client_key :
225223 rule_id = rule ._id_or_error if isinstance (rule , Rule ) else rule
226- restored_rule = await self ._low_level_client .restore_rule (rule_id = rule_id )
227-
228- return self ._apply_client_to_instance (restored_rule )
224+ return await self ._low_level_client .unarchive_rule (rule_id = rule_id , client_key = client_key )
225+ elif rules or rule_ids or client_keys :
226+ rule_ids = rule_ids or [rule ._id_or_error for rule in rules ]
227+ return await self ._low_level_client .batch_unarchive_rules (
228+ rule_ids = rule_ids , client_keys = client_keys
229+ )
230+ else :
231+ raise ValueError ("Either rule or rules must be provided" )
229232
230- async def batch_restore (
231- self ,
232- * ,
233- rule_ids : list [str ] | None = None ,
234- client_keys : list [str ] | None = None ,
235- ) -> None :
236- """Batch restore rules.
237233
238- Args:
239- rule_ids: List of rule IDs to restore.
240- client_keys: List of client keys to undelete.
241- """
242- await self ._low_level_client .batch_restore_rules (rule_ids = rule_ids , client_keys = client_keys )
243234
244- async def batch_get (
245- self ,
246- * ,
247- rule_ids : list [str ] | None = None ,
248- client_keys : list [str ] | None = None ,
249- ) -> list [Rule ]:
250- """Get multiple rules by rule IDs or client keys.
251-
252- Args:
253- rule_ids: List of rule IDs to get.
254- client_keys: List of client keys to get.
255-
256- Returns:
257- List of Rules.
258- """
259- rules = await self ._low_level_client .batch_get_rules (
260- rule_ids = rule_ids , client_keys = client_keys
261- )
262- return self ._apply_client_to_instances (rules )
0 commit comments