Skip to content

Commit 3a9c361

Browse files
authored
Get method on promise store (#203)
1 parent e173c4c commit 3a9c361

File tree

4 files changed

+23
-2
lines changed

4 files changed

+23
-2
lines changed

resonate/models/store.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ def tasks(self) -> TaskStore: ...
2121

2222

2323
class PromiseStore(Protocol):
24+
def get(self, *, id: str) -> DurablePromise: ...
2425
def create(
2526
self,
2627
*,

resonate/resonate.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@ def __init__(
4141
url: str | None = None,
4242
pid: str | None = None,
4343
ttl: int = 10,
44-
opts: Options | None = None,
4544
anycast: str | None = None,
4645
unicast: str | None = None,
4746
store: Store | None = None,
@@ -53,7 +52,7 @@ def __init__(
5352
self._started = False
5453

5554
self._pid = pid or uuid.uuid4().hex
56-
self._opts = opts or Options()
55+
self._opts = Options()
5756

5857
self._registry = registry or Registry()
5958
self._dependencies = dependencies or Dependencies()

resonate/stores/local.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,16 @@ def __init__(self, store: LocalStore, encoder: Encoder[Any, str | None], promise
113113
self._routers = routers
114114
self._clock = clock
115115

116+
def get(self, *, id: str) -> DurablePromise:
117+
record = self._promises.get(id)
118+
if record is None:
119+
msg = "Not found"
120+
raise ResonateStoreError(msg, "STORE_NOT_FOUND")
121+
return DurablePromise.from_dict(
122+
self._store,
123+
record.to_dict(),
124+
)
125+
116126
def create(
117127
self,
118128
*,

resonate/stores/remote.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,17 @@ def _headers(self, *, strict: bool, ikey: str | None) -> dict[str, str]:
5050
headers["idempotency-Key"] = ikey
5151
return headers
5252

53+
def get(self, *, id: str) -> DurablePromise:
54+
req = Request(
55+
method="post",
56+
url=f"{self._store.url}/promises/{id}",
57+
)
58+
res = _call(req.prepare()).json()
59+
return DurablePromise.from_dict(
60+
self._store,
61+
res,
62+
)
63+
5364
def create(
5465
self,
5566
*,

0 commit comments

Comments
 (0)