From 6abf4100f22f41282141bf60bba583cf72e5b007 Mon Sep 17 00:00:00 2001 From: Joren Date: Mon, 29 Apr 2024 22:04:12 +0200 Subject: [PATCH] Add Favouite, Dao and database --- .../main/java/com/ti/mobpo/data/Favourite.kt | 14 +++++++++++ .../java/com/ti/mobpo/data/FavouriteDao.kt | 19 +++++++++++++++ .../java/com/ti/mobpo/data/PokemonDatabase.kt | 23 +++++++++++++++++++ 3 files changed, 56 insertions(+) create mode 100644 app/src/main/java/com/ti/mobpo/data/Favourite.kt create mode 100644 app/src/main/java/com/ti/mobpo/data/FavouriteDao.kt create mode 100644 app/src/main/java/com/ti/mobpo/data/PokemonDatabase.kt diff --git a/app/src/main/java/com/ti/mobpo/data/Favourite.kt b/app/src/main/java/com/ti/mobpo/data/Favourite.kt new file mode 100644 index 0000000..ac23ca9 --- /dev/null +++ b/app/src/main/java/com/ti/mobpo/data/Favourite.kt @@ -0,0 +1,14 @@ +package com.ti.mobpo.data + +import androidx.room.Entity +import androidx.room.PrimaryKey +import com.ti.mobpo.model.Sprites +import com.ti.mobpo.model.Type + +@Entity(tableName = "favourites") +data class Favourite( + @PrimaryKey val id: Int, + val name: String, + val types: List, + val sprites: Sprites +) \ No newline at end of file diff --git a/app/src/main/java/com/ti/mobpo/data/FavouriteDao.kt b/app/src/main/java/com/ti/mobpo/data/FavouriteDao.kt new file mode 100644 index 0000000..5d59e40 --- /dev/null +++ b/app/src/main/java/com/ti/mobpo/data/FavouriteDao.kt @@ -0,0 +1,19 @@ +package com.ti.mobpo.data + +import androidx.room.Dao +import androidx.room.Delete +import androidx.room.Insert +import androidx.room.OnConflictStrategy +import androidx.room.Query + +@Dao +interface FavouriteDao { + @Insert(onConflict = OnConflictStrategy.IGNORE) + suspend fun insert(favourite: Favourite) + + @Delete + suspend fun delete(favourite: Favourite) + + @Query("SELECT id FROM favourites") + suspend fun getAllFavoriteIds(): List +} diff --git a/app/src/main/java/com/ti/mobpo/data/PokemonDatabase.kt b/app/src/main/java/com/ti/mobpo/data/PokemonDatabase.kt new file mode 100644 index 0000000..24b5509 --- /dev/null +++ b/app/src/main/java/com/ti/mobpo/data/PokemonDatabase.kt @@ -0,0 +1,23 @@ +package com.ti.mobpo.data + +import android.content.Context +import androidx.room.Database +import androidx.room.Room +import androidx.room.RoomDatabase + +@Database(entities = [Favourite::class], version = 1, exportSchema = false) +abstract class PokemonDatabase : RoomDatabase() { + abstract fun FavouriteDao(): FavouriteDao + + companion object { + @Volatile + private var Instance: PokemonDatabase? = null + fun getDatabase(context: Context): PokemonDatabase { + return Instance ?: synchronized(this) { + Room.databaseBuilder(context, PokemonDatabase::class.java, "favorites_database") + .build() + .also { Instance = it } + } + } + } +}