diff --git a/app/src/main/java/com/rendox/routinetracker/app/RoutineTrackerApp.kt b/app/src/main/java/com/rendox/routinetracker/app/RoutineTrackerApp.kt index 18b131ed..37db0107 100644 --- a/app/src/main/java/com/rendox/routinetracker/app/RoutineTrackerApp.kt +++ b/app/src/main/java/com/rendox/routinetracker/app/RoutineTrackerApp.kt @@ -26,9 +26,9 @@ class RoutineTrackerApp: Application() { startKoin { androidContext(this@RoutineTrackerApp) modules( - localDataSourceModule, - habitLocalDataModule, - completionTimeLocalDataModule, + com.rendox.routinetracker.core.database.di.localDataSourceModule, + com.rendox.routinetracker.core.database.di.habitLocalDataModule, + com.rendox.routinetracker.core.database.di.completionTimeLocalDataModule, streakLocalDataModule, routineDataModule, diff --git a/build-logic/convention/build.gradle.kts b/build-logic/convention/build.gradle.kts index cc0a55c2..1f05c41c 100644 --- a/build-logic/convention/build.gradle.kts +++ b/build-logic/convention/build.gradle.kts @@ -52,13 +52,25 @@ gradlePlugin { id = "routinetracker.jvm.library" implementationClass = "JvmLibraryConventionPlugin" } + register("kmpLibrary") { + id = "routinetracker.kmp.library" + implementationClass = "KmpLibraryConventionPlugin" + } register("androidKoin") { id = "routinetracker.android.koin" implementationClass = "AndroidKoinConventionPlugin" } + register("kmpKoin") { + id = "routinetracker.kmp.koin" + implementationClass = "KmpKoinConventionPlugin" + } register("instrumentationTestRunner") { id = "routinetracker.android.library.instrumentationtestrunner" implementationClass = "AndroidLibraryInstrumentationTestRunner" } + register("kmpInstrumentationTestRunner") { + id = "routinetracker.kmp.library.instrumentationtestrunner" + implementationClass = "KmpLibraryInstrumentationTestRunner" + } } } \ No newline at end of file diff --git a/build-logic/convention/src/main/java/KmpKoinConventionPlugin.kt b/build-logic/convention/src/main/java/KmpKoinConventionPlugin.kt new file mode 100644 index 00000000..47de8891 --- /dev/null +++ b/build-logic/convention/src/main/java/KmpKoinConventionPlugin.kt @@ -0,0 +1,19 @@ +import com.rendox.routinetracker.libs +import org.gradle.api.Plugin +import org.gradle.api.Project +import org.gradle.kotlin.dsl.dependencies + +class KmpKoinConventionPlugin : Plugin { + override fun apply(target: Project) { + with(target) { + dependencies { + val bom = libs.findLibrary("insert-koin-bom").get() + + add("commonMainImplementation", platform(bom)) + add("commonMainImplementation", "io.insert-koin:koin-core") + add("androidUnitTestImplementation", "io.insert-koin:koin-test") + } + } + } + +} \ No newline at end of file diff --git a/build-logic/convention/src/main/java/KmpLibraryConventionPlugin.kt b/build-logic/convention/src/main/java/KmpLibraryConventionPlugin.kt new file mode 100644 index 00000000..7efbd797 --- /dev/null +++ b/build-logic/convention/src/main/java/KmpLibraryConventionPlugin.kt @@ -0,0 +1,43 @@ +import com.android.build.api.dsl.LibraryExtension +import com.rendox.routinetracker.addAndroidTestDependencies +import com.rendox.routinetracker.addLocalTestDependencies +import com.rendox.routinetracker.configureBuildTypes +import com.rendox.routinetracker.configureKotlinAndroid +import com.rendox.routinetracker.configurePackaging +import org.gradle.api.Plugin +import org.gradle.api.Project +import org.gradle.kotlin.dsl.configure +import org.jetbrains.kotlin.gradle.dsl.JvmTarget +import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension + +class KmpLibraryConventionPlugin : Plugin { + override fun apply(target: Project) { + with(target) { + with(pluginManager) { + apply("org.jetbrains.kotlin.multiplatform") + apply("com.android.library") + } + extensions.configure { + applyDefaultHierarchyTemplate() + + androidTarget { + compilerOptions { + jvmTarget.set(JvmTarget.JVM_11) + } + } + iosX64() + iosArm64() + iosSimulatorArm64() + } + + extensions.configure { + configureKotlinAndroid(this) + defaultConfig.targetSdk = 34 + configureBuildTypes(this) + configurePackaging(this) + addLocalTestDependencies(this) + addAndroidTestDependencies(this) + } + } + } +} \ No newline at end of file diff --git a/build-logic/convention/src/main/java/KmpLibraryInstrumentationTestRunner.kt b/build-logic/convention/src/main/java/KmpLibraryInstrumentationTestRunner.kt new file mode 100644 index 00000000..ed16d2a9 --- /dev/null +++ b/build-logic/convention/src/main/java/KmpLibraryInstrumentationTestRunner.kt @@ -0,0 +1,27 @@ +import com.android.build.gradle.LibraryExtension +import org.gradle.api.Plugin +import org.gradle.api.Project +import org.gradle.kotlin.dsl.configure +import org.gradle.kotlin.dsl.dependencies +import org.gradle.kotlin.dsl.project + +class KmpLibraryInstrumentationTestRunner : Plugin { + override fun apply(target: Project) { + with(target) { + with(pluginManager) { + apply("com.android.library") + } + + extensions.configure { + defaultConfig { + testInstrumentationRunner = + "com.rendox.routinetracker.core.testcommon.InstrumentationTestRunner" + } + } + + dependencies { + add("androidUnitTestImplementation", project(":core:testcommon")) + } + } + } +} \ No newline at end of file diff --git a/core/data/build.gradle.kts b/core/data/build.gradle.kts index 0f45e968..ba98da52 100644 --- a/core/data/build.gradle.kts +++ b/core/data/build.gradle.kts @@ -1,7 +1,28 @@ plugins { - id("routinetracker.android.library") - id("routinetracker.android.koin") - id("routinetracker.android.library.instrumentationtestrunner") + id("routinetracker.kmp.library") + id("routinetracker.kmp.koin") + id("routinetracker.kmp.library.instrumentationtestrunner") +} + +kotlin { + sourceSets { + commonMain { + dependencies { + implementation(project(":core:database")) + implementation(project(":core:model")) + implementation(project(":core:logic")) + + implementation(libs.jetbrains.kotlinx.datetime) + } + } + + androidInstrumentedTest { + dependencies { + implementation(project(":core:testcommon")) + implementation(libs.jetbrains.kotlinx.coroutines.test) + } + } + } } android { @@ -25,15 +46,4 @@ android { } } } -} - -dependencies { - implementation(project(":core:database")) - implementation(project(":core:model")) - implementation(project(":core:logic")) - - implementation(libs.jetbrains.kotlinx.datetime) - - androidTestImplementation(project(":core:testcommon")) - androidTestImplementation(libs.jetbrains.kotlinx.coroutines.test) } \ No newline at end of file diff --git a/core/data/src/main/java/com/rendox/routinetracker/core/data/completion_history/CompletionHistoryRepository.kt b/core/data/src/commonMain/kotlin/com/rendox/routinetracker/core/data/completion_history/CompletionHistoryRepository.kt similarity index 100% rename from core/data/src/main/java/com/rendox/routinetracker/core/data/completion_history/CompletionHistoryRepository.kt rename to core/data/src/commonMain/kotlin/com/rendox/routinetracker/core/data/completion_history/CompletionHistoryRepository.kt diff --git a/core/data/src/main/java/com/rendox/routinetracker/core/data/completion_history/CompletionHistoryRepositoryImpl.kt b/core/data/src/commonMain/kotlin/com/rendox/routinetracker/core/data/completion_history/CompletionHistoryRepositoryImpl.kt similarity index 94% rename from core/data/src/main/java/com/rendox/routinetracker/core/data/completion_history/CompletionHistoryRepositoryImpl.kt rename to core/data/src/commonMain/kotlin/com/rendox/routinetracker/core/data/completion_history/CompletionHistoryRepositoryImpl.kt index 38af244d..a4af445f 100644 --- a/core/data/src/main/java/com/rendox/routinetracker/core/data/completion_history/CompletionHistoryRepositoryImpl.kt +++ b/core/data/src/commonMain/kotlin/com/rendox/routinetracker/core/data/completion_history/CompletionHistoryRepositoryImpl.kt @@ -5,7 +5,7 @@ import com.rendox.routinetracker.core.model.Habit import kotlinx.datetime.LocalDate class CompletionHistoryRepositoryImpl( - private val localDataSource: CompletionHistoryLocalDataSource + private val localDataSource: com.rendox.routinetracker.core.database.completion_history.CompletionHistoryLocalDataSource ): CompletionHistoryRepository { override suspend fun getNumOfTimesCompletedInPeriod( habitId: Long, diff --git a/core/data/src/main/java/com/rendox/routinetracker/core/data/completion_history/FailHistoryRepository.kt b/core/data/src/commonMain/kotlin/com/rendox/routinetracker/core/data/completion_history/FailHistoryRepository.kt similarity index 100% rename from core/data/src/main/java/com/rendox/routinetracker/core/data/completion_history/FailHistoryRepository.kt rename to core/data/src/commonMain/kotlin/com/rendox/routinetracker/core/data/completion_history/FailHistoryRepository.kt diff --git a/core/data/src/main/java/com/rendox/routinetracker/core/data/completion_time/CompletionTimeRepository.kt b/core/data/src/commonMain/kotlin/com/rendox/routinetracker/core/data/completion_time/CompletionTimeRepository.kt similarity index 100% rename from core/data/src/main/java/com/rendox/routinetracker/core/data/completion_time/CompletionTimeRepository.kt rename to core/data/src/commonMain/kotlin/com/rendox/routinetracker/core/data/completion_time/CompletionTimeRepository.kt diff --git a/core/data/src/main/java/com/rendox/routinetracker/core/data/completion_time/CompletionTimeRepositoryImpl.kt b/core/data/src/commonMain/kotlin/com/rendox/routinetracker/core/data/completion_time/CompletionTimeRepositoryImpl.kt similarity index 88% rename from core/data/src/main/java/com/rendox/routinetracker/core/data/completion_time/CompletionTimeRepositoryImpl.kt rename to core/data/src/commonMain/kotlin/com/rendox/routinetracker/core/data/completion_time/CompletionTimeRepositoryImpl.kt index 1ceee05d..c0d7f2ba 100644 --- a/core/data/src/main/java/com/rendox/routinetracker/core/data/completion_time/CompletionTimeRepositoryImpl.kt +++ b/core/data/src/commonMain/kotlin/com/rendox/routinetracker/core/data/completion_time/CompletionTimeRepositoryImpl.kt @@ -5,7 +5,7 @@ import kotlinx.datetime.LocalDate import kotlinx.datetime.LocalTime class CompletionTimeRepositoryImpl( - private val localDataSource: CompletionTimeLocalDataSource, + private val localDataSource: com.rendox.routinetracker.core.database.completion_time.CompletionTimeLocalDataSource, ) : CompletionTimeRepository { override suspend fun getCompletionTime(routineId: Long, date: LocalDate): LocalTime? { diff --git a/core/data/src/main/java/com/rendox/routinetracker/core/data/completion_time/DueDateSpecificCompletionTimeRepository.kt b/core/data/src/commonMain/kotlin/com/rendox/routinetracker/core/data/completion_time/DueDateSpecificCompletionTimeRepository.kt similarity index 100% rename from core/data/src/main/java/com/rendox/routinetracker/core/data/completion_time/DueDateSpecificCompletionTimeRepository.kt rename to core/data/src/commonMain/kotlin/com/rendox/routinetracker/core/data/completion_time/DueDateSpecificCompletionTimeRepository.kt diff --git a/core/data/src/main/java/com/rendox/routinetracker/core/data/completion_time/DueDateSpecificCompletionTimeRepositoryImpl.kt b/core/data/src/commonMain/kotlin/com/rendox/routinetracker/core/data/completion_time/DueDateSpecificCompletionTimeRepositoryImpl.kt similarity index 84% rename from core/data/src/main/java/com/rendox/routinetracker/core/data/completion_time/DueDateSpecificCompletionTimeRepositoryImpl.kt rename to core/data/src/commonMain/kotlin/com/rendox/routinetracker/core/data/completion_time/DueDateSpecificCompletionTimeRepositoryImpl.kt index fd528ccb..f7ad5862 100644 --- a/core/data/src/main/java/com/rendox/routinetracker/core/data/completion_time/DueDateSpecificCompletionTimeRepositoryImpl.kt +++ b/core/data/src/commonMain/kotlin/com/rendox/routinetracker/core/data/completion_time/DueDateSpecificCompletionTimeRepositoryImpl.kt @@ -4,7 +4,7 @@ import com.rendox.routinetracker.core.database.completion_time.DueDateSpecificCo import kotlinx.datetime.LocalTime class DueDateSpecificCompletionTimeRepositoryImpl( - private val localDataSource: DueDateSpecificCompletionTimeLocalDataSource + private val localDataSource: com.rendox.routinetracker.core.database.completion_time.DueDateSpecificCompletionTimeLocalDataSource ) : DueDateSpecificCompletionTimeRepository { override suspend fun getDueDateSpecificCompletionTime( scheduleId: Long, dueDateNumber: Int diff --git a/core/data/src/main/java/com/rendox/routinetracker/core/data/di/CompletionHistoryDataModule.kt b/core/data/src/commonMain/kotlin/com/rendox/routinetracker/core/data/di/CompletionHistoryDataModule.kt similarity index 78% rename from core/data/src/main/java/com/rendox/routinetracker/core/data/di/CompletionHistoryDataModule.kt rename to core/data/src/commonMain/kotlin/com/rendox/routinetracker/core/data/di/CompletionHistoryDataModule.kt index 1f5dd84f..927955cd 100644 --- a/core/data/src/main/java/com/rendox/routinetracker/core/data/di/CompletionHistoryDataModule.kt +++ b/core/data/src/commonMain/kotlin/com/rendox/routinetracker/core/data/di/CompletionHistoryDataModule.kt @@ -8,8 +8,8 @@ import org.koin.core.qualifier.named import org.koin.dsl.module val completionHistoryDataModule = module { - single { - CompletionHistoryLocalDataSourceImpl( + single { + com.rendox.routinetracker.core.database.completion_history.CompletionHistoryLocalDataSourceImpl( db = get(), ioDispatcher = get(qualifier = named("ioDispatcher")), ) diff --git a/core/data/src/main/java/com/rendox/routinetracker/core/data/di/CompletionTimeDataModule.kt b/core/data/src/commonMain/kotlin/com/rendox/routinetracker/core/data/di/CompletionTimeDataModule.kt similarity index 78% rename from core/data/src/main/java/com/rendox/routinetracker/core/data/di/CompletionTimeDataModule.kt rename to core/data/src/commonMain/kotlin/com/rendox/routinetracker/core/data/di/CompletionTimeDataModule.kt index bb9251a8..0fa21c67 100644 --- a/core/data/src/main/java/com/rendox/routinetracker/core/data/di/CompletionTimeDataModule.kt +++ b/core/data/src/commonMain/kotlin/com/rendox/routinetracker/core/data/di/CompletionTimeDataModule.kt @@ -9,8 +9,8 @@ import org.koin.dsl.module val completionTimeDataModule = module { - single { - CompletionTimeLocalDataSourceImpl( + single { + com.rendox.routinetracker.core.database.completion_time.CompletionTimeLocalDataSourceImpl( db = get(), ioDispatcher = get(qualifier = named("ioDispatcher")), ) diff --git a/core/data/src/main/java/com/rendox/routinetracker/core/data/di/RoutineDataModule.kt b/core/data/src/commonMain/kotlin/com/rendox/routinetracker/core/data/di/RoutineDataModule.kt similarity index 100% rename from core/data/src/main/java/com/rendox/routinetracker/core/data/di/RoutineDataModule.kt rename to core/data/src/commonMain/kotlin/com/rendox/routinetracker/core/data/di/RoutineDataModule.kt diff --git a/core/data/src/main/java/com/rendox/routinetracker/core/data/di/StreakDataModule.kt b/core/data/src/commonMain/kotlin/com/rendox/routinetracker/core/data/di/StreakDataModule.kt similarity index 100% rename from core/data/src/main/java/com/rendox/routinetracker/core/data/di/StreakDataModule.kt rename to core/data/src/commonMain/kotlin/com/rendox/routinetracker/core/data/di/StreakDataModule.kt diff --git a/core/data/src/main/java/com/rendox/routinetracker/core/data/di/VacationDataModule.kt b/core/data/src/commonMain/kotlin/com/rendox/routinetracker/core/data/di/VacationDataModule.kt similarity index 100% rename from core/data/src/main/java/com/rendox/routinetracker/core/data/di/VacationDataModule.kt rename to core/data/src/commonMain/kotlin/com/rendox/routinetracker/core/data/di/VacationDataModule.kt diff --git a/core/data/src/main/java/com/rendox/routinetracker/core/data/habit/HabitRepository.kt b/core/data/src/commonMain/kotlin/com/rendox/routinetracker/core/data/habit/HabitRepository.kt similarity index 100% rename from core/data/src/main/java/com/rendox/routinetracker/core/data/habit/HabitRepository.kt rename to core/data/src/commonMain/kotlin/com/rendox/routinetracker/core/data/habit/HabitRepository.kt diff --git a/core/data/src/main/java/com/rendox/routinetracker/core/data/habit/HabitRepositoryImpl.kt b/core/data/src/commonMain/kotlin/com/rendox/routinetracker/core/data/habit/HabitRepositoryImpl.kt similarity index 100% rename from core/data/src/main/java/com/rendox/routinetracker/core/data/habit/HabitRepositoryImpl.kt rename to core/data/src/commonMain/kotlin/com/rendox/routinetracker/core/data/habit/HabitRepositoryImpl.kt diff --git a/core/data/src/main/java/com/rendox/routinetracker/core/data/streaks/StreakRepository.kt b/core/data/src/commonMain/kotlin/com/rendox/routinetracker/core/data/streaks/StreakRepository.kt similarity index 100% rename from core/data/src/main/java/com/rendox/routinetracker/core/data/streaks/StreakRepository.kt rename to core/data/src/commonMain/kotlin/com/rendox/routinetracker/core/data/streaks/StreakRepository.kt diff --git a/core/data/src/main/java/com/rendox/routinetracker/core/data/streaks/StreakRepositoryImpl.kt b/core/data/src/commonMain/kotlin/com/rendox/routinetracker/core/data/streaks/StreakRepositoryImpl.kt similarity index 100% rename from core/data/src/main/java/com/rendox/routinetracker/core/data/streaks/StreakRepositoryImpl.kt rename to core/data/src/commonMain/kotlin/com/rendox/routinetracker/core/data/streaks/StreakRepositoryImpl.kt diff --git a/core/data/src/main/java/com/rendox/routinetracker/core/data/vacation/VacationRepository.kt b/core/data/src/commonMain/kotlin/com/rendox/routinetracker/core/data/vacation/VacationRepository.kt similarity index 100% rename from core/data/src/main/java/com/rendox/routinetracker/core/data/vacation/VacationRepository.kt rename to core/data/src/commonMain/kotlin/com/rendox/routinetracker/core/data/vacation/VacationRepository.kt diff --git a/core/data/src/main/java/com/rendox/routinetracker/core/data/vacation/VacationRepositoryImpl.kt b/core/data/src/commonMain/kotlin/com/rendox/routinetracker/core/data/vacation/VacationRepositoryImpl.kt similarity index 100% rename from core/data/src/main/java/com/rendox/routinetracker/core/data/vacation/VacationRepositoryImpl.kt rename to core/data/src/commonMain/kotlin/com/rendox/routinetracker/core/data/vacation/VacationRepositoryImpl.kt diff --git a/core/database/build.gradle.kts b/core/database/build.gradle.kts index e3605f8f..112b8f7e 100644 --- a/core/database/build.gradle.kts +++ b/core/database/build.gradle.kts @@ -1,7 +1,7 @@ plugins { - id("routinetracker.android.library") - id("routinetracker.android.koin") - id("routinetracker.android.library.instrumentationtestrunner") + id("routinetracker.kmp.library") + id("routinetracker.kmp.koin") + id("routinetracker.kmp.library.instrumentationtestrunner") alias(libs.plugins.app.cash.sqldelight) } @@ -13,6 +13,47 @@ sqldelight { } } +kotlin { + sourceSets { + commonMain { + dependencies { + implementation(project(":core:logic")) + implementation(project(":core:model")) + + implementation(libs.jetbrains.kotlinx.datetime) + + implementation(libs.app.cash.sqldelight.coroutines.extensions) + implementation(libs.app.cash.sqldelight.primitive.adapters) + } + } + + androidMain { + dependencies { + implementation(libs.app.cash.sqldelight.android.driver) + implementation(libs.app.cash.sqldelight.sqlite.driver) + } + } + + androidUnitTest { + dependencies { + implementation(libs.jetbrains.kotlinx.coroutines.test) + } + } + + androidInstrumentedTest { + dependencies { + implementation(libs.jetbrains.kotlinx.coroutines.test) + } + } + + nativeMain { + dependencies { + implementation(libs.app.cash.sqldelight.native.driver) + } + } + } +} + android { namespace = "com.rendox.routinetracker.core.database" @@ -34,19 +75,4 @@ android { } } } -} - -dependencies { - implementation(project(":core:logic")) - implementation(project(":core:model")) - - implementation(libs.jetbrains.kotlinx.datetime) - - implementation(libs.app.cash.sqldelight.android.driver) - implementation(libs.app.cash.sqldelight.coroutines.extensions.jvm) - implementation(libs.app.cash.sqldelight.primitive.adapters) - implementation(libs.app.cash.sqldelight.sqlite.driver) - - testImplementation(libs.jetbrains.kotlinx.coroutines.test) - androidTestImplementation(libs.jetbrains.kotlinx.coroutines.test) } \ No newline at end of file diff --git a/core/database/src/test/java/com/rendox/routinetracker/core/database/habit/HabitLocalDataSourceImplTest.kt b/core/database/src/androidUnitTest/kotlin/com/rendox/routinetracker/core/database/habit/HabitLocalDataSourceImplTest.kt similarity index 100% rename from core/database/src/test/java/com/rendox/routinetracker/core/database/habit/HabitLocalDataSourceImplTest.kt rename to core/database/src/androidUnitTest/kotlin/com/rendox/routinetracker/core/database/habit/HabitLocalDataSourceImplTest.kt diff --git a/core/database/src/test/java/com/rendox/routinetracker/core/database/habit/VacationLocalDataSourceImplTest.kt b/core/database/src/androidUnitTest/kotlin/com/rendox/routinetracker/core/database/habit/VacationLocalDataSourceImplTest.kt similarity index 100% rename from core/database/src/test/java/com/rendox/routinetracker/core/database/habit/VacationLocalDataSourceImplTest.kt rename to core/database/src/androidUnitTest/kotlin/com/rendox/routinetracker/core/database/habit/VacationLocalDataSourceImplTest.kt diff --git a/core/database/src/main/java/com/rendox/routinetracker/core/database/completion_history/CompletionHistoryLocalDataSource.kt b/core/database/src/commonMain/kotlin/com/rendox/routinetracker/core/database/completion_history/CompletionHistoryLocalDataSource.kt similarity index 100% rename from core/database/src/main/java/com/rendox/routinetracker/core/database/completion_history/CompletionHistoryLocalDataSource.kt rename to core/database/src/commonMain/kotlin/com/rendox/routinetracker/core/database/completion_history/CompletionHistoryLocalDataSource.kt diff --git a/core/database/src/main/java/com/rendox/routinetracker/core/database/completion_history/CompletionHistoryLocalDataSourceImpl.kt b/core/database/src/commonMain/kotlin/com/rendox/routinetracker/core/database/completion_history/CompletionHistoryLocalDataSourceImpl.kt similarity index 97% rename from core/database/src/main/java/com/rendox/routinetracker/core/database/completion_history/CompletionHistoryLocalDataSourceImpl.kt rename to core/database/src/commonMain/kotlin/com/rendox/routinetracker/core/database/completion_history/CompletionHistoryLocalDataSourceImpl.kt index 789ecd3f..41d3e2a6 100644 --- a/core/database/src/main/java/com/rendox/routinetracker/core/database/completion_history/CompletionHistoryLocalDataSourceImpl.kt +++ b/core/database/src/commonMain/kotlin/com/rendox/routinetracker/core/database/completion_history/CompletionHistoryLocalDataSourceImpl.kt @@ -11,7 +11,7 @@ import kotlin.coroutines.CoroutineContext class CompletionHistoryLocalDataSourceImpl( private val db: RoutineTrackerDatabase, private val ioDispatcher: CoroutineContext, -) : CompletionHistoryLocalDataSource { +) : com.rendox.routinetracker.core.database.completion_history.CompletionHistoryLocalDataSource { override suspend fun getNumOfTimesCompletedInPeriod( habitId: Long, minDate: LocalDate?, diff --git a/core/database/src/main/java/com/rendox/routinetracker/core/database/completion_time/CompletionTimeLocalDataSource.kt b/core/database/src/commonMain/kotlin/com/rendox/routinetracker/core/database/completion_time/CompletionTimeLocalDataSource.kt similarity index 100% rename from core/database/src/main/java/com/rendox/routinetracker/core/database/completion_time/CompletionTimeLocalDataSource.kt rename to core/database/src/commonMain/kotlin/com/rendox/routinetracker/core/database/completion_time/CompletionTimeLocalDataSource.kt diff --git a/core/database/src/main/java/com/rendox/routinetracker/core/database/completion_time/CompletionTimeLocalDataSourceImpl.kt b/core/database/src/commonMain/kotlin/com/rendox/routinetracker/core/database/completion_time/CompletionTimeLocalDataSourceImpl.kt similarity index 95% rename from core/database/src/main/java/com/rendox/routinetracker/core/database/completion_time/CompletionTimeLocalDataSourceImpl.kt rename to core/database/src/commonMain/kotlin/com/rendox/routinetracker/core/database/completion_time/CompletionTimeLocalDataSourceImpl.kt index bfe59234..d7a88199 100644 --- a/core/database/src/main/java/com/rendox/routinetracker/core/database/completion_time/CompletionTimeLocalDataSourceImpl.kt +++ b/core/database/src/commonMain/kotlin/com/rendox/routinetracker/core/database/completion_time/CompletionTimeLocalDataSourceImpl.kt @@ -10,7 +10,7 @@ import kotlin.coroutines.CoroutineContext class CompletionTimeLocalDataSourceImpl( private val db: RoutineTrackerDatabase, private val ioDispatcher: CoroutineContext, -) : CompletionTimeLocalDataSource { +) : com.rendox.routinetracker.core.database.completion_time.CompletionTimeLocalDataSource { override suspend fun getCompletionTime(routineId: Long, date: LocalDate): LocalTime? { return withContext(ioDispatcher) { diff --git a/core/database/src/main/java/com/rendox/routinetracker/core/database/completion_time/DueDateSpecificCompletionTimeLocalDataSource.kt b/core/database/src/commonMain/kotlin/com/rendox/routinetracker/core/database/completion_time/DueDateSpecificCompletionTimeLocalDataSource.kt similarity index 100% rename from core/database/src/main/java/com/rendox/routinetracker/core/database/completion_time/DueDateSpecificCompletionTimeLocalDataSource.kt rename to core/database/src/commonMain/kotlin/com/rendox/routinetracker/core/database/completion_time/DueDateSpecificCompletionTimeLocalDataSource.kt diff --git a/core/database/src/main/java/com/rendox/routinetracker/core/database/completion_time/DueDateSpecificCompletionTimeLocalDataSourceImpl.kt b/core/database/src/commonMain/kotlin/com/rendox/routinetracker/core/database/completion_time/DueDateSpecificCompletionTimeLocalDataSourceImpl.kt similarity index 93% rename from core/database/src/main/java/com/rendox/routinetracker/core/database/completion_time/DueDateSpecificCompletionTimeLocalDataSourceImpl.kt rename to core/database/src/commonMain/kotlin/com/rendox/routinetracker/core/database/completion_time/DueDateSpecificCompletionTimeLocalDataSourceImpl.kt index caba8751..6e5ac89f 100644 --- a/core/database/src/main/java/com/rendox/routinetracker/core/database/completion_time/DueDateSpecificCompletionTimeLocalDataSourceImpl.kt +++ b/core/database/src/commonMain/kotlin/com/rendox/routinetracker/core/database/completion_time/DueDateSpecificCompletionTimeLocalDataSourceImpl.kt @@ -9,7 +9,7 @@ import kotlin.coroutines.CoroutineContext class DueDateSpecificCompletionTimeLocalDataSourceImpl( private val db: RoutineTrackerDatabase, private val ioDispatcher: CoroutineContext, -) : DueDateSpecificCompletionTimeLocalDataSource { +) : com.rendox.routinetracker.core.database.completion_time.DueDateSpecificCompletionTimeLocalDataSource { override suspend fun getDueDateSpecificCompletionTime( scheduleId: Long, dueDateNumber: Int ): LocalTime? = withContext(ioDispatcher) { diff --git a/core/database/src/main/java/com/rendox/routinetracker/core/database/di/CompletionTimeLocalDataModule.kt b/core/database/src/commonMain/kotlin/com/rendox/routinetracker/core/database/di/CompletionTimeLocalDataModule.kt similarity index 68% rename from core/database/src/main/java/com/rendox/routinetracker/core/database/di/CompletionTimeLocalDataModule.kt rename to core/database/src/commonMain/kotlin/com/rendox/routinetracker/core/database/di/CompletionTimeLocalDataModule.kt index 14225f36..40f00940 100644 --- a/core/database/src/main/java/com/rendox/routinetracker/core/database/di/CompletionTimeLocalDataModule.kt +++ b/core/database/src/commonMain/kotlin/com/rendox/routinetracker/core/database/di/CompletionTimeLocalDataModule.kt @@ -6,8 +6,8 @@ import org.koin.core.qualifier.named import org.koin.dsl.module val completionTimeLocalDataModule = module { - single { - DueDateSpecificCompletionTimeLocalDataSourceImpl( + single { + com.rendox.routinetracker.core.database.completion_time.DueDateSpecificCompletionTimeLocalDataSourceImpl( db = get(), ioDispatcher = get(qualifier = named("ioDispatcher")), ) diff --git a/core/database/src/main/java/com/rendox/routinetracker/core/database/di/HabitLocalDataModule.kt b/core/database/src/commonMain/kotlin/com/rendox/routinetracker/core/database/di/HabitLocalDataModule.kt similarity index 100% rename from core/database/src/main/java/com/rendox/routinetracker/core/database/di/HabitLocalDataModule.kt rename to core/database/src/commonMain/kotlin/com/rendox/routinetracker/core/database/di/HabitLocalDataModule.kt diff --git a/core/database/src/main/java/com/rendox/routinetracker/core/database/di/LocalDataSourceModule.kt b/core/database/src/commonMain/kotlin/com/rendox/routinetracker/core/database/di/LocalDataSourceModule.kt similarity index 82% rename from core/database/src/main/java/com/rendox/routinetracker/core/database/di/LocalDataSourceModule.kt rename to core/database/src/commonMain/kotlin/com/rendox/routinetracker/core/database/di/LocalDataSourceModule.kt index c79031be..b915ceab 100644 --- a/core/database/src/main/java/com/rendox/routinetracker/core/database/di/LocalDataSourceModule.kt +++ b/core/database/src/commonMain/kotlin/com/rendox/routinetracker/core/database/di/LocalDataSourceModule.kt @@ -53,9 +53,9 @@ val localDataSourceModule = module { ), scheduleEntityAdapter = ScheduleEntity.Adapter( typeAdapter = EnumColumnAdapter(), - startDateAdapter = localDateAdapter, - endDateAdapter = localDateAdapter, - startDayOfWeekInWeeklyScheduleAdapter = dayOfWeekAdapter, + startDateAdapter = com.rendox.routinetracker.core.database.di.localDateAdapter, + endDateAdapter = com.rendox.routinetracker.core.database.di.localDateAdapter, + startDayOfWeekInWeeklyScheduleAdapter = com.rendox.routinetracker.core.database.di.dayOfWeekAdapter, numOfDueDaysInByNumOfDueDaysScheduleAdapter = IntColumnAdapter, numOfDueDaysInFirstPeriodInByNumOfDueDaysScheduleAdapter = IntColumnAdapter, numOfDaysInAlternateDaysScheduleAdapter = IntColumnAdapter, @@ -70,25 +70,25 @@ val localDataSourceModule = module { weekDayNumberMonthRelatedAdapter = EnumColumnAdapter(), ), specificDateCustomCompletionTimeAdapter = SpecificDateCustomCompletionTime.Adapter( - dateAdapter = localDateAdapter, + dateAdapter = com.rendox.routinetracker.core.database.di.localDateAdapter, completionTimeHourAdapter = IntColumnAdapter, completionTimeMinuteAdapter = IntColumnAdapter, ), completionHistoryEntityAdapter = CompletionHistoryEntity.Adapter( - dateAdapter = localDateAdapter, + dateAdapter = com.rendox.routinetracker.core.database.di.localDateAdapter, numOfTimesCompletedAdapter = FloatColumnAdapter, ), vacationEntityAdapter = VacationEntity.Adapter( - startDateAdapter = localDateAdapter, - endDateAdapter = localDateAdapter, + startDateAdapter = com.rendox.routinetracker.core.database.di.localDateAdapter, + endDateAdapter = com.rendox.routinetracker.core.database.di.localDateAdapter, ), cashedStreakEntityAdapter = CashedStreakEntity.Adapter( - startDateAdapter = localDateAdapter, - endDateAdapter = localDateAdapter, + startDateAdapter = com.rendox.routinetracker.core.database.di.localDateAdapter, + endDateAdapter = com.rendox.routinetracker.core.database.di.localDateAdapter, ), streakCashedPeriodEntityAdapter = StreakCashedPeriodEntity.Adapter( - startDateAdapter = localDateAdapter, - endDateAdapter = localDateAdapter, + startDateAdapter = com.rendox.routinetracker.core.database.di.localDateAdapter, + endDateAdapter = com.rendox.routinetracker.core.database.di.localDateAdapter, ), ) } diff --git a/core/database/src/main/java/com/rendox/routinetracker/core/database/di/StreakLocalDataModule.kt b/core/database/src/commonMain/kotlin/com/rendox/routinetracker/core/database/di/StreakLocalDataModule.kt similarity index 100% rename from core/database/src/main/java/com/rendox/routinetracker/core/database/di/StreakLocalDataModule.kt rename to core/database/src/commonMain/kotlin/com/rendox/routinetracker/core/database/di/StreakLocalDataModule.kt diff --git a/core/database/src/main/java/com/rendox/routinetracker/core/database/habit/DueDateLocalDataSource.kt b/core/database/src/commonMain/kotlin/com/rendox/routinetracker/core/database/habit/DueDateLocalDataSource.kt similarity index 100% rename from core/database/src/main/java/com/rendox/routinetracker/core/database/habit/DueDateLocalDataSource.kt rename to core/database/src/commonMain/kotlin/com/rendox/routinetracker/core/database/habit/DueDateLocalDataSource.kt diff --git a/core/database/src/main/java/com/rendox/routinetracker/core/database/habit/DueDateLocalDataSourceImpl.kt b/core/database/src/commonMain/kotlin/com/rendox/routinetracker/core/database/habit/DueDateLocalDataSourceImpl.kt similarity index 100% rename from core/database/src/main/java/com/rendox/routinetracker/core/database/habit/DueDateLocalDataSourceImpl.kt rename to core/database/src/commonMain/kotlin/com/rendox/routinetracker/core/database/habit/DueDateLocalDataSourceImpl.kt diff --git a/core/database/src/main/java/com/rendox/routinetracker/core/database/habit/HabitLocalDataSource.kt b/core/database/src/commonMain/kotlin/com/rendox/routinetracker/core/database/habit/HabitLocalDataSource.kt similarity index 100% rename from core/database/src/main/java/com/rendox/routinetracker/core/database/habit/HabitLocalDataSource.kt rename to core/database/src/commonMain/kotlin/com/rendox/routinetracker/core/database/habit/HabitLocalDataSource.kt diff --git a/core/database/src/main/java/com/rendox/routinetracker/core/database/habit/HabitLocalDataSourceImpl.kt b/core/database/src/commonMain/kotlin/com/rendox/routinetracker/core/database/habit/HabitLocalDataSourceImpl.kt similarity index 100% rename from core/database/src/main/java/com/rendox/routinetracker/core/database/habit/HabitLocalDataSourceImpl.kt rename to core/database/src/commonMain/kotlin/com/rendox/routinetracker/core/database/habit/HabitLocalDataSourceImpl.kt diff --git a/core/database/src/main/java/com/rendox/routinetracker/core/database/habit/ScheduleLocalDataSource.kt b/core/database/src/commonMain/kotlin/com/rendox/routinetracker/core/database/habit/ScheduleLocalDataSource.kt similarity index 100% rename from core/database/src/main/java/com/rendox/routinetracker/core/database/habit/ScheduleLocalDataSource.kt rename to core/database/src/commonMain/kotlin/com/rendox/routinetracker/core/database/habit/ScheduleLocalDataSource.kt diff --git a/core/database/src/main/java/com/rendox/routinetracker/core/database/habit/ScheduleLocalDataSourceImpl.kt b/core/database/src/commonMain/kotlin/com/rendox/routinetracker/core/database/habit/ScheduleLocalDataSourceImpl.kt similarity index 100% rename from core/database/src/main/java/com/rendox/routinetracker/core/database/habit/ScheduleLocalDataSourceImpl.kt rename to core/database/src/commonMain/kotlin/com/rendox/routinetracker/core/database/habit/ScheduleLocalDataSourceImpl.kt diff --git a/core/database/src/main/java/com/rendox/routinetracker/core/database/habit/WeekDaysMonthRelatedLocalDataSource.kt b/core/database/src/commonMain/kotlin/com/rendox/routinetracker/core/database/habit/WeekDaysMonthRelatedLocalDataSource.kt similarity index 100% rename from core/database/src/main/java/com/rendox/routinetracker/core/database/habit/WeekDaysMonthRelatedLocalDataSource.kt rename to core/database/src/commonMain/kotlin/com/rendox/routinetracker/core/database/habit/WeekDaysMonthRelatedLocalDataSource.kt diff --git a/core/database/src/main/java/com/rendox/routinetracker/core/database/habit/WeekDaysMonthRelatedLocalDataSourceImpl.kt b/core/database/src/commonMain/kotlin/com/rendox/routinetracker/core/database/habit/WeekDaysMonthRelatedLocalDataSourceImpl.kt similarity index 100% rename from core/database/src/main/java/com/rendox/routinetracker/core/database/habit/WeekDaysMonthRelatedLocalDataSourceImpl.kt rename to core/database/src/commonMain/kotlin/com/rendox/routinetracker/core/database/habit/WeekDaysMonthRelatedLocalDataSourceImpl.kt diff --git a/core/database/src/main/java/com/rendox/routinetracker/core/database/habit/model/RoutineEntityConvertions.kt b/core/database/src/commonMain/kotlin/com/rendox/routinetracker/core/database/habit/model/RoutineEntityConvertions.kt similarity index 100% rename from core/database/src/main/java/com/rendox/routinetracker/core/database/habit/model/RoutineEntityConvertions.kt rename to core/database/src/commonMain/kotlin/com/rendox/routinetracker/core/database/habit/model/RoutineEntityConvertions.kt diff --git a/core/database/src/main/java/com/rendox/routinetracker/core/database/habit/model/ScheduleEntityConvertions.kt b/core/database/src/commonMain/kotlin/com/rendox/routinetracker/core/database/habit/model/ScheduleEntityConvertions.kt similarity index 100% rename from core/database/src/main/java/com/rendox/routinetracker/core/database/habit/model/ScheduleEntityConvertions.kt rename to core/database/src/commonMain/kotlin/com/rendox/routinetracker/core/database/habit/model/ScheduleEntityConvertions.kt diff --git a/core/database/src/main/java/com/rendox/routinetracker/core/database/streak/StreakLocalDataSource.kt b/core/database/src/commonMain/kotlin/com/rendox/routinetracker/core/database/streak/StreakLocalDataSource.kt similarity index 100% rename from core/database/src/main/java/com/rendox/routinetracker/core/database/streak/StreakLocalDataSource.kt rename to core/database/src/commonMain/kotlin/com/rendox/routinetracker/core/database/streak/StreakLocalDataSource.kt diff --git a/core/database/src/main/java/com/rendox/routinetracker/core/database/streak/StreakLocalDataSourceImpl.kt b/core/database/src/commonMain/kotlin/com/rendox/routinetracker/core/database/streak/StreakLocalDataSourceImpl.kt similarity index 100% rename from core/database/src/main/java/com/rendox/routinetracker/core/database/streak/StreakLocalDataSourceImpl.kt rename to core/database/src/commonMain/kotlin/com/rendox/routinetracker/core/database/streak/StreakLocalDataSourceImpl.kt diff --git a/core/database/src/main/java/com/rendox/routinetracker/core/database/vacation/VacationLocalDataSource.kt b/core/database/src/commonMain/kotlin/com/rendox/routinetracker/core/database/vacation/VacationLocalDataSource.kt similarity index 100% rename from core/database/src/main/java/com/rendox/routinetracker/core/database/vacation/VacationLocalDataSource.kt rename to core/database/src/commonMain/kotlin/com/rendox/routinetracker/core/database/vacation/VacationLocalDataSource.kt diff --git a/core/database/src/main/java/com/rendox/routinetracker/core/database/vacation/VacationLocalDataSourceImpl.kt b/core/database/src/commonMain/kotlin/com/rendox/routinetracker/core/database/vacation/VacationLocalDataSourceImpl.kt similarity index 100% rename from core/database/src/main/java/com/rendox/routinetracker/core/database/vacation/VacationLocalDataSourceImpl.kt rename to core/database/src/commonMain/kotlin/com/rendox/routinetracker/core/database/vacation/VacationLocalDataSourceImpl.kt diff --git a/core/database/src/main/sqldelight/com/rendox/routinetracker/core/database/cashedStreak.sq b/core/database/src/commonMain/sqldelight/com/rendox/routinetracker/core/database/cashedStreak.sq similarity index 100% rename from core/database/src/main/sqldelight/com/rendox/routinetracker/core/database/cashedStreak.sq rename to core/database/src/commonMain/sqldelight/com/rendox/routinetracker/core/database/cashedStreak.sq diff --git a/core/database/src/main/sqldelight/com/rendox/routinetracker/core/database/completionHistoryEntity.sq b/core/database/src/commonMain/sqldelight/com/rendox/routinetracker/core/database/completionHistoryEntity.sq similarity index 100% rename from core/database/src/main/sqldelight/com/rendox/routinetracker/core/database/completionHistoryEntity.sq rename to core/database/src/commonMain/sqldelight/com/rendox/routinetracker/core/database/completionHistoryEntity.sq diff --git a/core/database/src/main/sqldelight/com/rendox/routinetracker/core/database/habit/habitEntity.sq b/core/database/src/commonMain/sqldelight/com/rendox/routinetracker/core/database/habit/habitEntity.sq similarity index 100% rename from core/database/src/main/sqldelight/com/rendox/routinetracker/core/database/habit/habitEntity.sq rename to core/database/src/commonMain/sqldelight/com/rendox/routinetracker/core/database/habit/habitEntity.sq diff --git a/core/database/src/main/sqldelight/com/rendox/routinetracker/core/database/schedule/dueDateEntity.sq b/core/database/src/commonMain/sqldelight/com/rendox/routinetracker/core/database/schedule/dueDateEntity.sq similarity index 100% rename from core/database/src/main/sqldelight/com/rendox/routinetracker/core/database/schedule/dueDateEntity.sq rename to core/database/src/commonMain/sqldelight/com/rendox/routinetracker/core/database/schedule/dueDateEntity.sq diff --git a/core/database/src/main/sqldelight/com/rendox/routinetracker/core/database/schedule/scheduleEntity.sq b/core/database/src/commonMain/sqldelight/com/rendox/routinetracker/core/database/schedule/scheduleEntity.sq similarity index 100% rename from core/database/src/main/sqldelight/com/rendox/routinetracker/core/database/schedule/scheduleEntity.sq rename to core/database/src/commonMain/sqldelight/com/rendox/routinetracker/core/database/schedule/scheduleEntity.sq diff --git a/core/database/src/main/sqldelight/com/rendox/routinetracker/core/database/schedule/weekDayMonthRelatedEntity.sq b/core/database/src/commonMain/sqldelight/com/rendox/routinetracker/core/database/schedule/weekDayMonthRelatedEntity.sq similarity index 100% rename from core/database/src/main/sqldelight/com/rendox/routinetracker/core/database/schedule/weekDayMonthRelatedEntity.sq rename to core/database/src/commonMain/sqldelight/com/rendox/routinetracker/core/database/schedule/weekDayMonthRelatedEntity.sq diff --git a/core/database/src/main/sqldelight/com/rendox/routinetracker/core/database/specificDateCustomCompletionTime.sq b/core/database/src/commonMain/sqldelight/com/rendox/routinetracker/core/database/specificDateCustomCompletionTime.sq similarity index 100% rename from core/database/src/main/sqldelight/com/rendox/routinetracker/core/database/specificDateCustomCompletionTime.sq rename to core/database/src/commonMain/sqldelight/com/rendox/routinetracker/core/database/specificDateCustomCompletionTime.sq diff --git a/core/database/src/main/sqldelight/com/rendox/routinetracker/core/database/vacationEntity.sq b/core/database/src/commonMain/sqldelight/com/rendox/routinetracker/core/database/vacationEntity.sq similarity index 100% rename from core/database/src/main/sqldelight/com/rendox/routinetracker/core/database/vacationEntity.sq rename to core/database/src/commonMain/sqldelight/com/rendox/routinetracker/core/database/vacationEntity.sq diff --git a/core/domain/build.gradle.kts b/core/domain/build.gradle.kts index 8613efef..a99c17ed 100644 --- a/core/domain/build.gradle.kts +++ b/core/domain/build.gradle.kts @@ -1,7 +1,35 @@ plugins { - id("routinetracker.android.library") - id("routinetracker.android.koin") - id("routinetracker.android.library.instrumentationtestrunner") + id("routinetracker.kmp.library") + id("routinetracker.kmp.koin") + id("routinetracker.kmp.library.instrumentationtestrunner") +} + +kotlin { + sourceSets { + commonMain { + dependencies { + implementation(project(":core:data")) + implementation(project(":core:database")) + implementation(project(":core:model")) + implementation(project(":core:logic")) + + implementation(libs.jetbrains.kotlinx.datetime) + implementation(libs.jetbrains.kotlinx.coroutines.core) + } + } + + androidMain { + dependencies { + implementation(libs.app.cash.sqldelight.sqlite.driver) + } + } + + androidUnitTest { + dependencies { + implementation(libs.jetbrains.kotlinx.coroutines.test) + } + } + } } android { @@ -25,16 +53,4 @@ android { } } } -} - -dependencies { - implementation(project(":core:data")) - implementation(project(":core:database")) - implementation(project(":core:model")) - implementation(project(":core:logic")) - - implementation(libs.app.cash.sqldelight.sqlite.driver) - implementation(libs.jetbrains.kotlinx.datetime) - - testImplementation(libs.jetbrains.kotlinx.coroutines.test) } \ No newline at end of file diff --git a/core/domain/src/test/java/com/rendox/routinetracker/core/domain/completion_history/HabitStatusComputerImplTest.kt b/core/domain/src/androidUnitTest/kotlin/com/rendox/routinetracker/core/domain/completion_history/HabitStatusComputerImplTest.kt similarity index 100% rename from core/domain/src/test/java/com/rendox/routinetracker/core/domain/completion_history/HabitStatusComputerImplTest.kt rename to core/domain/src/androidUnitTest/kotlin/com/rendox/routinetracker/core/domain/completion_history/HabitStatusComputerImplTest.kt diff --git a/core/domain/src/test/java/com/rendox/routinetracker/core/domain/completion_history/ScheduleGetPeriodRangeTest.kt b/core/domain/src/androidUnitTest/kotlin/com/rendox/routinetracker/core/domain/completion_history/ScheduleGetPeriodRangeTest.kt similarity index 100% rename from core/domain/src/test/java/com/rendox/routinetracker/core/domain/completion_history/ScheduleGetPeriodRangeTest.kt rename to core/domain/src/androidUnitTest/kotlin/com/rendox/routinetracker/core/domain/completion_history/ScheduleGetPeriodRangeTest.kt diff --git a/core/domain/src/test/java/com/rendox/routinetracker/core/domain/completion_history/ScheduleIsDueTest.kt b/core/domain/src/androidUnitTest/kotlin/com/rendox/routinetracker/core/domain/completion_history/ScheduleIsDueTest.kt similarity index 100% rename from core/domain/src/test/java/com/rendox/routinetracker/core/domain/completion_history/ScheduleIsDueTest.kt rename to core/domain/src/androidUnitTest/kotlin/com/rendox/routinetracker/core/domain/completion_history/ScheduleIsDueTest.kt diff --git a/core/domain/src/test/java/com/rendox/routinetracker/core/domain/streak/GetAllStreaksWithCashingUseCaseTest.kt b/core/domain/src/androidUnitTest/kotlin/com/rendox/routinetracker/core/domain/streak/GetAllStreaksWithCashingUseCaseTest.kt similarity index 100% rename from core/domain/src/test/java/com/rendox/routinetracker/core/domain/streak/GetAllStreaksWithCashingUseCaseTest.kt rename to core/domain/src/androidUnitTest/kotlin/com/rendox/routinetracker/core/domain/streak/GetAllStreaksWithCashingUseCaseTest.kt diff --git a/core/domain/src/test/java/com/rendox/routinetracker/core/domain/streak/StreakComputerFake.kt b/core/domain/src/androidUnitTest/kotlin/com/rendox/routinetracker/core/domain/streak/StreakComputerFake.kt similarity index 100% rename from core/domain/src/test/java/com/rendox/routinetracker/core/domain/streak/StreakComputerFake.kt rename to core/domain/src/androidUnitTest/kotlin/com/rendox/routinetracker/core/domain/streak/StreakComputerFake.kt diff --git a/core/domain/src/test/java/com/rendox/routinetracker/core/domain/streak/StreakComputerImplTest.kt b/core/domain/src/androidUnitTest/kotlin/com/rendox/routinetracker/core/domain/streak/StreakComputerImplTest.kt similarity index 100% rename from core/domain/src/test/java/com/rendox/routinetracker/core/domain/streak/StreakComputerImplTest.kt rename to core/domain/src/androidUnitTest/kotlin/com/rendox/routinetracker/core/domain/streak/StreakComputerImplTest.kt diff --git a/core/domain/src/test/java/com/rendox/routinetracker/core/domain/streak/StreakUtilTest.kt b/core/domain/src/androidUnitTest/kotlin/com/rendox/routinetracker/core/domain/streak/StreakUtilTest.kt similarity index 100% rename from core/domain/src/test/java/com/rendox/routinetracker/core/domain/streak/StreakUtilTest.kt rename to core/domain/src/androidUnitTest/kotlin/com/rendox/routinetracker/core/domain/streak/StreakUtilTest.kt diff --git a/core/domain/src/main/java/com/rendox/routinetracker/core/domain/completion_history/GetHabitCompletionDataUseCase.kt b/core/domain/src/commonMain/kotlin/com/rendox/routinetracker/core/domain/completion_history/GetHabitCompletionDataUseCase.kt similarity index 100% rename from core/domain/src/main/java/com/rendox/routinetracker/core/domain/completion_history/GetHabitCompletionDataUseCase.kt rename to core/domain/src/commonMain/kotlin/com/rendox/routinetracker/core/domain/completion_history/GetHabitCompletionDataUseCase.kt diff --git a/core/domain/src/main/java/com/rendox/routinetracker/core/domain/completion_history/GetHabitCompletionDataUseCaseImpl.kt b/core/domain/src/commonMain/kotlin/com/rendox/routinetracker/core/domain/completion_history/GetHabitCompletionDataUseCaseImpl.kt similarity index 100% rename from core/domain/src/main/java/com/rendox/routinetracker/core/domain/completion_history/GetHabitCompletionDataUseCaseImpl.kt rename to core/domain/src/commonMain/kotlin/com/rendox/routinetracker/core/domain/completion_history/GetHabitCompletionDataUseCaseImpl.kt diff --git a/core/domain/src/main/java/com/rendox/routinetracker/core/domain/completion_history/GetHabitCompletionDataUseCaseIndependentPeriods.kt b/core/domain/src/commonMain/kotlin/com/rendox/routinetracker/core/domain/completion_history/GetHabitCompletionDataUseCaseIndependentPeriods.kt similarity index 100% rename from core/domain/src/main/java/com/rendox/routinetracker/core/domain/completion_history/GetHabitCompletionDataUseCaseIndependentPeriods.kt rename to core/domain/src/commonMain/kotlin/com/rendox/routinetracker/core/domain/completion_history/GetHabitCompletionDataUseCaseIndependentPeriods.kt diff --git a/core/domain/src/main/java/com/rendox/routinetracker/core/domain/completion_history/HabitStatusComputer.kt b/core/domain/src/commonMain/kotlin/com/rendox/routinetracker/core/domain/completion_history/HabitStatusComputer.kt similarity index 100% rename from core/domain/src/main/java/com/rendox/routinetracker/core/domain/completion_history/HabitStatusComputer.kt rename to core/domain/src/commonMain/kotlin/com/rendox/routinetracker/core/domain/completion_history/HabitStatusComputer.kt diff --git a/core/domain/src/main/java/com/rendox/routinetracker/core/domain/completion_history/HabitStatusComputerImpl.kt b/core/domain/src/commonMain/kotlin/com/rendox/routinetracker/core/domain/completion_history/HabitStatusComputerImpl.kt similarity index 100% rename from core/domain/src/main/java/com/rendox/routinetracker/core/domain/completion_history/HabitStatusComputerImpl.kt rename to core/domain/src/commonMain/kotlin/com/rendox/routinetracker/core/domain/completion_history/HabitStatusComputerImpl.kt diff --git a/core/domain/src/main/java/com/rendox/routinetracker/core/domain/completion_history/InsertHabitCompletionAndCashStreaks.kt b/core/domain/src/commonMain/kotlin/com/rendox/routinetracker/core/domain/completion_history/InsertHabitCompletionAndCashStreaks.kt similarity index 100% rename from core/domain/src/main/java/com/rendox/routinetracker/core/domain/completion_history/InsertHabitCompletionAndCashStreaks.kt rename to core/domain/src/commonMain/kotlin/com/rendox/routinetracker/core/domain/completion_history/InsertHabitCompletionAndCashStreaks.kt diff --git a/core/domain/src/main/java/com/rendox/routinetracker/core/domain/completion_history/InsertHabitCompletionUseCase.kt b/core/domain/src/commonMain/kotlin/com/rendox/routinetracker/core/domain/completion_history/InsertHabitCompletionUseCase.kt similarity index 100% rename from core/domain/src/main/java/com/rendox/routinetracker/core/domain/completion_history/InsertHabitCompletionUseCase.kt rename to core/domain/src/commonMain/kotlin/com/rendox/routinetracker/core/domain/completion_history/InsertHabitCompletionUseCase.kt diff --git a/core/domain/src/main/java/com/rendox/routinetracker/core/domain/completion_history/InsertHabitCompletionUseCaseImpl.kt b/core/domain/src/commonMain/kotlin/com/rendox/routinetracker/core/domain/completion_history/InsertHabitCompletionUseCaseImpl.kt similarity index 100% rename from core/domain/src/main/java/com/rendox/routinetracker/core/domain/completion_history/InsertHabitCompletionUseCaseImpl.kt rename to core/domain/src/commonMain/kotlin/com/rendox/routinetracker/core/domain/completion_history/InsertHabitCompletionUseCaseImpl.kt diff --git a/core/domain/src/main/java/com/rendox/routinetracker/core/domain/completion_history/ScheduleGetPeriodRange.kt b/core/domain/src/commonMain/kotlin/com/rendox/routinetracker/core/domain/completion_history/ScheduleGetPeriodRange.kt similarity index 98% rename from core/domain/src/main/java/com/rendox/routinetracker/core/domain/completion_history/ScheduleGetPeriodRange.kt rename to core/domain/src/commonMain/kotlin/com/rendox/routinetracker/core/domain/completion_history/ScheduleGetPeriodRange.kt index 216b21da..d26fd1ef 100644 --- a/core/domain/src/main/java/com/rendox/routinetracker/core/domain/completion_history/ScheduleGetPeriodRange.kt +++ b/core/domain/src/commonMain/kotlin/com/rendox/routinetracker/core/domain/completion_history/ScheduleGetPeriodRange.kt @@ -71,7 +71,7 @@ private fun Schedule.WeeklySchedule.weeklyScheduleGetPeriodDateRange( while (startPeriodDate.dayOfWeek != startDayOfWeek && startPeriodDate != startDate) { startPeriodDate = startPeriodDate.minus(DatePeriod(days = 1)) } - val endDateDayOfWeekIndex = startDayOfWeek!!.value - 1 + val endDateDayOfWeekIndex = startDayOfWeek!!.ordinal - 1 val endDateDayOfWeek = if (endDateDayOfWeekIndex == 0) { DayOfWeek.SUNDAY } else { diff --git a/core/domain/src/main/java/com/rendox/routinetracker/core/domain/completion_history/ScheduleIsDue.kt b/core/domain/src/commonMain/kotlin/com/rendox/routinetracker/core/domain/completion_history/ScheduleIsDue.kt similarity index 100% rename from core/domain/src/main/java/com/rendox/routinetracker/core/domain/completion_history/ScheduleIsDue.kt rename to core/domain/src/commonMain/kotlin/com/rendox/routinetracker/core/domain/completion_history/ScheduleIsDue.kt diff --git a/core/domain/src/main/java/com/rendox/routinetracker/core/domain/completion_time/GetHabitCompletionTimeUseCase.kt b/core/domain/src/commonMain/kotlin/com/rendox/routinetracker/core/domain/completion_time/GetHabitCompletionTimeUseCase.kt similarity index 100% rename from core/domain/src/main/java/com/rendox/routinetracker/core/domain/completion_time/GetHabitCompletionTimeUseCase.kt rename to core/domain/src/commonMain/kotlin/com/rendox/routinetracker/core/domain/completion_time/GetHabitCompletionTimeUseCase.kt diff --git a/core/domain/src/main/java/com/rendox/routinetracker/core/domain/completion_time/GetHabitCompletionTimeUseCaseImpl.kt b/core/domain/src/commonMain/kotlin/com/rendox/routinetracker/core/domain/completion_time/GetHabitCompletionTimeUseCaseImpl.kt similarity index 100% rename from core/domain/src/main/java/com/rendox/routinetracker/core/domain/completion_time/GetHabitCompletionTimeUseCaseImpl.kt rename to core/domain/src/commonMain/kotlin/com/rendox/routinetracker/core/domain/completion_time/GetHabitCompletionTimeUseCaseImpl.kt diff --git a/core/domain/src/main/java/com/rendox/routinetracker/core/domain/di/CompletionHistoryDomainModule.kt b/core/domain/src/commonMain/kotlin/com/rendox/routinetracker/core/domain/di/CompletionHistoryDomainModule.kt similarity index 100% rename from core/domain/src/main/java/com/rendox/routinetracker/core/domain/di/CompletionHistoryDomainModule.kt rename to core/domain/src/commonMain/kotlin/com/rendox/routinetracker/core/domain/di/CompletionHistoryDomainModule.kt diff --git a/core/domain/src/main/java/com/rendox/routinetracker/core/domain/di/CompletionTimeDomainModule.kt b/core/domain/src/commonMain/kotlin/com/rendox/routinetracker/core/domain/di/CompletionTimeDomainModule.kt similarity index 100% rename from core/domain/src/main/java/com/rendox/routinetracker/core/domain/di/CompletionTimeDomainModule.kt rename to core/domain/src/commonMain/kotlin/com/rendox/routinetracker/core/domain/di/CompletionTimeDomainModule.kt diff --git a/core/domain/src/main/java/com/rendox/routinetracker/core/domain/di/DomainModule.kt b/core/domain/src/commonMain/kotlin/com/rendox/routinetracker/core/domain/di/DomainModule.kt similarity index 100% rename from core/domain/src/main/java/com/rendox/routinetracker/core/domain/di/DomainModule.kt rename to core/domain/src/commonMain/kotlin/com/rendox/routinetracker/core/domain/di/DomainModule.kt diff --git a/core/domain/src/main/java/com/rendox/routinetracker/core/domain/di/HabitDomainModule.kt b/core/domain/src/commonMain/kotlin/com/rendox/routinetracker/core/domain/di/HabitDomainModule.kt similarity index 100% rename from core/domain/src/main/java/com/rendox/routinetracker/core/domain/di/HabitDomainModule.kt rename to core/domain/src/commonMain/kotlin/com/rendox/routinetracker/core/domain/di/HabitDomainModule.kt diff --git a/core/domain/src/main/java/com/rendox/routinetracker/core/domain/di/StreaksDomainModule.kt b/core/domain/src/commonMain/kotlin/com/rendox/routinetracker/core/domain/di/StreaksDomainModule.kt similarity index 100% rename from core/domain/src/main/java/com/rendox/routinetracker/core/domain/di/StreaksDomainModule.kt rename to core/domain/src/commonMain/kotlin/com/rendox/routinetracker/core/domain/di/StreaksDomainModule.kt diff --git a/core/domain/src/main/java/com/rendox/routinetracker/core/domain/streak/GetAllStreaksUseCase.kt b/core/domain/src/commonMain/kotlin/com/rendox/routinetracker/core/domain/streak/GetAllStreaksUseCase.kt similarity index 100% rename from core/domain/src/main/java/com/rendox/routinetracker/core/domain/streak/GetAllStreaksUseCase.kt rename to core/domain/src/commonMain/kotlin/com/rendox/routinetracker/core/domain/streak/GetAllStreaksUseCase.kt diff --git a/core/domain/src/main/java/com/rendox/routinetracker/core/domain/streak/GetAllStreaksUseCaseImpl.kt b/core/domain/src/commonMain/kotlin/com/rendox/routinetracker/core/domain/streak/GetAllStreaksUseCaseImpl.kt similarity index 100% rename from core/domain/src/main/java/com/rendox/routinetracker/core/domain/streak/GetAllStreaksUseCaseImpl.kt rename to core/domain/src/commonMain/kotlin/com/rendox/routinetracker/core/domain/streak/GetAllStreaksUseCaseImpl.kt diff --git a/core/domain/src/main/java/com/rendox/routinetracker/core/domain/streak/GetAllStreaksWithCashingUseCase.kt b/core/domain/src/commonMain/kotlin/com/rendox/routinetracker/core/domain/streak/GetAllStreaksWithCashingUseCase.kt similarity index 100% rename from core/domain/src/main/java/com/rendox/routinetracker/core/domain/streak/GetAllStreaksWithCashingUseCase.kt rename to core/domain/src/commonMain/kotlin/com/rendox/routinetracker/core/domain/streak/GetAllStreaksWithCashingUseCase.kt diff --git a/core/domain/src/main/java/com/rendox/routinetracker/core/domain/streak/StreakComputer.kt b/core/domain/src/commonMain/kotlin/com/rendox/routinetracker/core/domain/streak/StreakComputer.kt similarity index 100% rename from core/domain/src/main/java/com/rendox/routinetracker/core/domain/streak/StreakComputer.kt rename to core/domain/src/commonMain/kotlin/com/rendox/routinetracker/core/domain/streak/StreakComputer.kt diff --git a/core/domain/src/main/java/com/rendox/routinetracker/core/domain/streak/StreakComputerImpl.kt b/core/domain/src/commonMain/kotlin/com/rendox/routinetracker/core/domain/streak/StreakComputerImpl.kt similarity index 100% rename from core/domain/src/main/java/com/rendox/routinetracker/core/domain/streak/StreakComputerImpl.kt rename to core/domain/src/commonMain/kotlin/com/rendox/routinetracker/core/domain/streak/StreakComputerImpl.kt diff --git a/core/domain/src/main/java/com/rendox/routinetracker/core/domain/streak/StreakUtil.kt b/core/domain/src/commonMain/kotlin/com/rendox/routinetracker/core/domain/streak/StreakUtil.kt similarity index 100% rename from core/domain/src/main/java/com/rendox/routinetracker/core/domain/streak/StreakUtil.kt rename to core/domain/src/commonMain/kotlin/com/rendox/routinetracker/core/domain/streak/StreakUtil.kt diff --git a/core/logic/build.gradle.kts b/core/logic/build.gradle.kts index 7a41a33c..a6ccd947 100644 --- a/core/logic/build.gradle.kts +++ b/core/logic/build.gradle.kts @@ -1,8 +1,18 @@ plugins { - id("routinetracker.jvm.library") + id("routinetracker.kmp.library") } -dependencies { - implementation(libs.jetbrains.kotlinx.datetime) +kotlin { + sourceSets { + commonMain { + dependencies { + implementation(libs.jetbrains.kotlinx.datetime) + } + } + } +} + +android { + namespace = "com.rendox.routinetracker.core.logic" } diff --git a/core/logic/src/main/java/com/rendox/routinetracker/core/logic/time/AnnualDate.kt b/core/logic/src/commonMain/kotlin/com/rendox/routinetracker/core/logic/time/AnnualDate.kt similarity index 100% rename from core/logic/src/main/java/com/rendox/routinetracker/core/logic/time/AnnualDate.kt rename to core/logic/src/commonMain/kotlin/com/rendox/routinetracker/core/logic/time/AnnualDate.kt diff --git a/core/logic/src/main/java/com/rendox/routinetracker/core/logic/time/LocalDataRange.kt b/core/logic/src/commonMain/kotlin/com/rendox/routinetracker/core/logic/time/LocalDataRange.kt similarity index 100% rename from core/logic/src/main/java/com/rendox/routinetracker/core/logic/time/LocalDataRange.kt rename to core/logic/src/commonMain/kotlin/com/rendox/routinetracker/core/logic/time/LocalDataRange.kt diff --git a/core/logic/src/main/java/com/rendox/routinetracker/core/logic/time/TimeUtil.kt b/core/logic/src/commonMain/kotlin/com/rendox/routinetracker/core/logic/time/TimeUtil.kt similarity index 100% rename from core/logic/src/main/java/com/rendox/routinetracker/core/logic/time/TimeUtil.kt rename to core/logic/src/commonMain/kotlin/com/rendox/routinetracker/core/logic/time/TimeUtil.kt diff --git a/core/logic/src/main/java/com/rendox/routinetracker/core/logic/time/WeekDayNumberMonthRelated.kt b/core/logic/src/commonMain/kotlin/com/rendox/routinetracker/core/logic/time/WeekDayNumberMonthRelated.kt similarity index 100% rename from core/logic/src/main/java/com/rendox/routinetracker/core/logic/time/WeekDayNumberMonthRelated.kt rename to core/logic/src/commonMain/kotlin/com/rendox/routinetracker/core/logic/time/WeekDayNumberMonthRelated.kt diff --git a/core/logic/src/main/java/com/rendox/routinetracker/core/logic/time/ZonedDateTime.kt b/core/logic/src/commonMain/kotlin/com/rendox/routinetracker/core/logic/time/ZonedDateTime.kt similarity index 100% rename from core/logic/src/main/java/com/rendox/routinetracker/core/logic/time/ZonedDateTime.kt rename to core/logic/src/commonMain/kotlin/com/rendox/routinetracker/core/logic/time/ZonedDateTime.kt diff --git a/core/model/build.gradle.kts b/core/model/build.gradle.kts index 698fb32a..139155a6 100644 --- a/core/model/build.gradle.kts +++ b/core/model/build.gradle.kts @@ -1,9 +1,18 @@ plugins { - id("routinetracker.jvm.library") + id("routinetracker.kmp.library") } -dependencies { - implementation(project(":core:logic")) +kotlin { + sourceSets { + commonMain { + dependencies { + implementation(project(":core:logic")) + implementation(libs.jetbrains.kotlinx.datetime) + } + } + } +} - implementation(libs.jetbrains.kotlinx.datetime) +android { + namespace = "com.rendox.routinetracker.core.model" } diff --git a/core/model/src/main/java/com/rendox/routinetracker/core/model/Habit.kt b/core/model/src/commonMain/kotlin/com/rendox/routinetracker/core/model/Habit.kt similarity index 100% rename from core/model/src/main/java/com/rendox/routinetracker/core/model/Habit.kt rename to core/model/src/commonMain/kotlin/com/rendox/routinetracker/core/model/Habit.kt diff --git a/core/model/src/main/java/com/rendox/routinetracker/core/model/HabitCompletionData.kt b/core/model/src/commonMain/kotlin/com/rendox/routinetracker/core/model/HabitCompletionData.kt similarity index 100% rename from core/model/src/main/java/com/rendox/routinetracker/core/model/HabitCompletionData.kt rename to core/model/src/commonMain/kotlin/com/rendox/routinetracker/core/model/HabitCompletionData.kt diff --git a/core/model/src/main/java/com/rendox/routinetracker/core/model/HabitStatus.kt b/core/model/src/commonMain/kotlin/com/rendox/routinetracker/core/model/HabitStatus.kt similarity index 100% rename from core/model/src/main/java/com/rendox/routinetracker/core/model/HabitStatus.kt rename to core/model/src/commonMain/kotlin/com/rendox/routinetracker/core/model/HabitStatus.kt diff --git a/core/model/src/main/java/com/rendox/routinetracker/core/model/Schedule.kt b/core/model/src/commonMain/kotlin/com/rendox/routinetracker/core/model/Schedule.kt similarity index 100% rename from core/model/src/main/java/com/rendox/routinetracker/core/model/Schedule.kt rename to core/model/src/commonMain/kotlin/com/rendox/routinetracker/core/model/Schedule.kt diff --git a/core/model/src/main/java/com/rendox/routinetracker/core/model/Streak.kt b/core/model/src/commonMain/kotlin/com/rendox/routinetracker/core/model/Streak.kt similarity index 100% rename from core/model/src/main/java/com/rendox/routinetracker/core/model/Streak.kt rename to core/model/src/commonMain/kotlin/com/rendox/routinetracker/core/model/Streak.kt diff --git a/core/model/src/main/java/com/rendox/routinetracker/core/model/Vacation.kt b/core/model/src/commonMain/kotlin/com/rendox/routinetracker/core/model/Vacation.kt similarity index 100% rename from core/model/src/main/java/com/rendox/routinetracker/core/model/Vacation.kt rename to core/model/src/commonMain/kotlin/com/rendox/routinetracker/core/model/Vacation.kt diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 6f4df2f1..56545223 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -47,7 +47,8 @@ androidx-test-core = { group = "androidx.test", name = "core", version.ref = "an androidx-test-espresso = { group = "androidx.test.espresso", name = "espresso-core", version.ref = "espresso" } androidx-test-ext-junit = { group = "androidx.test.ext", name = "junit", version.ref = "androidxJunit" } app-cash-sqldelight-android-driver = { group = "app.cash.sqldelight", name = "android-driver", version.ref = "sqldelight" } -app-cash-sqldelight-coroutines-extensions-jvm = { group = "app.cash.sqldelight", name = "coroutines-extensions-jvm", version.ref = "sqldelight" } +app-cash-sqldelight-native-driver = { group = "app.cash.sqldelight", name = "native-driver", version.ref = "sqldelight" } +app-cash-sqldelight-coroutines-extensions = { group = "app.cash.sqldelight", name = "coroutines-extensions", version.ref = "sqldelight" } app-cash-sqldelight-primitive-adapters = { group = "app.cash.sqldelight", name = "primitive-adapters", version.ref = "sqldelight" } app-cash-sqldelight-sqlite-driver = { group = "app.cash.sqldelight", name = "sqlite-driver", version.ref = "sqldelight" } appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "appcompat" }