Turso & Astro
Turso は、SQLiteのフォークであるlibSQLを基盤とした分散データベースです。低クエリレイテンシーに最適化されており、グローバルアプリケーションに適しています。
AstroでTursoを初期化する
Section titled “AstroでTursoを初期化する”環境変数の設定
Section titled “環境変数の設定”次のコマンドを使用してデータベースURLを取得します。
turso db show <database-name> --urlデータベースの認証トークンを作成します。
turso db tokens create <database-name>上記の両方のコマンドからの出力を、プロジェクトのルートにある .env ファイルに追加します。このファイルが存在しない場合は、作成してください。
TURSO_DATABASE_URL=libsql://...TURSO_AUTH_TOKEN=これらのプライベートな環境変数を作成する際は、PUBLIC_ プレフィックスを使用しないでください。これらの値がクライアントに公開されてしまいます。
LibSQLクライアントのインストール
Section titled “LibSQLクライアントのインストール”TursoをAstroに接続するために @libsql/client をインストールします。
npm install @libsql/clientpnpm add @libsql/clientyarn add @libsql/client新しいクライアントの初期化
Section titled “新しいクライアントの初期化”src フォルダに turso.ts ファイルを作成し、TURSO_DATABASE_URL と TURSO_AUTH_TOKEN を渡して createClient を呼び出します。
import { createClient } from "@libsql/client/web";
export const turso = createClient({  url: import.meta.env.TURSO_DATABASE_URL,  authToken: import.meta.env.TURSO_AUTH_TOKEN,});データベースのクエリ
Section titled “データベースのクエリ”データベースから情報にアクセスするには、任意の .astro コンポーネント内で turso をインポートし、SQL クエリを実行します。
次の例では、テーブルからすべての posts を取得し、<BlogIndex /> コンポーネントでタイトルのリストを表示します。
---import { turso } from '../turso'
const { rows } = await turso.execute('SELECT * FROM posts')---
<ul>  {rows.map((post) => (    <li>{post.title}</li>  ))}</ul>SQLプレースホルダー
Section titled “SQLプレースホルダー”execute() メソッドは、slug やページネーションなど、SQL文に変数を渡すオブジェクトを受け取ることができます。
次の例では、slug が Astro.params から取得した値と一致する posts テーブルから単一のエントリを取得し、投稿のタイトルを表示します。
---import { turso } from '../turso'
const { slug } = Astro.params
const { rows } = await turso.execute({  sql: 'SELECT * FROM posts WHERE slug = ?',  args: [slug!]})---
<h1>{rows[0].title}</h1>