Database

/**
 * The Room database that contains the Users table
 */
@Database(entities = arrayOf(User::class), version = 1)
abstract class UsersDatabase : RoomDatabase() {

    abstract fun userDao(): UserDao

    companion object {

        @Volatile private var INSTANCE: UsersDatabase? = null

        fun getInstance(context: Context): UsersDatabase =
                INSTANCE ?: synchronized(this) {
                    INSTANCE ?: buildDatabase(context).also { INSTANCE = it }
                }

        private fun buildDatabase(context: Context) =
                Room.databaseBuilder(context.applicationContext,
                        UsersDatabase::class.java, "Sample.db")
                        .build()
    }
}

//Dao

@Dao
interface ItemDao {
    /**
     * Room knows how to return a LivePagedListProvider, from which we can get a LiveData and serve
     * it back to UI via ViewModel.
     */
    @Query("SELECT * FROM Item ORDER BY name COLLATE NOCASE ASC")
    fun allItemsByName(): DataSource.Factory<Int, Item>

    @Insert
    fun insert(cheeses: List<Item>)

    @Insert
    fun insert(item: Item)

    @Delete
    fun delete(item: Item)
}

// entity
@Entity
data class Item(@PrimaryKey(autoGenerate = true) val id: Int, val name: String)

results matching ""

    No results matching ""