Use @Component in the database module

pull/1323/head
lihenggui 2 years ago
parent db8e99efdc
commit 40a9f09786

@ -32,6 +32,7 @@ kotlin {
sourceSets {
commonMain.dependencies {
api(projects.core.model)
implementation(projects.core.common)
implementation(libs.kotlinx.datetime)
implementation(libs.kotlinx.coroutines.core)
implementation(libs.sqldelight.coroutines.extensions)

@ -23,11 +23,12 @@ import app.cash.sqldelight.db.QueryResult
import app.cash.sqldelight.db.SqlDriver
import app.cash.sqldelight.db.SqlSchema
import app.cash.sqldelight.driver.android.AndroidSqliteDriver
import me.tatarka.inject.annotations.Component
import me.tatarka.inject.annotations.Inject
import me.tatarka.inject.annotations.Provides
@Inject
actual class DriverModule(private val context: Context) {
@Component
internal actual abstract class DriverModule(private val context: Context) {
@Provides
actual suspend fun provideDbDriver(

@ -22,35 +22,43 @@ import com.google.samples.apps.nowinandroid.core.database.dao.NewsResourceFtsDao
import com.google.samples.apps.nowinandroid.core.database.dao.RecentSearchQueryDao
import com.google.samples.apps.nowinandroid.core.database.dao.TopicDao
import com.google.samples.apps.nowinandroid.core.database.dao.TopicFtsDao
import com.google.samples.apps.nowinandroid.core.di.IODispatcher
import kotlinx.coroutines.Dispatchers
import me.tatarka.inject.annotations.Component
import me.tatarka.inject.annotations.Provides
internal object DatabaseModule {
@Component
internal abstract class DatabaseModule {
@Provides
fun providesNiaDatabase(driver: SqlDriver): NiaDatabase = NiaDatabase(driver)
@Provides
fun providesTopicsDao(
database: NiaDatabase,
): TopicDao = TopicDao(database, Dispatchers.Default)
dispatcher: IODispatcher,
): TopicDao = TopicDao(database, dispatcher)
@Provides
fun providesNewsResourceDao(
database: NiaDatabase,
): NewsResourceDao = NewsResourceDao(database, Dispatchers.Default)
dispatcher: IODispatcher,
): NewsResourceDao = NewsResourceDao(database, dispatcher)
@Provides
fun providesTopicFtsDao(
database: NiaDatabase,
): TopicFtsDao = TopicFtsDao(database, Dispatchers.Default)
dispatcher: IODispatcher,
): TopicFtsDao = TopicFtsDao(database, dispatcher)
@Provides
fun providesNewsResourceFtsDao(
database: NiaDatabase,
): NewsResourceFtsDao = NewsResourceFtsDao(database, Dispatchers.Default)
dispatcher: IODispatcher,
): NewsResourceFtsDao = NewsResourceFtsDao(database, dispatcher)
@Provides
fun providesRecentSearchQueryDao(
database: NiaDatabase,
): RecentSearchQueryDao = RecentSearchQueryDao(database, Dispatchers.Default)
dispatcher: IODispatcher,
): RecentSearchQueryDao = RecentSearchQueryDao(database, dispatcher)
}

@ -21,7 +21,7 @@ import app.cash.sqldelight.db.SqlDriver
import app.cash.sqldelight.db.SqlSchema
import me.tatarka.inject.annotations.Provides
expect class DriverModule {
internal expect abstract class DriverModule {
@Provides
suspend fun provideDbDriver(
schema: SqlSchema<QueryResult.AsyncValue<Unit>>,

@ -20,10 +20,12 @@ import app.cash.sqldelight.db.QueryResult
import app.cash.sqldelight.db.SqlDriver
import app.cash.sqldelight.db.SqlSchema
import app.cash.sqldelight.driver.worker.WebWorkerDriver
import me.tatarka.inject.annotations.Component
import me.tatarka.inject.annotations.Provides
import org.w3c.dom.Worker
actual class DriverModule {
@Component
internal actual abstract class DriverModule {
@Provides
actual suspend fun provideDbDriver(
schema: SqlSchema<QueryResult.AsyncValue<Unit>>,

@ -20,10 +20,12 @@ import app.cash.sqldelight.db.QueryResult
import app.cash.sqldelight.db.SqlDriver
import app.cash.sqldelight.db.SqlSchema
import app.cash.sqldelight.driver.jdbc.sqlite.JdbcSqliteDriver
import me.tatarka.inject.annotations.Component
import me.tatarka.inject.annotations.Provides
import java.util.Properties
actual class DriverModule {
@Component
internal actual abstract class DriverModule {
@Provides
actual suspend fun provideDbDriver(
schema: SqlSchema<QueryResult.AsyncValue<Unit>>,

@ -22,9 +22,11 @@ import app.cash.sqldelight.db.SqlDriver
import app.cash.sqldelight.db.SqlSchema
import app.cash.sqldelight.driver.native.NativeSqliteDriver
import co.touchlab.sqliter.DatabaseConfiguration
import me.tatarka.inject.annotations.Component
import me.tatarka.inject.annotations.Provides
actual class DriverModule {
@Component
internal actual abstract class DriverModule {
@Provides
actual suspend fun provideDbDriver(

Loading…
Cancel
Save