Skip to content

Commit 5d1675f

Browse files
author
Andrei Neagu
committed
extended store interface
1 parent 8d2ff4c commit 5d1675f

File tree

2 files changed

+15
-4
lines changed
  • services/dynamic-scheduler
    • src/simcore_service_dynamic_scheduler/services/generic_scheduler
    • tests/unit/services/generic_scheduler

2 files changed

+15
-4
lines changed

services/dynamic-scheduler/src/simcore_service_dynamic_scheduler/services/generic_scheduler/_store.py

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

171177
class _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:

services/dynamic-scheduler/tests/unit/services/generic_scheduler/test__store.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -260,9 +260,11 @@ async def _get_steps_count() -> int | None:
260260

261261
assert await _get_steps_count() is None
262262

263-
for i in range(10):
263+
for _ in range(10):
264264
await step_group_proxy.increment_and_get_done_steps_count()
265-
assert await _get_steps_count() == i + 1
265+
assert await _get_steps_count() == 1
266+
await step_group_proxy.decrement_and_get_done_steps_count()
267+
assert await _get_steps_count() == 0
266268

267269
await step_group_proxy.remove()
268270
assert await _get_steps_count() is None

0 commit comments

Comments
 (0)