LoginSignup
1
0
お題は不問!Qiita Engineer Festa 2024で記事投稿!
Qiita Engineer Festa20242024年7月17日まで開催中!

cloudflareを利用してwebアプリを公開したい!part4(D1セットアップ)

Last updated at Posted at 2024-06-13

はじめに

 前回はPagesからHTTPリクエストを送信し、Workersからレスポンスを受信するところまでをやりました。
 今回は、データベースD1のセットアップを進めていきます。

D1セットアップ

 まずターミナルからログインを。

npx wrangler login

 D1データベースを作成していきます。

npx wrangler d1 create [db]

 作成したD1をバインドします。
 私の場合はWorkersで使うのでWorkersのルートディレクトリにあるwrangler.tomlに以下の記述を追加していきます

[[d1_databases]]
binding = "DB" # i.e. available in your Worker on env.DB
database_name = "[db名]"
database_id = "[dbのid]"

 これらはDB作成時、コマンドラインに表示されるので、それをコピペすればOKです。
 これでDBの準備は完了です。適当なテーブルの作成とCRUD操作を試してみましょう。
 なお、D1のsqlはsqliteと同じものでいいようです。Rustで書く時、sqlxのフィーチャーはsqliteでいいのかな...?

【追記】
sqlxはwasm非対応らしく使えませんでした。当然sqlxベースのsea-ormも使えません。

動作確認

 とりあえず公式ドキュメントのサンプルのテーブルを突っ込んでみます。

DROP TABLE IF EXISTS Customers;
CREATE TABLE IF NOT EXISTS Customers (CustomerId INTEGER PRIMARY KEY, CompanyName TEXT, ContactName TEXT);
INSERT INTO Customers (CustomerID, CompanyName, ContactName) VALUES (1, 'Alfreds Futterkiste', 'Maria Anders'), (4, 'Around the Horn', 'Thomas Hardy'), (11, 'Bs Beverages', 'Victoria Ashworth'), (13, 'Bs Beverages', 'Random Name');

 これをとりあえずルートディレクトリに配置しておいて実行してみる。

npx wrangler d1 execute [db] --local --file=./schema.sql

 ひとまずこれはリモートじゃなくローカルでのみ反映されるものらしいです。
 とりあえずこれでいったんCRUDの確認をしてみましょう。

npx wrangler d1 execute [db] --local --command="SELECT * FROM Customers"
npx wrangler d1 execute [db] --local --command="INSERT INTO Customers VALUES (99, 'test', 'test name')"
npx wrangler d1 execute [db] --local --command="UPDATE Customers SET CompanyName = 'renamed' WHERE CustomerId = 99"
npx wrangler d1 execute [db] --local --command="DELETE FROM Customers WHERE CustomerId = 99"

 結果は省略しますが、各動作ごとにSELECTした結果問題なく実行されていました。
 今回はやりませんが、--localを--remoteに書き換えれば、cloudflare上に作成したDBが操作されます。

おわりに

次回はWokersからD1を操作してみようと思います。可能であればsea-ORMを導入しようと考えていますが......どうなるかな。

おまけ

 記事を書いた後に「そういやローカルのd1はどこに保存されているんだろう...?」と思って探してみたら./.wrangler/state/v3/d1/miniflare-D1DatabaseObjectにありました。
 DB Browser for SQLite等で中身を確認することもできます。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0