Skip to content

Commit 6aedd6b

Browse files
committed
update rules archive/unarchive
1 parent a46cc2a commit 6aedd6b

2 files changed

Lines changed: 75 additions & 109 deletions

File tree

python/lib/sift_client/_internal/low_level_wrappers/rules.py

Lines changed: 22 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -4,23 +4,23 @@
44
from typing import TYPE_CHECKING, Any, cast
55

66
from sift.rules.v1.rules_pb2 import (
7-
BatchDeleteRulesRequest,
7+
ArchiveRuleRequest,
8+
BatchArchiveRulesRequest,
89
BatchGetRulesRequest,
910
BatchGetRulesResponse,
10-
BatchUndeleteRulesRequest,
11+
BatchUnarchiveRulesRequest,
1112
BatchUpdateRulesRequest,
1213
BatchUpdateRulesResponse,
1314
CalculatedChannelConfig,
1415
ContextualChannels,
1516
CreateRuleRequest,
1617
CreateRuleResponse,
17-
DeleteRuleRequest,
1818
GetRuleRequest,
1919
GetRuleResponse,
2020
ListRulesRequest,
2121
RuleAssetConfiguration,
2222
RuleConditionExpression,
23-
UndeleteRuleRequest,
23+
UnarchiveRuleRequest,
2424
UpdateConditionRequest,
2525
UpdateRuleRequest,
2626
UpdateRuleResponse,
@@ -328,7 +328,7 @@ async def archive_rule(self, rule_id: str | None = None, client_key: str | None
328328
if client_key is not None:
329329
request_kwargs["client_key"] = client_key
330330

331-
request = DeleteRuleRequest(**request_kwargs)
331+
request = ArchiveRuleRequest(**request_kwargs)
332332
await self._grpc_client.get_stub(RuleServiceStub).ArchiveRule(request)
333333

334334
async def batch_archive_rules(
@@ -338,7 +338,7 @@ async def batch_archive_rules(
338338
339339
Args:
340340
rule_ids: List of rule IDs to archive.
341-
client_keys: List of client keys to delete. If both are provided, rule_ids will be used.
341+
client_keys: List of client keys to archive. If both are provided, rule_ids will be used.
342342
343343
Raises:
344344
ValueError: If neither rule_ids nor client_keys is provided.
@@ -352,59 +352,53 @@ async def batch_archive_rules(
352352
if client_keys is not None:
353353
request_kwargs["client_keys"] = client_keys
354354

355-
request = BatchDeleteRulesRequest(**request_kwargs)
356-
await self._grpc_client.get_stub(RuleServiceStub).BatchDeleteRules(request)
355+
request = BatchArchiveRulesRequest(**request_kwargs)
356+
await self._grpc_client.get_stub(RuleServiceStub).BatchArchiveRules(request)
357357

358-
async def restore_rule(self, rule_id: str | None = None, client_key: str | None = None) -> Rule:
359-
"""Restore a rule.
358+
async def unarchive_rule(self, rule_id: str | None = None, client_key: str | None = None) -> Rule:
359+
"""Unarchive a rule.
360360
361361
Args:
362-
rule_id: The rule ID to restore.
363-
client_key: The client key to restore.
362+
rule_id: The rule ID to unarchive.
363+
client_key: The client key to unarchive.
364364
365365
Returns:
366-
The restored Rule.
366+
The unarchived Rule.
367367
368368
Raises:
369369
ValueError: If neither rule_id nor client_key is provided.
370370
"""
371-
if rule_id is None and client_key is None:
372-
raise ValueError("Either rule_id or client_key must be provided")
373-
374371
request_kwargs: dict[str, Any] = {}
375372
if rule_id is not None:
376373
request_kwargs["rule_id"] = rule_id
377374
if client_key is not None:
378375
request_kwargs["client_key"] = client_key
379376

380-
request = UndeleteRuleRequest(**request_kwargs)
381-
await self._grpc_client.get_stub(RuleServiceStub).UndeleteRule(request)
382-
# Get the restored rule
377+
request = UnarchiveRuleRequest(**request_kwargs)
378+
await self._grpc_client.get_stub(RuleServiceStub).UnarchiveRule(request)
379+
# Get the unarchived rule
383380
return await self.get_rule(rule_id=rule_id, client_key=client_key)
384381

385-
async def batch_restore_rules(
382+
async def batch_unarchive_rules(
386383
self, rule_ids: list[str] | None = None, client_keys: list[str] | None = None
387384
) -> None:
388-
"""Batch restore rules.
385+
"""Batch unarchive rules.
389386
390387
Args:
391-
rule_ids: List of rule IDs to restore.
392-
client_keys: List of client keys to restore.
388+
rule_ids: List of rule IDs to unarchive.
389+
client_keys: List of client keys to unarchive.
393390
394391
Raises:
395392
ValueError: If neither rule_ids nor client_keys is provided.
396393
"""
397-
if rule_ids is None and client_keys is None:
398-
raise ValueError("Either rule_ids or client_keys must be provided")
399-
400394
request_kwargs: dict[str, Any] = {}
401395
if rule_ids is not None:
402396
request_kwargs["rule_ids"] = rule_ids
403397
if client_keys is not None:
404398
request_kwargs["client_keys"] = client_keys
405399

406-
request = BatchUndeleteRulesRequest(**request_kwargs)
407-
await self._grpc_client.get_stub(RuleServiceStub).BatchUndeleteRules(request)
400+
request = BatchUnarchiveRulesRequest(**request_kwargs)
401+
await self._grpc_client.get_stub(RuleServiceStub).BatchUnarchiveRules(request)
408402

409403
async def list_rules(
410404
self,

python/lib/sift_client/resources/rules.py

Lines changed: 53 additions & 81 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)