Closed1

Cloudflare Workers + Turso の例

knaka Tech-Blogknaka Tech-Blog

概要

Cloudflare Workers + Turso 使うメモになります。

  • Tursoアカウント必要です。
  • 事前に、表等作成済にしておきます。
  • Tursoの、URL, Token等メモしておきます。

[ 公開: 2024/04/10 ]


環境

  • Cloudflare Workers
  • Turso

関連

https://zenn.dev/knaka0209/scraps/fda5606127c464



  • workers画面で、Turso設定を追加

  • Integrations > Turso.

  • 接続設定、db選択する


  • SDK install
npm install @libsql/client

  • index.ts, 上記の databases/native-integrations/turso ページと同様
  • テーブルは、作成した表名に変えます。
index.ts
  import { Client as LibsqlClient, createClient } from "@libsql/client/web";

  export interface Env {
    LIBSQL_DB_URL?: string;
    LIBSQL_DB_AUTH_TOKEN?: string;
  }

  export default {
    async fetch(request: Request, env: Env, ctx: ExecutionContext): Promise<Response> {
      const client = buildLibsqlClient(env);

      try {
        const res = await client.execute('SELECT * FROM elements');
        return new Response(JSON.stringify(res), {
          status: 200,
          headers: { 'Content-Type': 'application/json' },
        });
      } catch (error) {
        console.error('Error executing SQL query:', error);
        return new Response(JSON.stringify({ error: 'Internal Server Error' }), {
          status: 500
        });
      }
    },
  };

  function buildLibsqlClient(env: Env): LibsqlClient {
    const url = env.LIBSQL_DB_URL?.trim();
    if (url === undefined) {
      throw new Error("LIBSQL_DB_URL env var is not defined");
    }

    const authToken = env.LIBSQL_DB_AUTH_TOKEN?.trim();
    if (authToken == undefined) {
      throw new Error("LIBSQL_DB_AUTH_TOKEN env var is not defined");
    }

    return createClient({ url, authToken })
  }

  • wrangler.toml: LIBSQL_DB_URL, LIBSQL_DB_AUTH_TOKEN 設定します
name = "workers-12345"
compatibility_date = "2024-01-01"

[vars]
LIBSQL_DB_URL = "libsql://"
LIBSQL_DB_AUTH_TOKEN = ""


  • package.json
{
  "name": "workers-14",
  "module": "index.ts",
  "type": "module",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "start": "wrangler dev index.ts",
    "deploy": "wrangler deploy --minify index.ts"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "@cloudflare/workers-types": "^4.20240405.0",
    "wrangler": "^3.48.0"
  },
  "dependencies": {
    "@libsql/client": "^0.6.0"
  }
}


このスクラップは2024/04/14にクローズされました