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")