initializing room db

This commit is contained in:
Yisroel Baum 2024-09-19 13:11:47 +03:00
parent 9b059d6ec8
commit 418ae4c04e
17 changed files with 474 additions and 8 deletions

View file

@ -60,6 +60,8 @@ dependencies {
implementation(libs.androidx.ui.tooling.preview)
implementation(libs.androidx.material3)
implementation(libs.androidx.navigation.compose)
implementation(libs.androidx.room.common)
implementation(libs.androidx.room.ktx)
testImplementation(libs.junit)
androidTestImplementation(libs.androidx.junit)
androidTestImplementation(libs.androidx.espresso.core)

View file

@ -0,0 +1,16 @@
package com.example.cheshbonhanefeshdaily.data
import androidx.room.Entity
import androidx.room.PrimaryKey
@Entity(tableName = "accountable_task")
data class AccountableTask (
@PrimaryKey(autoGenerate = true) val id: Int = 0,
val date: Int,
val name: String,
val type: String,
val active: Boolean
)

View file

@ -0,0 +1,23 @@
package com.example.cheshbonhanefeshdaily.data
import androidx.room.Dao
import androidx.room.Delete
import androidx.room.Insert
import androidx.room.OnConflictStrategy
import androidx.room.Update
// when writing Queries, its good to specify a Flow<> as the return type, see step 13 in https://developer.android.com/codelabs/basic-android-kotlin-compose-persisting-data-room?continue=https%3A%2F%2Fdeveloper.android.com%2Fcourses%2Fpathways%2Fandroid-basics-compose-unit-6-pathway-2%23codelab-https%3A%2F%2Fdeveloper.android.com%2Fcodelabs%2Fbasic-android-kotlin-compose-persisting-data-room#5
@Dao
interface AccountableTaskDao {
@Insert(onConflict = OnConflictStrategy.IGNORE)
suspend fun insert(accountableTask: AccountableTask)
@Update
suspend fun update(accountableTask: AccountableTask)
@Delete
suspend fun delete(accountableTask: AccountableTask)
}

View file

@ -1,4 +0,0 @@
package com.example.cheshbonhanefeshdaily.data
class CheshbonUiState {
}

View file

@ -1,4 +0,0 @@
package com.example.cheshbonhanefeshdaily.data
object DataSource {
}

View file

@ -0,0 +1,27 @@
package com.example.cheshbonhanefeshdaily.data
import android.content.Context
import androidx.room.Database
import androidx.room.Room
import androidx.room.RoomDatabase
@Database(entities = [AccountableTask::class], version = 1, exportSchema = false)
abstract class TaskDatabase : RoomDatabase(){
abstract fun accountableTaskDao() : AccountableTaskDao
companion object {
@Volatile
private var Instance : TaskDatabase? = null
fun getDatabase(context:Context) : TaskDatabase {
return Instance ?: synchronized(this) {
Room.databaseBuilder(context, TaskDatabase::class.java, "task_database")
.fallbackToDestructiveMigration()
.build()
.also { Instance = it }
}
}
}
}