Skip to content

Instantly share code, notes, and snippets.

View AkshayChordiya's full-sized avatar
🔱

Akshay Chordiya AkshayChordiya

🔱
View GitHub Profile
@AkshayChordiya
AkshayChordiya / User.kt
Created December 9, 2017 06:02
User entity with multiple index
@Entity(tableName = "users", indices = arrayOf(Index("full_name"), Index("phone_number")))
data class User(
@PrimaryKey(autoGenerate = true)
var id: Int = 0,
@ColumnInfo(name = "full_name")
var name: String = "",
@ColumnInfo(name = "phone_number")
var phoneNumber: String = ""
)
@AkshayChordiya
AkshayChordiya / User.kt
Created December 9, 2017 06:00
User entity with single index
@Entity(tableName = "users", indices = arrayOf(Index("full_name")))
data class User(
@PrimaryKey(autoGenerate = true)
var id: Int = 0,
@ColumnInfo(name = "full_name")
var name: String = ""
)
@AkshayChordiya
AkshayChordiya / UserDao.kt
Created October 22, 2017 14:32
User DAO with Address - Room
@Query("SELECT users.*, city FROM users JOIN addresses ON users.address_id = addresses.id")
fun getUsersWithCity(): LiveData<List<UserWithAddress>>
@AkshayChordiya
AkshayChordiya / UserWithAddress.kt
Created October 22, 2017 14:27
UserWithAddress - Room
data class UserWithAddress(
@Embedded
var user: User,
@ColumnInfo(name = "city")
var city: String? = ""
)
@AkshayChordiya
AkshayChordiya / User.kt
Created October 22, 2017 14:10
User entity for relation - Room
@Entity(tableName = "users", , foreignKeys = arrayOf(
ForeignKey(entity = Address::class, parentColumns = arrayOf("id"), childColumns = arrayOf("address_id"))
)
data class User(
@PrimaryKey(autoGenerate = true)
var id: Int = 0,
var name: String = "",
@ColumnInfo(name = "address_id")
var address: Long? = null,
)
@AkshayChordiya
AkshayChordiya / Address.kt
Created October 22, 2017 14:09
Address entity for relation - Room
@Entity(tableName = "addresses")
data class Address(
@PrimaryKey
var id: Long = 0,
var state: String = "",
var city: String = ""
)
@AkshayChordiya
AkshayChordiya / Address.kt
Created October 22, 2017 13:31
Embedded Address
data class Address(
var state: String = "",
var city: String = ""
)
@AkshayChordiya
AkshayChordiya / User.kt
Created October 22, 2017 13:29
User entity with embedded address
@Entity(tableName = "users")
data class User(
@PrimaryKey(autoGenerate = true)
var id: Int = 0,
var name: String = "",
@Embedded
var address: Address
)
@AkshayChordiya
AkshayChordiya / Init.kt
Last active October 22, 2017 12:11
Create the database instance - Room
// Get instance
database = Room.databaseBuilder(context, AppDatabase::class.java, "app.db")
.build();
// Example Usage
val userDao = database.userDao()
@AkshayChordiya
AkshayChordiya / AppDatabase.kt
Created October 22, 2017 11:46
App Database - Room
@Database(entities = arrayOf(User::class), version = 1)
abstract class AppDatabase : RoomDatabase() {
abstract fun userDao(): UserDao
}