@@ -167,6 +167,12 @@ async def increase_and_get(self, hash_key: str, key: str) -> NonNegativeInt:
167167 self .redis .hincrby (hash_key , key , amount = 1 )
168168 )
169169
170+ async def decrease_and_get (self , hash_key : str , key : str ) -> NonNegativeInt :
171+ """decrease a key in a hash by 1 and returns the new value"""
172+ return await handle_redis_returns_union_types (
173+ self .redis .hincrby (hash_key , key , amount = - 1 )
174+ )
175+
170176
171177class _UpdateScheduleDataDict (TypedDict ):
172178 operation_name : NotRequired [OperationName ]
@@ -264,6 +270,9 @@ def _get_hash_key(self) -> str:
264270 async def increment_and_get_done_steps_count (self ) -> NonNegativeInt :
265271 return await self ._store .increase_and_get (self ._get_hash_key (), "done_steps" )
266272
273+ async def decrement_and_get_done_steps_count (self ) -> NonNegativeInt :
274+ return await self ._store .decrease_and_get (self ._get_hash_key (), "done_steps" )
275+
267276 async def remove (self ) -> None :
268277 await self ._store .remove (self ._get_hash_key ())
269278
@@ -277,7 +286,7 @@ class _StepDict(TypedDict):
277286 success_processed : NotRequired [bool ]
278287
279288
280- _DeleteStepKeys = Literal [
289+ DeleteStepKeys = Literal [
281290 "deferred_created" ,
282291 "status" ,
283292 "deferred_task_uid" ,
@@ -356,7 +365,7 @@ async def set(self, key: str, value: Any) -> None:
356365 async def set_multiple (self , values : _StepDict ) -> None :
357366 await self ._store .set_multiple (self ._get_hash_key (), updates = values ) # type: ignore[arg-type]
358367
359- async def delete (self , * keys : _DeleteStepKeys ) -> None :
368+ async def delete (self , * keys : DeleteStepKeys ) -> None :
360369 await self ._store .delete (self ._get_hash_key (), * keys )
361370
362371 async def remove (self ) -> None :
0 commit comments