Ver Fonte

add dependencies for room
add di for room
add entity ValuteDb

MrOzOn há 4 anos atrás
pai
commit
d2692191ca

+ 4 - 0
app/build.gradle

@@ -51,6 +51,10 @@ dependencies {
     //Coroutines
     implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$coroutines_version"
     implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutines_version"
+    //Room
+    kapt "androidx.room:room-compiler:$kapt_room_version"
+    implementation "androidx.room:room-runtime:$room_version"
+    implementation "androidx.room:room-ktx:$room_version"
 
     testImplementation 'junit:junit:4.13.2'
     testImplementation "org.jetbrains.kotlinx:kotlinx-coroutines-test:$coroutines_version"

+ 6 - 0
app/src/main/java/com/mrozon/currencyconverter/data/db/CurrencyDao.kt

@@ -0,0 +1,6 @@
+package com.mrozon.currencyconverter.data.db
+
+import androidx.room.Dao
+
+@Dao
+interface CurrencyDao

+ 43 - 0
app/src/main/java/com/mrozon/currencyconverter/data/db/CurrencyDatabase.kt

@@ -0,0 +1,43 @@
+package com.mrozon.currencyconverter.data.db
+
+import android.content.Context
+import androidx.room.Database
+import androidx.room.Room
+import androidx.room.RoomDatabase
+
+@Database(entities = [ValuteDb::class], version = 1, exportSchema = false)
+abstract class CurrencyDatabase : RoomDatabase() {
+    abstract fun plantDao(): CurrencyDao
+
+    companion object {
+        private const val DATABASE_NAME = "currencies.db"
+
+        @Volatile private var instance: CurrencyDatabase? = null
+
+        fun getInstance(context: Context): CurrencyDatabase {
+            return instance ?: synchronized(this) {
+                instance ?: buildDatabase(context).also { instance = it }
+            }
+        }
+
+        private fun buildDatabase(context: Context): CurrencyDatabase {
+            return Room.databaseBuilder(context, CurrencyDatabase::class.java, DATABASE_NAME)
+                .addCallback(
+                    object : RoomDatabase.Callback() {
+//                        override fun onOpen(db: SupportSQLiteDatabase) {
+//                            super.onOpen(db)
+//                        }
+//
+//                        override fun onCreate(db: SupportSQLiteDatabase) {
+//                            super.onCreate(db)
+//                            val request = OneTimeWorkRequestBuilder<SeedDatabaseWorker>()
+//                                .setInputData(workDataOf(KEY_FILENAME to PLANT_DATA_FILENAME))
+//                                .build()
+//                            WorkManager.getInstance(context).enqueue(request)
+//                        }
+                    }
+                )
+                .build()
+        }
+    }
+}

+ 13 - 0
app/src/main/java/com/mrozon/currencyconverter/data/db/ValuteDb.kt

@@ -0,0 +1,13 @@
+package com.mrozon.currencyconverter.data.db
+
+import androidx.room.Entity
+import androidx.room.PrimaryKey
+
+@Entity(tableName = "valutes")
+data class ValuteDb(
+    @PrimaryKey
+    val id: String,
+    val charCode: String,
+    val name: String,
+    val value: Float
+)

+ 28 - 0
app/src/main/java/com/mrozon/currencyconverter/di/DatabaseModule.kt

@@ -0,0 +1,28 @@
+package com.mrozon.currencyconverter.di
+
+import android.content.Context
+import com.mrozon.currencyconverter.data.db.CurrencyDao
+import com.mrozon.currencyconverter.data.db.CurrencyDatabase
+import dagger.Module
+import dagger.Provides
+import dagger.hilt.InstallIn
+import dagger.hilt.android.qualifiers.ApplicationContext
+import dagger.hilt.components.SingletonComponent
+import javax.inject.Singleton
+
+@InstallIn(SingletonComponent::class)
+@Module
+class DatabaseModule {
+
+    @Singleton
+    @Provides
+    fun provideCurrencyDatabase(@ApplicationContext context: Context): CurrencyDatabase {
+        return CurrencyDatabase.getInstance(context)
+    }
+
+    @Provides
+    fun provideCurrencyDao(currencyDatabase: CurrencyDatabase): CurrencyDao {
+        return currencyDatabase.plantDao()
+    }
+
+}

+ 2 - 0
build.gradle

@@ -8,6 +8,8 @@ buildscript {
         retrofit_version = '2.9.0'
         gson_version = '2.8.6'
         coroutines_version = "1.4.2"
+        kapt_room_version = '2.2.5'
+        room_version = '2.3.0'
     }
     repositories {
         google()