samples-js/functions/counter.js (26 lines of code) (raw):
const df = require("durable-functions");
const counterEntityName = "counterEntity";
df.app.entity(counterEntityName, async function (context) {
await Promise.resolve();
let currentValue = context.df.getState(() => 0);
switch (context.df.operationName) {
case "add":
const amount = context.df.getInput();
currentValue += amount;
break;
case "reset":
currentValue = 0;
break;
case "get":
context.df.return(currentValue);
break;
}
context.df.setState(currentValue);
});
df.app.orchestration("counterOrchestration", function* (context) {
const entityId = new df.EntityId(counterEntityName, "myCounter");
currentValue = yield context.df.callEntity(entityId, "get");
if (currentValue < 10) {
yield context.df.callEntity(entityId, "add", 1);
}
});