Skip to content

Instantly share code, notes, and snippets.

@mwshubham
Created June 6, 2020 15:07
Show Gist options
  • Save mwshubham/8bb42465b7bf3efb1567558631ea12f0 to your computer and use it in GitHub Desktop.
Save mwshubham/8bb42465b7bf3efb1567558631ea12f0 to your computer and use it in GitHub Desktop.
Room one to many relation
@Entity(tableName = Company.Companion.TableInfo.tableName)
data class Company(
@PrimaryKey
var _id: String = "",
var company: String = "",
var website: String = "",
var logo: String = "",
var about: String = "",
@Ignore
var members: List<Member> = emptyList()
) {
companion object {
object TableInfo {
const val tableName = "companies"
}
}
}
@Dao
interface CompanyDao {
@Insert(onConflict = OnConflictStrategy.REPLACE)
fun insert(companies: List<Company>): List<Long>
// @Query("DELETE FROM companies")
// fun deleteAll()
//
// @Transaction
// @Query("SELECT * FROM companies where _id =:id")
// fun get(id: String): LiveData<Company>
//
@Transaction
@Query("SELECT * FROM companies")
fun getAll(): Flow<List<CompanyMemberRelation>>
}
data class CompanyMemberRelation(
@Embedded val company: Company,
@Relation(
parentColumn = "_id",
entityColumn = "companyId"
)
val members: List<Member>
)
@Entity(tableName = Member.Companion.TableInfo.tableName)
data class Member(
@PrimaryKey
var _id: String = "",
var companyId: String = "",
var age: String = "",
@Embedded
var name: Name = Name(),
var email: String = "",
var phone: String = ""
) {
companion object {
object TableInfo {
const val tableName = "members"
}
}
}
@Dao
interface MemberDao {
@Insert(onConflict = OnConflictStrategy.IGNORE)
fun insert(members: List<Member>): List<Long>
@Query("DELETE FROM members")
fun deleteAll()
@Query("SELECT * FROM members where _id =:id")
fun get(id: String): LiveData<Member>
@Query("SELECT * FROM members")
fun getAll(): Flow<List<Member>>
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment