Realm, ObjectBox or Room. Which one is for you?
Database relations with Room [ https://medium.com/androiddevelopers/database-relations-with-room-544ab95e4542 ]
Offline App with RxJava 2 and Room
SQLite Triggers (+ Android Room) [ https://proandroiddev.com/sqlite-triggers-android-room-2e7120bb3e3a ]
[Forwarded from Android Live 🤖]
Room и опциональные параметры
room
Есть достаточно интересная фича Room о которой не написано в документации, но которая может здорово облегчить жизнь разработчикам.
Думаю, причина заключается в том, что эта функция лишь косвенно связана с Room, а больше связана с написанием SQL-запросов. 🙂
Опытным путём получилось её найти, и спешу поделиться этим лайфхаком с вами.
Допустим, у вас в приложении есть список людей. При этом по умолчанию выводится полный список, но пользователь приложения может выбрать параметр с именем человека, и вам надо отфильтровать список по этому параметру.
В Kotlin у нас есть возможность использовать опциональные параметры для функции, и первое решение, которое приходит в голову — это написать запрос, используя их:
@Query(“SELECT * FROM User WHERE name = :name”)
fun getUsers(name: String? = null): List
При такой записи параметр считается за часть запроса, и не передаёт name, в этом случае список будет пустым.
Но можно чуть-чуть поменять запрос, и всё работает корректно:
@Query(“SELECT * FROM User WHERE (:name IS NULL OR name = :name)”)
fun getUsers(name: String? = null): List
При такой записи параметр name будет игнорироваться, если он будет null, и возвратится весь список, имеющийся в базе данных.
Особенно круто эта фича заходит, если фильтр состоит из нескольких полей (3 и более).
А какие у вас есть неочевидные кейсы при работе с Room?
[https://t.me/android_live/536]