Database
@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
interface ItemDao {
@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
data class Item(@PrimaryKey(autoGenerate = true) val id: Int, val name: String)