new: modularize data.records

This commit is contained in:
2026-07-02 17:53:52 +02:00
parent 3a6aa7c0bb
commit 87ae329230
7 changed files with 73 additions and 5 deletions
+56
View File
@@ -0,0 +1,56 @@
import org.jetbrains.kotlin.gradle.ExperimentalWasmDsl
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
plugins {
alias(libs.plugins.kotlinMultiplatform)
alias(libs.plugins.androidMultiplatformLibrary)
}
kotlin {
iosArm64()
iosSimulatorArm64()
jvm()
js {
browser()
}
@OptIn(ExperimentalWasmDsl::class)
wasmJs {
browser()
}
androidLibrary {
namespace = "fr.ajaury.gwenedeg.records"
compileSdk =
libs.versions.androidCompileSdk
.get()
.toInt()
minSdk =
libs.versions.androidMinSdk
.get()
.toInt()
compilerOptions {
jvmTarget = JvmTarget.JVM_11
}
}
sourceSets {
commonMain.dependencies {
// Core modules
implementation(projects.core.model)
// Coroutines
implementation(libs.kotlinx.coroutinesCore)
// DI
implementation(project.dependencies.platform(libs.koin.bom))
implementation(libs.koin.core)
}
commonTest.dependencies {
implementation(libs.kotlin.test)
}
}
}
@@ -6,7 +6,7 @@ import fr.ajaury.gwenedeg.records.domain.RecordRepository
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.flowOf
class InMemoryRecordRepository : RecordRepository {
internal class InMemoryRecordRepository : RecordRepository {
private val records =
listOf(
Phrase(
@@ -0,0 +1,12 @@
package fr.ajaury.gwenedeg.records.di
import fr.ajaury.gwenedeg.records.data.InMemoryRecordRepository
import fr.ajaury.gwenedeg.records.domain.RecordRepository
import org.koin.core.module.Module
import org.koin.core.module.dsl.bind
import org.koin.core.module.dsl.factoryOf
import org.koin.dsl.module
val recordsModule: Module = module {
factoryOf(::InMemoryRecordRepository) { bind<RecordRepository>() }
}
+1
View File
@@ -44,5 +44,6 @@ include(":core:logging")
include(":core:model")
// Data modules
include(":data:records")
include(":data:resources")
include(":data:subtitle")
+1
View File
@@ -65,6 +65,7 @@ kotlin {
implementation(projects.core.model)
// Data modules
implementation(projects.data.records)
implementation(projects.data.resources)
implementation(projects.data.subtitle)
@@ -6,20 +6,18 @@ import fr.ajaury.gwenedeg.player.domain.PlaybackRepository
import fr.ajaury.gwenedeg.player.ui.viewmodel.PlayerViewModel
import fr.ajaury.gwenedeg.preferences.data.PreferencesRepositoryImpl
import fr.ajaury.gwenedeg.preferences.domain.PreferencesRepository
import fr.ajaury.gwenedeg.records.data.InMemoryRecordRepository
import fr.ajaury.gwenedeg.records.domain.RecordRepository
import fr.ajaury.gwenedeg.records.di.recordsModule
import fr.ajaury.gwenedeg.records.ui.viewmodel.RecordsViewModel
import fr.ajaury.gwenedeg.resources.di.resourcesModule
import org.koin.core.module.dsl.bind
import org.koin.core.module.dsl.factoryOf
import org.koin.core.module.dsl.singleOf
import org.koin.core.module.dsl.viewModelOf
import org.koin.dsl.module
val sharedModule = module {
includes(loggingModule)
includes(recordsModule)
includes(resourcesModule)
factoryOf(::InMemoryRecordRepository) { bind<RecordRepository>() }
singleOf(::PlaybackRepositoryImpl) { bind<PlaybackRepository>() }
singleOf(::PreferencesRepositoryImpl) { bind<PreferencesRepository>() }
viewModelOf(::RecordsViewModel)