Turso
Turso は、SQLite のオープンソースでオープンコントリビューションのフォークである libSQL に基づくエッジデータベースです。
世界中の35以上の場所で、ユーザーの近くにデータを配置できます。
使用方法
次の Qwik スタータースクリプトを使用して、Turso を簡単に追加できます。
npm run qwik add tursoこのコマンドは、Turso を使用するのに必要な依存関係を追加します。
また、プロジェクトフォルダ内に新しいファイルを追加します。
- src/lib/turso.ts
そして、以下を含むように .env.local ファイルを追加または変更します。
PRIVATE_TURSO_DATABASE_URL=
PRIVATE_TURSO_AUTH_TOKEN=ファイルデータベースの使用
ローカル開発とCI統合には、ローカルデータベースファイルを使用するのが理想的です。
まず、sqlite3 --version を実行して、マシンに SQLite がインストールされていることを確認します。バージョン番号(例:0-14 20:58:05 554764a6e721fab307c63a4f98cd958c8428a5d9d8edfde951858d6fd02daapl)以外が表示された場合は、このリンクのインストール手順をご覧ください。
次のコマンドを実行して、SQLiteファイルデータベースを作成します。
sqlite3 foo.dbデータベーススキーマを作成します。
sqlite> create table todo (id integer not null, task text, done int default 0);テーブルにデータをシードします。
sqlite> insert into todo(id, task) values(1, "Go to the gym");
sqlite> insert into todo(id, task) values(2, "Buy groceries");シェルを終了します .quit
次に、.env.local 内の PRIVATE_TURSO_DATABASE_URL 環境変数にデータベースファイルのパスを割り当てます。
PRIVATE_TURSO_DATABASE_URL=file:foo.db注:ファイルデータベースで作業する場合、データベーストークンは必要ありません。
Tursoデータベースの使用
プロジェクトを本番環境にデプロイする場合、Turso CLIをマシンにインストールし、Tursoデータベースを作成できます。
Turso CLIの db shell コマンドを使用して、データベースにクエリを発行します。
turso db shell <database-name>データベーススキーマを作成します。
→  create table todo (id integer not null, task text, done int default 0);テーブルにデータをシードします。
→  insert into todo(id, task) values(1, "Go to the gym");
→  insert into todo(id, task) values(2, "Buy groceries");シェルを終了します .quit
次の手順に従って、Tursoデータベースの資格情報を取得し、デプロイ環境内の環境変数に割り当てます。
データベースURLから始めて、次のコマンドを実行します。
turso db show <database-name> --url結果のURLをコピーして、PRIVATE_TURSO_DATABASE_URL 環境変数に割り当てます。
また、データベース認証トークンについては、コマンドを実行します。
turso db tokens create <database-name>結果のトークンをコピーして、PRIVATE_TURSO_AUTH_TOKEN 環境変数に割り当てます。
Qwik内でTursoを使用する方法
ルート内で tursoClient をインポートし、RequestEvent オブジェクトを公開する Qwik のサーバーサイド API 内でデータベースクライアントインスタンスを開始します。たとえば、routeLoader$()、routeAction$()、server$()、および onGet、onPost、onRequest などのエンドポイントハンドラです。
import { tursoClient } from "~/utils/turso";
 
export const useRouteLoader = routeLoader$(
  async (requestEvent: RequestEventBase) => {
    const client = tursoClient(requestEvent);
 
    const items = await client.execute("select * from table");
 
    return {
      items: items.rows,
    };
  }
);詳細については、Tursoドキュメントをご覧ください。

