From 6094dc782b2c571392a61c0fe53afe80fc85ff12 Mon Sep 17 00:00:00 2001 From: azazellj Date: Sun, 9 Jun 2024 18:51:21 +0300 Subject: [PATCH 1/5] # KMP support - added new kmp library module - migrated and configured core/logic and core/model module --- build-logic/convention/build.gradle.kts | 4 ++ .../main/java/KmpLibraryConventionPlugin.kt | 43 +++++++++++++++++++ core/logic/build.gradle.kts | 16 +++++-- .../core/logic/time/AnnualDate.kt | 0 .../core/logic/time/LocalDataRange.kt | 0 .../core/logic/time/TimeUtil.kt | 0 .../logic/time/WeekDayNumberMonthRelated.kt | 0 .../core/logic/time/ZonedDateTime.kt | 0 core/model/build.gradle.kts | 17 ++++++-- .../rendox/routinetracker/core/model/Habit.kt | 0 .../core/model/HabitCompletionData.kt | 0 .../routinetracker/core/model/HabitStatus.kt | 0 .../routinetracker/core/model/Schedule.kt | 0 .../routinetracker/core/model/Streak.kt | 0 .../routinetracker/core/model/Vacation.kt | 0 15 files changed, 73 insertions(+), 7 deletions(-) create mode 100644 build-logic/convention/src/main/java/KmpLibraryConventionPlugin.kt rename core/logic/src/{main/java => commonMain/kotlin}/com/rendox/routinetracker/core/logic/time/AnnualDate.kt (100%) rename core/logic/src/{main/java => commonMain/kotlin}/com/rendox/routinetracker/core/logic/time/LocalDataRange.kt (100%) rename core/logic/src/{main/java => commonMain/kotlin}/com/rendox/routinetracker/core/logic/time/TimeUtil.kt (100%) rename core/logic/src/{main/java => commonMain/kotlin}/com/rendox/routinetracker/core/logic/time/WeekDayNumberMonthRelated.kt (100%) rename core/logic/src/{main/java => commonMain/kotlin}/com/rendox/routinetracker/core/logic/time/ZonedDateTime.kt (100%) rename core/model/src/{main/java => commonMain/kotlin}/com/rendox/routinetracker/core/model/Habit.kt (100%) rename core/model/src/{main/java => commonMain/kotlin}/com/rendox/routinetracker/core/model/HabitCompletionData.kt (100%) rename core/model/src/{main/java => commonMain/kotlin}/com/rendox/routinetracker/core/model/HabitStatus.kt (100%) rename core/model/src/{main/java => commonMain/kotlin}/com/rendox/routinetracker/core/model/Schedule.kt (100%) rename core/model/src/{main/java => commonMain/kotlin}/com/rendox/routinetracker/core/model/Streak.kt (100%) rename core/model/src/{main/java => commonMain/kotlin}/com/rendox/routinetracker/core/model/Vacation.kt (100%) diff --git a/build-logic/convention/build.gradle.kts b/build-logic/convention/build.gradle.kts index cc0a55c2..a08227db 100644 --- a/build-logic/convention/build.gradle.kts +++ b/build-logic/convention/build.gradle.kts @@ -52,6 +52,10 @@ gradlePlugin { id = "routinetracker.jvm.library" implementationClass = "JvmLibraryConventionPlugin" } + register("kmpLibrary") { + id = "routinetracker.kmp.library" + implementationClass = "KmpLibraryConventionPlugin" + } register("androidKoin") { id = "routinetracker.android.koin" implementationClass = "AndroidKoinConventionPlugin" 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/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 From 66fb13e7172a175ff6bea16ef3fdf9e4c79d92af Mon Sep 17 00:00:00 2001 From: azazellj Date: Sun, 9 Jun 2024 19:58:47 +0300 Subject: [PATCH 2/5] # KMP support - migrated and configured core/database module --- .../routinetracker/app/RoutineTrackerApp.kt | 6 +- build-logic/convention/build.gradle.kts | 8 +++ .../src/main/java/KmpKoinConventionPlugin.kt | 19 ++++++ .../KmpLibraryInstrumentationTestRunner.kt | 27 ++++++++ .../CompletionHistoryRepositoryImpl.kt | 2 +- .../CompletionTimeRepositoryImpl.kt | 2 +- ...ateSpecificCompletionTimeRepositoryImpl.kt | 2 +- .../data/di/CompletionHistoryDataModule.kt | 4 +- .../core/data/di/CompletionTimeDataModule.kt | 4 +- core/database/build.gradle.kts | 62 +++++++++++++------ .../habit/HabitLocalDataSourceImplTest.kt | 0 .../habit/VacationLocalDataSourceImplTest.kt | 0 .../CompletionHistoryLocalDataSource.kt | 0 .../CompletionHistoryLocalDataSourceImpl.kt | 2 +- .../CompletionTimeLocalDataSource.kt | 0 .../CompletionTimeLocalDataSourceImpl.kt | 2 +- ...teSpecificCompletionTimeLocalDataSource.kt | 0 ...ecificCompletionTimeLocalDataSourceImpl.kt | 2 +- .../di/CompletionTimeLocalDataModule.kt | 4 +- .../core/database/di/HabitLocalDataModule.kt | 0 .../core/database/di/LocalDataSourceModule.kt | 22 +++---- .../core/database/di/StreakLocalDataModule.kt | 0 .../database/habit/DueDateLocalDataSource.kt | 0 .../habit/DueDateLocalDataSourceImpl.kt | 0 .../database/habit/HabitLocalDataSource.kt | 0 .../habit/HabitLocalDataSourceImpl.kt | 0 .../database/habit/ScheduleLocalDataSource.kt | 0 .../habit/ScheduleLocalDataSourceImpl.kt | 0 .../WeekDaysMonthRelatedLocalDataSource.kt | 0 ...WeekDaysMonthRelatedLocalDataSourceImpl.kt | 0 .../habit/model/RoutineEntityConvertions.kt | 0 .../habit/model/ScheduleEntityConvertions.kt | 0 .../database/streak/StreakLocalDataSource.kt | 0 .../streak/StreakLocalDataSourceImpl.kt | 0 .../vacation/VacationLocalDataSource.kt | 0 .../vacation/VacationLocalDataSourceImpl.kt | 0 .../core/database/cashedStreak.sq | 0 .../core/database/completionHistoryEntity.sq | 0 .../core/database/habit/habitEntity.sq | 0 .../core/database/schedule/dueDateEntity.sq | 0 .../core/database/schedule/scheduleEntity.sq | 0 .../schedule/weekDayMonthRelatedEntity.sq | 0 .../specificDateCustomCompletionTime.sq | 0 .../core/database/vacationEntity.sq | 0 gradle/libs.versions.toml | 3 +- 45 files changed, 126 insertions(+), 45 deletions(-) create mode 100644 build-logic/convention/src/main/java/KmpKoinConventionPlugin.kt create mode 100644 build-logic/convention/src/main/java/KmpLibraryInstrumentationTestRunner.kt rename core/database/src/{test/java => androidUnitTest/kotlin}/com/rendox/routinetracker/core/database/habit/HabitLocalDataSourceImplTest.kt (100%) rename core/database/src/{test/java => androidUnitTest/kotlin}/com/rendox/routinetracker/core/database/habit/VacationLocalDataSourceImplTest.kt (100%) rename core/database/src/{main/java => commonMain/kotlin}/com/rendox/routinetracker/core/database/completion_history/CompletionHistoryLocalDataSource.kt (100%) rename core/database/src/{main/java => commonMain/kotlin}/com/rendox/routinetracker/core/database/completion_history/CompletionHistoryLocalDataSourceImpl.kt (97%) rename core/database/src/{main/java => commonMain/kotlin}/com/rendox/routinetracker/core/database/completion_time/CompletionTimeLocalDataSource.kt (100%) rename core/database/src/{main/java => commonMain/kotlin}/com/rendox/routinetracker/core/database/completion_time/CompletionTimeLocalDataSourceImpl.kt (95%) rename core/database/src/{main/java => commonMain/kotlin}/com/rendox/routinetracker/core/database/completion_time/DueDateSpecificCompletionTimeLocalDataSource.kt (100%) rename core/database/src/{main/java => commonMain/kotlin}/com/rendox/routinetracker/core/database/completion_time/DueDateSpecificCompletionTimeLocalDataSourceImpl.kt (93%) rename core/database/src/{main/java => commonMain/kotlin}/com/rendox/routinetracker/core/database/di/CompletionTimeLocalDataModule.kt (68%) rename core/database/src/{main/java => commonMain/kotlin}/com/rendox/routinetracker/core/database/di/HabitLocalDataModule.kt (100%) rename core/database/src/{main/java => commonMain/kotlin}/com/rendox/routinetracker/core/database/di/LocalDataSourceModule.kt (82%) rename core/database/src/{main/java => commonMain/kotlin}/com/rendox/routinetracker/core/database/di/StreakLocalDataModule.kt (100%) rename core/database/src/{main/java => commonMain/kotlin}/com/rendox/routinetracker/core/database/habit/DueDateLocalDataSource.kt (100%) rename core/database/src/{main/java => commonMain/kotlin}/com/rendox/routinetracker/core/database/habit/DueDateLocalDataSourceImpl.kt (100%) rename core/database/src/{main/java => commonMain/kotlin}/com/rendox/routinetracker/core/database/habit/HabitLocalDataSource.kt (100%) rename core/database/src/{main/java => commonMain/kotlin}/com/rendox/routinetracker/core/database/habit/HabitLocalDataSourceImpl.kt (100%) rename core/database/src/{main/java => commonMain/kotlin}/com/rendox/routinetracker/core/database/habit/ScheduleLocalDataSource.kt (100%) rename core/database/src/{main/java => commonMain/kotlin}/com/rendox/routinetracker/core/database/habit/ScheduleLocalDataSourceImpl.kt (100%) rename core/database/src/{main/java => commonMain/kotlin}/com/rendox/routinetracker/core/database/habit/WeekDaysMonthRelatedLocalDataSource.kt (100%) rename core/database/src/{main/java => commonMain/kotlin}/com/rendox/routinetracker/core/database/habit/WeekDaysMonthRelatedLocalDataSourceImpl.kt (100%) rename core/database/src/{main/java => commonMain/kotlin}/com/rendox/routinetracker/core/database/habit/model/RoutineEntityConvertions.kt (100%) rename core/database/src/{main/java => commonMain/kotlin}/com/rendox/routinetracker/core/database/habit/model/ScheduleEntityConvertions.kt (100%) rename core/database/src/{main/java => commonMain/kotlin}/com/rendox/routinetracker/core/database/streak/StreakLocalDataSource.kt (100%) rename core/database/src/{main/java => commonMain/kotlin}/com/rendox/routinetracker/core/database/streak/StreakLocalDataSourceImpl.kt (100%) rename core/database/src/{main/java => commonMain/kotlin}/com/rendox/routinetracker/core/database/vacation/VacationLocalDataSource.kt (100%) rename core/database/src/{main/java => commonMain/kotlin}/com/rendox/routinetracker/core/database/vacation/VacationLocalDataSourceImpl.kt (100%) rename core/database/src/{main => commonMain}/sqldelight/com/rendox/routinetracker/core/database/cashedStreak.sq (100%) rename core/database/src/{main => commonMain}/sqldelight/com/rendox/routinetracker/core/database/completionHistoryEntity.sq (100%) rename core/database/src/{main => commonMain}/sqldelight/com/rendox/routinetracker/core/database/habit/habitEntity.sq (100%) rename core/database/src/{main => commonMain}/sqldelight/com/rendox/routinetracker/core/database/schedule/dueDateEntity.sq (100%) rename core/database/src/{main => commonMain}/sqldelight/com/rendox/routinetracker/core/database/schedule/scheduleEntity.sq (100%) rename core/database/src/{main => commonMain}/sqldelight/com/rendox/routinetracker/core/database/schedule/weekDayMonthRelatedEntity.sq (100%) rename core/database/src/{main => commonMain}/sqldelight/com/rendox/routinetracker/core/database/specificDateCustomCompletionTime.sq (100%) rename core/database/src/{main => commonMain}/sqldelight/com/rendox/routinetracker/core/database/vacationEntity.sq (100%) 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 a08227db..1f05c41c 100644 --- a/build-logic/convention/build.gradle.kts +++ b/build-logic/convention/build.gradle.kts @@ -60,9 +60,17 @@ gradlePlugin { 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/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/src/main/java/com/rendox/routinetracker/core/data/completion_history/CompletionHistoryRepositoryImpl.kt b/core/data/src/main/java/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/main/java/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_time/CompletionTimeRepositoryImpl.kt b/core/data/src/main/java/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/main/java/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/DueDateSpecificCompletionTimeRepositoryImpl.kt b/core/data/src/main/java/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/main/java/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/main/java/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/main/java/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/main/java/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/main/java/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/database/build.gradle.kts b/core/database/build.gradle.kts index e3605f8f..761518ca 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) + implementation(libs.app.cash.sqldelight.sqlite.driver) + } + } + + androidMain { + dependencies { + implementation(libs.app.cash.sqldelight.android.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/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" } From 7420c83841810730a3cde0a16eaa0cdb9a01ff99 Mon Sep 17 00:00:00 2001 From: azazellj Date: Sun, 9 Jun 2024 20:04:04 +0300 Subject: [PATCH 3/5] # KMP support - migrated and configured core/data module --- core/data/build.gradle.kts | 38 ++++++++++++------- .../CompletionHistoryRepository.kt | 0 .../CompletionHistoryRepositoryImpl.kt | 0 .../FailHistoryRepository.kt | 0 .../CompletionTimeRepository.kt | 0 .../CompletionTimeRepositoryImpl.kt | 0 ...DueDateSpecificCompletionTimeRepository.kt | 0 ...ateSpecificCompletionTimeRepositoryImpl.kt | 0 .../data/di/CompletionHistoryDataModule.kt | 0 .../core/data/di/CompletionTimeDataModule.kt | 0 .../core/data/di/RoutineDataModule.kt | 0 .../core/data/di/StreakDataModule.kt | 0 .../core/data/di/VacationDataModule.kt | 0 .../core/data/habit/HabitRepository.kt | 0 .../core/data/habit/HabitRepositoryImpl.kt | 0 .../core/data/streaks/StreakRepository.kt | 0 .../core/data/streaks/StreakRepositoryImpl.kt | 0 .../core/data/vacation/VacationRepository.kt | 0 .../data/vacation/VacationRepositoryImpl.kt | 0 19 files changed, 24 insertions(+), 14 deletions(-) rename core/data/src/{main/java => commonMain/kotlin}/com/rendox/routinetracker/core/data/completion_history/CompletionHistoryRepository.kt (100%) rename core/data/src/{main/java => commonMain/kotlin}/com/rendox/routinetracker/core/data/completion_history/CompletionHistoryRepositoryImpl.kt (100%) rename core/data/src/{main/java => commonMain/kotlin}/com/rendox/routinetracker/core/data/completion_history/FailHistoryRepository.kt (100%) rename core/data/src/{main/java => commonMain/kotlin}/com/rendox/routinetracker/core/data/completion_time/CompletionTimeRepository.kt (100%) rename core/data/src/{main/java => commonMain/kotlin}/com/rendox/routinetracker/core/data/completion_time/CompletionTimeRepositoryImpl.kt (100%) rename core/data/src/{main/java => commonMain/kotlin}/com/rendox/routinetracker/core/data/completion_time/DueDateSpecificCompletionTimeRepository.kt (100%) rename core/data/src/{main/java => commonMain/kotlin}/com/rendox/routinetracker/core/data/completion_time/DueDateSpecificCompletionTimeRepositoryImpl.kt (100%) rename core/data/src/{main/java => commonMain/kotlin}/com/rendox/routinetracker/core/data/di/CompletionHistoryDataModule.kt (100%) rename core/data/src/{main/java => commonMain/kotlin}/com/rendox/routinetracker/core/data/di/CompletionTimeDataModule.kt (100%) rename core/data/src/{main/java => commonMain/kotlin}/com/rendox/routinetracker/core/data/di/RoutineDataModule.kt (100%) rename core/data/src/{main/java => commonMain/kotlin}/com/rendox/routinetracker/core/data/di/StreakDataModule.kt (100%) rename core/data/src/{main/java => commonMain/kotlin}/com/rendox/routinetracker/core/data/di/VacationDataModule.kt (100%) rename core/data/src/{main/java => commonMain/kotlin}/com/rendox/routinetracker/core/data/habit/HabitRepository.kt (100%) rename core/data/src/{main/java => commonMain/kotlin}/com/rendox/routinetracker/core/data/habit/HabitRepositoryImpl.kt (100%) rename core/data/src/{main/java => commonMain/kotlin}/com/rendox/routinetracker/core/data/streaks/StreakRepository.kt (100%) rename core/data/src/{main/java => commonMain/kotlin}/com/rendox/routinetracker/core/data/streaks/StreakRepositoryImpl.kt (100%) rename core/data/src/{main/java => commonMain/kotlin}/com/rendox/routinetracker/core/data/vacation/VacationRepository.kt (100%) rename core/data/src/{main/java => commonMain/kotlin}/com/rendox/routinetracker/core/data/vacation/VacationRepositoryImpl.kt (100%) 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 100% 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 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 100% 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 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 100% 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 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 100% 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 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 100% 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 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 From 21842223c11684c01f669bdfc915398925912da2 Mon Sep 17 00:00:00 2001 From: azazellj Date: Sun, 9 Jun 2024 20:46:10 +0300 Subject: [PATCH 4/5] # KMP support - migrated and configured core/domain module --- core/domain/build.gradle.kts | 46 +++++++++++++------ .../HabitStatusComputerImplTest.kt | 0 .../ScheduleGetPeriodRangeTest.kt | 0 .../completion_history/ScheduleIsDueTest.kt | 0 .../GetAllStreaksWithCashingUseCaseTest.kt | 0 .../core/domain/streak/StreakComputerFake.kt | 0 .../domain/streak/StreakComputerImplTest.kt | 0 .../core/domain/streak/StreakUtilTest.kt | 0 .../GetHabitCompletionDataUseCase.kt | 0 .../GetHabitCompletionDataUseCaseImpl.kt | 0 ...CompletionDataUseCaseIndependentPeriods.kt | 0 .../completion_history/HabitStatusComputer.kt | 0 .../HabitStatusComputerImpl.kt | 0 .../InsertHabitCompletionAndCashStreaks.kt | 0 .../InsertHabitCompletionUseCase.kt | 0 .../InsertHabitCompletionUseCaseImpl.kt | 0 .../ScheduleGetPeriodRange.kt | 2 +- .../completion_history/ScheduleIsDue.kt | 0 .../GetHabitCompletionTimeUseCase.kt | 0 .../GetHabitCompletionTimeUseCaseImpl.kt | 0 .../di/CompletionHistoryDomainModule.kt | 0 .../domain/di/CompletionTimeDomainModule.kt | 0 .../core/domain/di/DomainModule.kt | 0 .../core/domain/di/HabitDomainModule.kt | 0 .../core/domain/di/StreaksDomainModule.kt | 0 .../domain/streak/GetAllStreaksUseCase.kt | 0 .../domain/streak/GetAllStreaksUseCaseImpl.kt | 0 .../streak/GetAllStreaksWithCashingUseCase.kt | 0 .../core/domain/streak/StreakComputer.kt | 0 .../core/domain/streak/StreakComputerImpl.kt | 0 .../core/domain/streak/StreakUtil.kt | 0 31 files changed, 32 insertions(+), 16 deletions(-) rename core/domain/src/{test/java => androidUnitTest/kotlin}/com/rendox/routinetracker/core/domain/completion_history/HabitStatusComputerImplTest.kt (100%) rename core/domain/src/{test/java => androidUnitTest/kotlin}/com/rendox/routinetracker/core/domain/completion_history/ScheduleGetPeriodRangeTest.kt (100%) rename core/domain/src/{test/java => androidUnitTest/kotlin}/com/rendox/routinetracker/core/domain/completion_history/ScheduleIsDueTest.kt (100%) rename core/domain/src/{test/java => androidUnitTest/kotlin}/com/rendox/routinetracker/core/domain/streak/GetAllStreaksWithCashingUseCaseTest.kt (100%) rename core/domain/src/{test/java => androidUnitTest/kotlin}/com/rendox/routinetracker/core/domain/streak/StreakComputerFake.kt (100%) rename core/domain/src/{test/java => androidUnitTest/kotlin}/com/rendox/routinetracker/core/domain/streak/StreakComputerImplTest.kt (100%) rename core/domain/src/{test/java => androidUnitTest/kotlin}/com/rendox/routinetracker/core/domain/streak/StreakUtilTest.kt (100%) rename core/domain/src/{main/java => commonMain/kotlin}/com/rendox/routinetracker/core/domain/completion_history/GetHabitCompletionDataUseCase.kt (100%) rename core/domain/src/{main/java => commonMain/kotlin}/com/rendox/routinetracker/core/domain/completion_history/GetHabitCompletionDataUseCaseImpl.kt (100%) rename core/domain/src/{main/java => commonMain/kotlin}/com/rendox/routinetracker/core/domain/completion_history/GetHabitCompletionDataUseCaseIndependentPeriods.kt (100%) rename core/domain/src/{main/java => commonMain/kotlin}/com/rendox/routinetracker/core/domain/completion_history/HabitStatusComputer.kt (100%) rename core/domain/src/{main/java => commonMain/kotlin}/com/rendox/routinetracker/core/domain/completion_history/HabitStatusComputerImpl.kt (100%) rename core/domain/src/{main/java => commonMain/kotlin}/com/rendox/routinetracker/core/domain/completion_history/InsertHabitCompletionAndCashStreaks.kt (100%) rename core/domain/src/{main/java => commonMain/kotlin}/com/rendox/routinetracker/core/domain/completion_history/InsertHabitCompletionUseCase.kt (100%) rename core/domain/src/{main/java => commonMain/kotlin}/com/rendox/routinetracker/core/domain/completion_history/InsertHabitCompletionUseCaseImpl.kt (100%) rename core/domain/src/{main/java => commonMain/kotlin}/com/rendox/routinetracker/core/domain/completion_history/ScheduleGetPeriodRange.kt (98%) rename core/domain/src/{main/java => commonMain/kotlin}/com/rendox/routinetracker/core/domain/completion_history/ScheduleIsDue.kt (100%) rename core/domain/src/{main/java => commonMain/kotlin}/com/rendox/routinetracker/core/domain/completion_time/GetHabitCompletionTimeUseCase.kt (100%) rename core/domain/src/{main/java => commonMain/kotlin}/com/rendox/routinetracker/core/domain/completion_time/GetHabitCompletionTimeUseCaseImpl.kt (100%) rename core/domain/src/{main/java => commonMain/kotlin}/com/rendox/routinetracker/core/domain/di/CompletionHistoryDomainModule.kt (100%) rename core/domain/src/{main/java => commonMain/kotlin}/com/rendox/routinetracker/core/domain/di/CompletionTimeDomainModule.kt (100%) rename core/domain/src/{main/java => commonMain/kotlin}/com/rendox/routinetracker/core/domain/di/DomainModule.kt (100%) rename core/domain/src/{main/java => commonMain/kotlin}/com/rendox/routinetracker/core/domain/di/HabitDomainModule.kt (100%) rename core/domain/src/{main/java => commonMain/kotlin}/com/rendox/routinetracker/core/domain/di/StreaksDomainModule.kt (100%) rename core/domain/src/{main/java => commonMain/kotlin}/com/rendox/routinetracker/core/domain/streak/GetAllStreaksUseCase.kt (100%) rename core/domain/src/{main/java => commonMain/kotlin}/com/rendox/routinetracker/core/domain/streak/GetAllStreaksUseCaseImpl.kt (100%) rename core/domain/src/{main/java => commonMain/kotlin}/com/rendox/routinetracker/core/domain/streak/GetAllStreaksWithCashingUseCase.kt (100%) rename core/domain/src/{main/java => commonMain/kotlin}/com/rendox/routinetracker/core/domain/streak/StreakComputer.kt (100%) rename core/domain/src/{main/java => commonMain/kotlin}/com/rendox/routinetracker/core/domain/streak/StreakComputerImpl.kt (100%) rename core/domain/src/{main/java => commonMain/kotlin}/com/rendox/routinetracker/core/domain/streak/StreakUtil.kt (100%) 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 From 7a3e355619dc7f7358b2db874b8c1794b80dff42 Mon Sep 17 00:00:00 2001 From: azazellj Date: Sun, 9 Jun 2024 21:17:46 +0300 Subject: [PATCH 5/5] # KMP support - fixed dependency in core/database module --- core/database/build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/database/build.gradle.kts b/core/database/build.gradle.kts index 761518ca..112b8f7e 100644 --- a/core/database/build.gradle.kts +++ b/core/database/build.gradle.kts @@ -24,13 +24,13 @@ kotlin { implementation(libs.app.cash.sqldelight.coroutines.extensions) implementation(libs.app.cash.sqldelight.primitive.adapters) - implementation(libs.app.cash.sqldelight.sqlite.driver) } } androidMain { dependencies { implementation(libs.app.cash.sqldelight.android.driver) + implementation(libs.app.cash.sqldelight.sqlite.driver) } }