Skip to content

Instantly share code, notes, and snippets.

View deepanshu42's full-sized avatar

Deepanshu deepanshu42

  • Gojek
  • India
View GitHub Profile
@deepanshu42
deepanshu42 / UserDao.kt
Created May 23, 2020 09:50
Room with LiveData Example
@Dao
interface UserDao {
@Query("SELECT * FROM users")
fun getAllLiveData(): LiveData<List<User>>
}
Room.databaseBuilder(
applicationContext,
UserDatabase::class.java,
"users-db"
).fallbackToDestructiveMigration()
.build()
Room.databaseBuilder(
applicationContext,
UserDatabase::class.java,
"users-db"
).addMigrations(MIGRATION_1_2)
.build()
@deepanshu42
deepanshu42 / Migration.kt
Created May 23, 2020 08:48
Room Database Migration Example
val MIGRATION_1_2 = object : Migration(1, 2) {
override fun migrate(database: SupportSQLiteDatabase) {
database.execSQL("ALTER TABLE users ADD COLUMN age INTEGER")
}
}
@deepanshu42
deepanshu42 / UserDao_Impl.kt
Last active May 23, 2020 08:43
Room generated code for UserDao
public final class UserDao_Impl implements UserDao {
private final RoomDatabase __db;
private final EntityInsertionAdapter<User> __insertionAdapterOfUser;
private final EntityDeletionOrUpdateAdapter<User> __deletionAdapterOfUser;
public UserDao_Impl(RoomDatabase __db) {
this.__db = __db;
this.__insertionAdapterOfUser = new EntityInsertionAdapter<User>(__db) {
@deepanshu42
deepanshu42 / UserDatabase_Impl.kt
Created May 23, 2020 08:42
Room Generated code for UserDatabase
public final class UserDatabase_Impl extends UserDatabase {
private volatile UserDao _userDao;
@Override
protected SupportSQLiteOpenHelper createOpenHelper(DatabaseConfiguration configuration) {
//Implementation
}
@Override
protected InvalidationTracker createInvalidationTracker() {
@Dao
interface UserDao {
@Query("SELECT * FROM $USERS_TABLE")
fun getAll(): List<User>
@Insert
fun insertAll(vararg users: User)
@Delete
fun delete(user: User)
@deepanshu42
deepanshu42 / UserDao.kt
Created May 23, 2020 07:07
Multiple Table Queries Example
@Dao
interface BookDao {
@Query(
"SELECT * FROM book " +
"INNER JOIN loan ON loan.book_id = book.id " +
"INNER JOIN user ON user.id = loan.user_id " +
"WHERE users.name LIKE :userName"
)
fun findBooksBorrowedByNameSync(userName: String): List<Book>
}
@deepanshu42
deepanshu42 / UserDao.kt
Created May 23, 2020 07:07
Direct Cursor Access Example
@Dao
interface UserDao {
@Query("SELECT * FROM users")
fun loadAllUsers(): Cursor
}
@deepanshu42
deepanshu42 / UserDao.kt
Created May 23, 2020 07:06
Returning subsets of an Entity in Room Dao
data class NameTuple(
@ColumnInfo(name = "first_name") val firstName: String?,
@ColumnInfo(name = "last_name") val lastName: String?
)
@Dao
interface UserDao {
@Query("SELECT first_name, last_name FROM users")
fun loadFullName(): List<NameTuple>
}