Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- data class Match(
- @PrimaryKey var uid: Long? = null,
- @ColumnInfo var homeTeamId: Long? = null,
- @ColumnInfo var awayTeamId: Long? = null,
- @Ignore var homeTeam: Team? = null,
- @Ignore var awayTeam: Team? = null
- )
- data class Team(
- @PrimaryKey var uid: Long? = null,
- @ColumnInfo var captainId: Long? = null,
- @Ignore var captain: Player? = null
- )
- data class Player(
- @PrimaryKey var uid: Long? = null,
- @ColumnInfo var name: String? = null,
- var number: Int? = null
- )
- // inside fragment
- matchDao.getLive(matchId).observe(this, Observer {})
- fun getMatchLive(id: Long): LiveData<Match> {
- return Transformations.switchMap(matchDao.getLive(id)) { inputMatch ->
- val output1: LiveData<Match>? = inputMatch.homeTeamId?.run {
- Transformations.switchMap(teamDao.getLive(this)) { team ->
- team.captainId?.run {
- Transformations.map(playerDao.getLive(this)) { player ->
- team.apply {
- captain = player
- inputMatch.homeTeam = team
- }
- inputMatch
- }
- }
- }
- }
- output1?.run {
- Transformations.switchMap(this) { inputMatch1 ->
- inputMatch1.awayTeamId?.run {
- Transformations.switchMap(teamDao.getLive(this)) { team ->
- team.captainId?.run {
- Transformations.map(playerDao.getLive(this)) { player ->
- team.apply {
- captain = player
- inputMatch1.awayTeam = team
- }
- inputMatch1
- }
- }
- }
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement