Added database persistence ability

This commit is contained in:
denizk0461
2023-04-08 17:30:05 +02:00
parent 9accebc68c
commit 3c65ccddb1
15 changed files with 176 additions and 68 deletions
@@ -0,0 +1,20 @@
package com.denizk0461.studip.db
import androidx.lifecycle.LiveData
import androidx.room.Dao
import androidx.room.Insert
import androidx.room.Query
import com.denizk0461.studip.data.StudIPEvent
@Dao
interface EventDAO {
@get:Query("SELECT * FROM events ORDER BY id")
val allEvents: LiveData<List<StudIPEvent>>
@Insert
fun insertEvent(event: StudIPEvent)
@Query("DELETE FROM events")
fun nukeEvents()
}
@@ -0,0 +1,30 @@
package com.denizk0461.studip.db
import android.content.Context
import androidx.room.Database
import androidx.room.Room
import androidx.room.RoomDatabase
import com.denizk0461.studip.data.StudIPEvent
@Database(entities = [StudIPEvent::class], version = 1)
abstract class EventDatabase : RoomDatabase() {
abstract fun dao(): EventDAO
companion object {
private var instance: EventDatabase? = null
fun getInstance(context: Context): EventDatabase {
if (instance == null) {
synchronized(EventDatabase::class) {
instance = Room.databaseBuilder(
context.applicationContext,
EventDatabase::class.java,
"event_db"
).build()
}
}
return instance!!
}
}
}
@@ -0,0 +1,15 @@
package com.denizk0461.studip.db
import android.app.Application
import androidx.lifecycle.LiveData
import com.denizk0461.studip.data.StudIPEvent
class EventRepository(app: Application) {
private val dao: EventDAO = EventDatabase.getInstance(app.applicationContext).dao()
val allEvents: LiveData<List<StudIPEvent>> = dao.allEvents
fun nukeEvents() { dao.nukeEvents() }
fun insertEvent(event: StudIPEvent) { dao.insertEvent(event) }
}