Skip to content

Commit d6907e3

Browse files
committed
Replace Room with SQLDelight
1 parent 143197d commit d6907e3

File tree

8 files changed

+50
-68
lines changed

8 files changed

+50
-68
lines changed

build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,5 @@ plugins {
88
alias(libs.plugins.kapt) apply false
99
alias(libs.plugins.parcelable) apply false
1010
alias(libs.plugins.paparazzi) apply false
11+
alias(libs.plugins.sql.delight) apply false
1112
}

gradle/libs.versions.toml

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
compileSdkVersion = "35"
44
javaVersion = "17"
55
gradlePluginVersion = "8.8.2"
6-
roomVersion = "2.6.1"
6+
sqlDelightVersion = "2.0.2"
77
truthVersion = "1.1.5"
88
kotlinVersion = "2.0.20"
99
androidxCoreKtxVersion = "1.15.0"
@@ -39,9 +39,7 @@
3939

4040
coil-compose = { module = "io.coil-kt:coil-compose", version.ref = "coilVersion" }
4141

42-
room-ktx = { module = "androidx.room:room-ktx", version.ref = "roomVersion" }
43-
room-runtime = { module = "androidx.room:room-runtime", version.ref = "roomVersion" }
44-
room-compiler = { module = "androidx.room:room-compiler", version.ref = "roomVersion" }
42+
sql-delight-android = { module = "app.cash.sqldelight:android-driver", version.ref = "sqlDelightVersion" }
4543

4644
hilt-android = { module = "com.google.dagger:hilt-android", version.ref = "hiltVersion" }
4745
hilt-navigation = { module = "androidx.hilt:hilt-navigation-compose", version.ref = "hiltNavigationVersion" }
@@ -70,7 +68,6 @@
7068
compose = ["compose-activity", "compose-ui", "compose-graphics", "compose-preview", "compose-material3", "compose-navigation", "compose-lifecycle-runtime", "compose-material-icons", "network-serialization"]
7169
compose-debug = ["compose-ui-tooling", "compose-ui-test-manifest"]
7270
hilt = ["hilt-android", "hilt-navigation"]
73-
room = ["room-ktx", "room-runtime"]
7471
retrofit = ["network-okhttp", "network-retrofit", "network-serialization", "network-serialization-converter"]
7572
ui-testing = ["androidx-junit", "androidx-espresso", "androidx-compose-test", "hilt-android-test"]
7673
unit-testing = ["jupiter", "jupiter-params", "truth", "jupiter-vintage", "test-coroutines", "test-okhttp-mockserver"]
@@ -85,3 +82,4 @@
8582
hilt-android = { id = "com.google.dagger.hilt.android", version.ref = "hiltVersion" }
8683
paparazzi = { id = "app.cash.paparazzi", version.ref = "paparazziVersion" }
8784
parcelable = { id = "org.jetbrains.kotlin.plugin.parcelize", version.ref = "kotlinVersion" }
85+
sql-delight = { id = "app.cash.sqldelight", version.ref = "sqlDelightVersion" }

shared/database/build.gradle.kts

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
plugins {
22
alias(libs.plugins.android.library)
33
alias(libs.plugins.kotlin.android)
4-
alias(libs.plugins.kapt)
4+
alias(libs.plugins.sql.delight)
55
}
66

77
android {
@@ -46,11 +46,17 @@ android {
4646
}
4747
}
4848

49+
sqldelight {
50+
databases {
51+
create("UsersDatabase") {
52+
packageName.set("nl.jovmit.androiddevs.core.database")
53+
}
54+
}
55+
}
56+
4957
dependencies {
5058
implementation(libs.bundles.hilt)
51-
implementation(libs.bundles.room)
52-
53-
kapt(libs.room.compiler)
59+
implementation(libs.sql.delight.android)
5460

5561
testImplementation(libs.bundles.unit.testing)
5662

shared/database/src/main/java/nl/jovmit/androiddevs/core/database/AppDatabase.kt

Lines changed: 0 additions & 14 deletions
This file was deleted.
Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
package nl.jovmit.androiddevs.core.database
22

33
import android.content.Context
4-
import androidx.room.Room
4+
import app.cash.sqldelight.db.SqlDriver
5+
import app.cash.sqldelight.driver.android.AndroidSqliteDriver
56
import dagger.Module
67
import dagger.Provides
78
import dagger.hilt.InstallIn
@@ -13,24 +14,27 @@ import javax.inject.Singleton
1314
@InstallIn(SingletonComponent::class)
1415
object DatabaseModule {
1516

16-
private const val DATABASE_NAME = "android_devs"
17+
@Provides
18+
@Singleton
19+
fun provideSqlDriver(
20+
@ApplicationContext context: Context
21+
): SqlDriver {
22+
return AndroidSqliteDriver(UsersDatabase.Schema, context, "users.db")
23+
}
1724

1825
@Provides
1926
@Singleton
20-
fun provideDatabase(
21-
@ApplicationContext appContext: Context
22-
): AppDatabase {
23-
return Room
24-
.databaseBuilder(
25-
context = appContext,
26-
klass = AppDatabase::class.java,
27-
name = DATABASE_NAME
28-
).build()
27+
fun provideUsersDatabase(
28+
driver: SqlDriver
29+
): UsersDatabase {
30+
return UsersDatabase(driver)
2931
}
3032

3133
@Provides
3234
@Singleton
33-
fun provideUserDao(database: AppDatabase): UserDao {
34-
return database.userDao()
35+
fun provideUsersQueries(
36+
database: UsersDatabase
37+
): UserEntityQueries {
38+
return database.userEntityQueries
3539
}
3640
}

shared/database/src/main/java/nl/jovmit/androiddevs/core/database/UserDao.kt

Lines changed: 0 additions & 20 deletions
This file was deleted.

shared/database/src/main/java/nl/jovmit/androiddevs/core/database/UserEntity.kt

Lines changed: 0 additions & 12 deletions
This file was deleted.
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
CREATE TABLE UserEntity (
2+
uid TEXT PRIMARY KEY NOT NULL,
3+
email TEXT NOT NULL,
4+
about TEXT NOT NULL
5+
);
6+
7+
fetchAll:
8+
SELECT * FROM UserEntity;
9+
10+
addUser:
11+
INSERT INTO UserEntity(uid, email, about)
12+
VALUES (?, ?, ?);
13+
14+
addFullUser:
15+
INSERT INTO UserEntity(uid, email, about)
16+
VALUES ?;
17+
18+
deleteUser:
19+
DELETE FROM UserEntity WHERE uid IN :uid;

0 commit comments

Comments
 (0)