Successfully completed database change OMG; this will save memory by storing less duplicate data

This commit is contained in:
denizk0461
2023-04-17 14:19:06 +02:00
parent 4d520f375b
commit 315f2f815a
8 changed files with 137 additions and 57 deletions
@@ -4,12 +4,12 @@ import androidx.lifecycle.LiveData
import androidx.room.Dao
import androidx.room.Insert
import androidx.room.Query
import com.denizk0461.studip.model.CanteenOffer
import com.denizk0461.studip.model.StudIPEvent
import com.denizk0461.studip.model.*
@Dao
interface EventDAO {
// Stud.IP schedule events
@get:Query("SELECT * FROM events ORDER BY id")
val allEvents: LiveData<List<StudIPEvent>>
@@ -22,12 +22,39 @@ interface EventDAO {
@Query("DELETE FROM events")
fun nukeEvents()
@get:Query("SELECT * FROM offers ORDER BY id")
// @get:Query("SELECT * FROM offers ORDER BY id")
// val allOffers: LiveData<List<CanteenOffer>>
//
// @Insert
// fun insertOffers(offers: List<CanteenOffer>)
//
// @Query("DELETE from offers")
// fun nukeOffers()
// canteen offers
// get all offers
@get:Query(
"SELECT * FROM offer_item " +
"JOIN offer_category ON offer_item.categoryId = offer_category.id " +
"JOIN offer_canteen ON offer_category.canteenId = offer_canteen.id " +
"JOIN offer_date ON offer_category.dateId = offer_date.id"
)
val allOffers: LiveData<List<CanteenOffer>>
@Insert
fun insertOffers(offers: List<CanteenOffer>)
@Query("DELETE FROM offer_date")
fun nukeOfferDates()
@Query("DELETE from offers")
fun nukeOffers()
@Query("DELETE FROM offer_category")
fun nukeOfferCategories()
@Query("DELETE FROM offer_canteen")
fun nukeOfferCanteens()
@Query("DELETE FROM offer_item")
fun nukeOfferItems()
@Insert fun insert(date: OfferDate)
@Insert fun insert(canteen: OfferCanteen)
@Insert fun insert(category: OfferCategory)
@Insert fun insert(item: OfferItem)
}
@@ -4,10 +4,18 @@ import android.content.Context
import androidx.room.Database
import androidx.room.Room
import androidx.room.RoomDatabase
import com.denizk0461.studip.model.CanteenOffer
import com.denizk0461.studip.model.StudIPEvent
import com.denizk0461.studip.model.*
@Database(entities = [StudIPEvent::class, CanteenOffer::class], version = 7)
@Database(
entities = [
StudIPEvent::class,
OfferDate::class,
OfferCanteen::class,
OfferCategory::class,
OfferItem::class
],
version = 8
)
abstract class EventDatabase : RoomDatabase() {
abstract fun dao(): EventDAO
@@ -2,8 +2,7 @@ package com.denizk0461.studip.db
import android.app.Application
import androidx.lifecycle.LiveData
import com.denizk0461.studip.model.CanteenOffer
import com.denizk0461.studip.model.StudIPEvent
import com.denizk0461.studip.model.*
class EventRepository(app: Application) {
@@ -17,6 +16,16 @@ class EventRepository(app: Application) {
val allOffers: LiveData<List<CanteenOffer>> = dao.allOffers
fun insertOffers(offers: List<CanteenOffer>) { dao.insertOffers(offers) }
fun nukeOffers() { dao.nukeOffers() }
// fun insertOffers(offers: List<CanteenOffer>) { dao.insertOffers(offers) }
fun nukeOffers() {
dao.nukeOfferItems()
dao.nukeOfferCategories()
dao.nukeOfferCanteens()
dao.nukeOfferDates()
}
fun insert(date: OfferDate) { dao.insert(date) }
fun insert(canteen: OfferCanteen) { dao.insert(canteen) }
fun insert(category: OfferCategory) { dao.insert(category) }
fun insert(item: OfferItem) { dao.insert(item) }
}