70bf21e064
Deploy (to testing) and Test Playground Preview Worker / Deploy Playground Preview Worker (testing) (push) Has been skipped
Deploy Workers Shared Staging / Deploy Workers Shared Staging (push) Failing after 0s
Prerelease / build (push) Has been skipped
Handle Changesets / Handle Changesets (push) Has been cancelled
Semgrep OSS scan / semgrep-oss (push) Has been cancelled
36 lines
826 B
TypeScript
36 lines
826 B
TypeScript
import type { Counter } from "../worker-b";
|
|
|
|
interface Env {
|
|
COUNTERS: DurableObjectNamespace<Counter>;
|
|
}
|
|
|
|
export default {
|
|
async fetch(request, env) {
|
|
const url = new URL(request.url);
|
|
const name = url.searchParams.get("name");
|
|
|
|
if (!name) {
|
|
throw new Error(
|
|
"Select a Durable Object to contact by using the `name` URL query string parameter, for example, ?name=A"
|
|
);
|
|
}
|
|
|
|
const id = env.COUNTERS.idFromName(name);
|
|
const stub = env.COUNTERS.get(id);
|
|
let count = null;
|
|
|
|
switch (url.pathname) {
|
|
case "/increment":
|
|
count = await stub.increment();
|
|
break;
|
|
case "/":
|
|
count = await stub.getCounterValue();
|
|
break;
|
|
default:
|
|
throw new Error("Unhandled route");
|
|
}
|
|
|
|
return new Response(`From worker-a: ${JSON.stringify({ name, count })}`);
|
|
},
|
|
} satisfies ExportedHandler<Env>;
|