From f5ae8b5cb2e623a83c64915b4e018074cd8e4aeb Mon Sep 17 00:00:00 2001 From: Jason Hall Date: Sat, 12 Aug 2023 10:40:58 -0400 Subject: [PATCH] demo using ESM with KV and R2 Signed-off-by: Jason Hall --- cf-worker/main.tf | 12 ++++++++++++ cf-worker/script.js | 22 ++++++++++++++++------ 2 files changed, 28 insertions(+), 6 deletions(-) diff --git a/cf-worker/main.tf b/cf-worker/main.tf index 3605f49..5f4f6d2 100644 --- a/cf-worker/main.tf +++ b/cf-worker/main.tf @@ -20,12 +20,24 @@ resource "cloudflare_worker_script" "script" { name = var.name content = file("script.js") + module = true + kv_namespace_binding { name = "KV" namespace_id = cloudflare_workers_kv_namespace.kv_ns.id } + + r2_bucket_binding { + name = "R2" + bucket_name = cloudflare_r2_bucket.bucket.name + } } +resource "cloudflare_r2_bucket" "bucket" { + account_id = var.cloudflare_account_id + name = "${var.name}-bucket" + location = "ENAM" +} /* resource "cloudflare_worker_route" "route" { diff --git a/cf-worker/script.js b/cf-worker/script.js index 504078c..e01543f 100644 --- a/cf-worker/script.js +++ b/cf-worker/script.js @@ -1,6 +1,16 @@ -addEventListener("fetch", (event) => { - console.log("Hello from the service worker!"); - let value = KV.get("foo"); - event.respondWith(new Response(value, - { headers: { "content-type": "text/plain" } })); -}); +export default { + async fetch(request, env, ctx) { + let value = await env.KV.get("foo"); + await env.KV.put("foo", value + "r"); + + let obj = await env.R2.get("foo"); + if (!obj) { + obj = "ba"; + } else { + obj = await obj.text(); + } + await env.R2.put("foo", obj + "r"); + + return new Response(`${value} / ${obj}`); + }, +};