upgrade room and use ProvidedTypeConverter

This commit is contained in:
Konrad Pozniak 2020-10-15 17:35:48 +02:00
parent ea860a761b
commit 7df890efef
5 changed files with 17 additions and 10 deletions

View File

@ -62,7 +62,7 @@ dependencies {
val lifecycleVersion = "2.3.0-alpha07" val lifecycleVersion = "2.3.0-alpha07"
val emojiCompatVersion = "1.2.0-alpha01" val emojiCompatVersion = "1.2.0-alpha01"
val roomVersion = "2.3.0-alpha02" val roomVersion = "2.3.0-alpha03"
val okHttpVersion = "4.8.1" val okHttpVersion = "4.8.1"
val retrofitVersion = "2.9.0" val retrofitVersion = "2.9.0"
val moshiVersion = "1.10.0" val moshiVersion = "1.10.0"

View File

@ -27,6 +27,7 @@ import androidx.room.Room
import at.connyduck.pixelcat.PixelcatApplication import at.connyduck.pixelcat.PixelcatApplication
import at.connyduck.pixelcat.db.AccountManager import at.connyduck.pixelcat.db.AccountManager
import at.connyduck.pixelcat.db.AppDatabase import at.connyduck.pixelcat.db.AppDatabase
import at.connyduck.pixelcat.db.RoomConverter
import dagger.Module import dagger.Module
import dagger.Provides import dagger.Provides
import javax.inject.Singleton import javax.inject.Singleton
@ -47,9 +48,10 @@ class AppModule {
@Provides @Provides
@Singleton @Singleton
fun providesDatabase(app: PixelcatApplication): AppDatabase { fun providesDatabase(context: Context, converter: RoomConverter): AppDatabase {
return Room return Room
.databaseBuilder(app, AppDatabase::class.java, "pixelcat.db") .databaseBuilder(context, AppDatabase::class.java, "pixelcat.db")
.addTypeConverter(converter)
.build() .build()
} }

View File

@ -19,6 +19,7 @@
package at.connyduck.pixelcat.db package at.connyduck.pixelcat.db
import androidx.room.ProvidedTypeConverter
import androidx.room.TypeConverter import androidx.room.TypeConverter
import at.connyduck.pixelcat.model.Attachment import at.connyduck.pixelcat.model.Attachment
import at.connyduck.pixelcat.model.Notification import at.connyduck.pixelcat.model.Notification
@ -26,10 +27,14 @@ import at.connyduck.pixelcat.model.Status
import com.squareup.moshi.Moshi import com.squareup.moshi.Moshi
import com.squareup.moshi.Types import com.squareup.moshi.Types
import java.util.Date import java.util.Date
import javax.inject.Inject
import javax.inject.Singleton
class Converters { @ProvidedTypeConverter
@Singleton
private val moshi = Moshi.Builder().build() class RoomConverter @Inject constructor (
private val moshi: Moshi
) {
@TypeConverter @TypeConverter
fun visibilityToString(visibility: Status.Visibility) = visibility.name fun visibilityToString(visibility: Status.Visibility) = visibility.name

View File

@ -22,11 +22,11 @@ package at.connyduck.pixelcat.db.entitity
import androidx.room.Embedded import androidx.room.Embedded
import androidx.room.Entity import androidx.room.Entity
import androidx.room.TypeConverters import androidx.room.TypeConverters
import at.connyduck.pixelcat.db.Converters import at.connyduck.pixelcat.db.RoomConverter
import at.connyduck.pixelcat.model.Notification import at.connyduck.pixelcat.model.Notification
@Entity(primaryKeys = ["accountId", "id"]) @Entity(primaryKeys = ["accountId", "id"])
@TypeConverters(Converters::class) @TypeConverters(RoomConverter::class)
data class NotificationEntity( data class NotificationEntity(
val accountId: Long, val accountId: Long,
val type: Notification.Type, val type: Notification.Type,

View File

@ -22,13 +22,13 @@ package at.connyduck.pixelcat.db.entitity
import androidx.room.Embedded import androidx.room.Embedded
import androidx.room.Entity import androidx.room.Entity
import androidx.room.TypeConverters import androidx.room.TypeConverters
import at.connyduck.pixelcat.db.Converters import at.connyduck.pixelcat.db.RoomConverter
import at.connyduck.pixelcat.model.Attachment import at.connyduck.pixelcat.model.Attachment
import at.connyduck.pixelcat.model.Status import at.connyduck.pixelcat.model.Status
import java.util.Date import java.util.Date
@Entity(primaryKeys = ["accountId", "id"]) @Entity(primaryKeys = ["accountId", "id"])
@TypeConverters(Converters::class) @TypeConverters(RoomConverter::class)
data class StatusEntity( data class StatusEntity(
val accountId: Long, val accountId: Long,
val id: String, val id: String,