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ドキュメントをご覧ください。