Skip to content

Configuration

Tuucho allows you to configure several core systems:

  • Datastore
  • Database
  • Network (*required)
  • Ktor client engine

All configuration must be provided through ModuleGroupCore.Main.


Datastore Configuration

You can supply a custom datastore file name by providing a StoreRepositoryModule.Config implementation.

factory<StoreRepositoryModule.Config> {
    object : StoreRepositoryModule.Config {
        override val fileName = BuildKonfig.localDatastoreFileName
    }
}

If no configuration is supplied, Tuucho uses the default datastore file name: "tuucho-datastore"


Database Configuration

You can supply a custom database file name by providing a DatabaseRepositoryModule.Config implementation.

factory<DatabaseRepositoryModule.Config> {
    object : DatabaseRepositoryModule.Config {
        override val fileName = BuildKonfig.localDatabaseFileName
    }
}

If no configuration is supplied, Tuucho uses the default database file name: "tuucho-database"


Network Configuration

Network configuration must be supplied. Tuucho does not provide default values for network settings.

You provide them through a NetworkRepositoryModule.Config implementation.

factory<NetworkRepositoryModule.Config> {
    object : NetworkRepositoryModule.Config {
        override val timeoutMillis = BuildKonfig.serverTimeoutMillis
        override val version = BuildKonfig.serverVersion
        override val baseUrl = BuildKonfig.serverBaseUrl
        override val healthEndpoint = BuildKonfig.serverHealthEndpoint
        override val resourceEndpoint = BuildKonfig.serverResourceEndpoint
        override val sendEndpoint = BuildKonfig.serverSendEndpoint
    }
}

All fields must be supplied:

  • timeoutMillis
  • version
  • baseUrl
  • healthEndpoint
  • resourceEndpoint
  • sendEndpoint

Tuucho cannot operate without these values.


Supplying a Custom Ktor Client Engine

You can provide your own platform-specific Ktor HttpClientEngineFactory.

Android Example (OkHttp)

module(ModuleGroupCore.Main) {
    factory<HttpClientEngineFactory<*>> {
        OkHttp
    }
}

iOS Example (Darwin)

module(ModuleGroupCore.Main) {
    factory<HttpClientEngineFactory<*>> {
        Darwin
    }
}

If no engine is supplied, Tuucho automatically creates and manages its own default engine instance.


Registering Configuration in Koin

All configuration modules must be registered under ModuleGroupCore.Main.

module(ModuleGroupCore.Main) {

    factory<StoreRepositoryModule.Config> {
        ...
    }

    factory<DatabaseRepositoryModule.Config> {
        ...
    }

    factory<NetworkRepositoryModule.Config> {
        ...
    }
}