diff --git a/.idea/gradle.xml b/.idea/gradle.xml index a4a2f636..3565de57 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -13,6 +13,7 @@ diff --git a/build.gradle.kts b/build.gradle.kts index 69aa6bfa..b3f0cbf9 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -9,6 +9,7 @@ buildscript { classpath(build.getValue("androidGradlePlugin")) classpath(build.getValue("daggerGradlePlugin")) classpath(build.getValue("kotlinGradlePlugin")) + classpath(build.getValue("sqldelightGradlePlugin")) } } diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts index a515a9bd..00772590 100644 --- a/buildSrc/build.gradle.kts +++ b/buildSrc/build.gradle.kts @@ -39,4 +39,5 @@ dependencies { implementation(build.getValue("androidGradlePlugin_builderModel")) implementation(build.getValue("androidGradlePlugin_lintModel")) implementation(build.getValue("jsemver")) + implementation(build.getValue("sqldelightGradlePlugin")) } diff --git a/buildSrc/buildDependencies.gradle b/buildSrc/buildDependencies.gradle index 7909f6cb..9f28cdd3 100644 --- a/buildSrc/buildDependencies.gradle +++ b/buildSrc/buildDependencies.gradle @@ -4,6 +4,7 @@ rootProject.ext.versions = [ kotlin : '1.4.21', lint : '30.0.0-alpha05', semver : '0.9.0', + sqldelight: '1.4.4', ] rootProject.ext.build = [ @@ -14,4 +15,5 @@ rootProject.ext.build = [ daggerGradlePlugin : "com.google.dagger:hilt-android-gradle-plugin:${versions.daggerHilt}", kotlinGradlePlugin : "org.jetbrains.kotlin:kotlin-gradle-plugin:${versions.kotlin}", jsemver : "com.github.zafarkhaja:java-semver:${versions.semver}", + sqldelightGradlePlugin : "com.squareup.sqldelight:gradle-plugin:${versions.sqldelight}", ] diff --git a/buildSrc/src/main/java/Dependencies.kt b/buildSrc/src/main/java/Dependencies.kt index 23288343..564964e1 100644 --- a/buildSrc/src/main/java/Dependencies.kt +++ b/buildSrc/src/main/java/Dependencies.kt @@ -83,6 +83,13 @@ object Dependencies { const val compiler = "com.github.MatrixDev.Roomigrant:RoomigrantCompiler:$version" const val runtime = "com.github.MatrixDev.Roomigrant:RoomigrantLib:$version" } + + object SQLDelight { + + private const val version = "1.4.4" + const val jvmDriver = "com.squareup.sqldelight:sqlite-driver:$version" + const val androidDriver = "com.squareup.sqldelight:android-driver:$version" + } } object Testing { diff --git a/buildSrc/src/main/java/LobstersPlugin.kt b/buildSrc/src/main/java/LobstersPlugin.kt index a1d1cd66..e7009c14 100644 --- a/buildSrc/src/main/java/LobstersPlugin.kt +++ b/buildSrc/src/main/java/LobstersPlugin.kt @@ -7,6 +7,8 @@ import com.android.build.gradle.TestedExtension import com.android.build.gradle.internal.dsl.BaseAppModuleExtension import com.android.build.gradle.internal.plugins.AppPlugin import com.android.build.gradle.internal.plugins.LibraryPlugin +import com.squareup.sqldelight.gradle.SqlDelightExtension +import com.squareup.sqldelight.gradle.SqlDelightPlugin import org.gradle.api.Plugin import org.gradle.api.Project import org.gradle.api.plugins.JavaLibraryPlugin @@ -46,6 +48,9 @@ class LobstersPlugin : Plugin { is Kapt3GradleSubplugin -> { project.configureKapt() } + is SqlDelightPlugin -> { + project.extensions.getByType().configureLobstersDatabase() + } } } } diff --git a/buildSrc/src/main/java/SqlDelightConfig.kt b/buildSrc/src/main/java/SqlDelightConfig.kt new file mode 100644 index 00000000..f798f191 --- /dev/null +++ b/buildSrc/src/main/java/SqlDelightConfig.kt @@ -0,0 +1,8 @@ +import com.squareup.sqldelight.gradle.SqlDelightExtension + +internal fun SqlDelightExtension.configureLobstersDatabase() { + database("LobstersDatabase") { + packageName = "dev.msfjarvis.lobsters.database" + sourceFolders = listOf("sqldelight") + } +} diff --git a/database/.gitignore b/database/.gitignore new file mode 100644 index 00000000..796b96d1 --- /dev/null +++ b/database/.gitignore @@ -0,0 +1 @@ +/build diff --git a/database/build.gradle.kts b/database/build.gradle.kts new file mode 100644 index 00000000..6c38414f --- /dev/null +++ b/database/build.gradle.kts @@ -0,0 +1,6 @@ +plugins { + id("com.android.library") + kotlin("android") + id("com.squareup.sqldelight") + `lobsters-plugin` +} diff --git a/database/consumer-rules.pro b/database/consumer-rules.pro new file mode 100644 index 00000000..e69de29b diff --git a/database/proguard-rules.pro b/database/proguard-rules.pro new file mode 100644 index 00000000..f1b42451 --- /dev/null +++ b/database/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile diff --git a/database/src/main/AndroidManifest.xml b/database/src/main/AndroidManifest.xml new file mode 100644 index 00000000..1acef971 --- /dev/null +++ b/database/src/main/AndroidManifest.xml @@ -0,0 +1,4 @@ + + + + diff --git a/settings.gradle.kts b/settings.gradle.kts index 50ee2c63..f1aa85fd 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -1,3 +1,3 @@ rootProject.name = "Claw for lobste.rs" -include(":app", ":model") +include(":app", ":database", ":model") enableFeaturePreview("GRADLE_METADATA")