データベースはアプリケーションで一つが推奨されていますので、:appモジュールで作成します。
データベース作成の前準備で、エンティティコレクターで作成された各モジュールのエンティティクラスの配列オブジェクトを集約してひとつにするUnifiedRoomEntities.ktを:build_logic:kspモジュールに作成します。
:appモジュールにdataパッケージ(ディレクトリ)を追加し、AppDatabase.ktを作成します。
package jp.co.progress_llc.portal.core.data
import androidx.room.Database
import androidx.room.Room
import androidx.room.RoomDatabase
import android.content.Context
@Database(
entities = [Route::class],
version = 1,
exportSchema = false
)
abstract class AppDatabase : RoomDatabase() {
abstract fun RouteDao(): RouteDao
companion object {
@Volatile
private var INSTANCE: AppDatabase? = null
fun getDatabase(context: Context): AppDatabase {
return INSTANCE ?: synchronized(this) {
val instance = Room.databaseBuilder(
context.applicationContext,
AppDatabase::class.java,
"app_database"
)
.build()
INSTANCE = instance
instance
}
}
}
}