【Compose Multiplatform】SqlDelightデータベースの実装

はじめに

Compose Multiplatformプロジェクトでは
クロスプラットフォームのデータベース操作をどのように実装できるでしょうか?
SqlDelightは強力なソリューションを提供します
本記事では、クロスプラットフォーム環境で
SqlDelightを使用してデータベース操作を行う方法を紹介します

実装手順
1. SqlDelightのインポート

まず、プロジェクトにSqlDelightをインポートします:
.tomlファイルに追加:

build.gradle.ktsにプラグインと依存関係を追加:

  • まずプラグインを追加
  • 次に各環境に対応するライブラリを追加
  • 最後にkotlinの下にSqlDelightの設定を追加
    これは、test.your.package.dbパッケージにAppDatabaseという操作可能なクラスが作成されると理解できます
2. データベーステーブルの実装
  • commonMain/sqldelight/databaseディレクトリに.sqファイルを作成:
    現在のバージョンでは、次のステップでビルドプロセスが操作可能なクラスを正常に生成するためには、 上記のパスにsqldelightフォルダを追加する必要があることを確認しました 截圖 2024-07-09 下午3.11.59.png

  • (オプション) 同名のSqlDelightプラグインをダウンロードすると、右クリックで.sqファイルを生成できます(マーケットプレイスからダウンロード可能)
    参考 sqldelight
    截圖 2024-07-09 下午3.11.59.png
  • 上記のように設定し、ビルドした後
    /build/generated/sqldelight/code/..パスに対応するクラスが生成されます

  • またはコマンドを使用してビルドすることもできます
    ./gradlew generateCommonMainAppDatabaseInterface

  • iOSのビルドが失敗する場合は、build.gradle.ktsのisStaticをfalseに変更できます
3. プラットフォーム固有の実装作成

異なるプラットフォーム用のDatabaseDriverFactoryを作成:

4. 実際の使用法

生成されたDBクラスを使用してビジネスロジックを実装:

5. Koinの注入(オプション)

依存性注入にKoinを使用する場合
このように設定できます

注意点
  1. SqlDelightバージョン2.0.0のiOSビルド失敗の既知の問題を避けるため、バージョン2.0.1を使用することをお勧めします
    詳細については、こちらのディスカッションスレッドをご覧ください:こちらをクリック
  2. iOSビルドが失敗する場合は、isStaticをfalseに設定してみてください
    なぜこの変更が必要なのかは不明です
    おそらく公式の回避策です
    公式ドキュメントには直接この方法が記載されています
まとめ
  • SqlDelightは強力なクロスプラットフォームデータベースソリューションを提供します
  • 適切なカプセル化により、異なるプラットフォーム間で統一されたデータベースAPIを使用できます
  • Koinなどの依存性注入フレームワークと組み合わせることで、データベースインスタンスをより適切に管理できます
  • クロスプラットフォームの互換性を確保するために、バージョン選択とプラットフォーム固有の実装に注意してください

You might also enjoy