Closed1
Cloudflare Workers + Turso の例
概要
Cloudflare Workers + Turso 使うメモになります。
- Tursoアカウント必要です。
- 事前に、表等作成済にしておきます。
- Tursoの、URL, Token等メモしておきます。
[ 公開: 2024/04/10 ]
環境
- Cloudflare Workers
- Turso
関連
-
workers作成して、デプロイしておく
-
参考
-
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にクローズされました