Realization of the DAO Competition and the Database 💾
continuous-integration/drone/push Build is passing Details

pull/10/head
Emre KARTAL 2 years ago
parent 5389b060eb
commit cb95747e65

@ -32,6 +32,7 @@ android {
} }
} }
apply plugin: 'kotlin-kapt'
dependencies { dependencies {
// Navigation // Navigation
implementation 'androidx.navigation:navigation-fragment-ktx:2.5.3' implementation 'androidx.navigation:navigation-fragment-ktx:2.5.3'
@ -45,6 +46,10 @@ dependencies {
implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:converter-gson:2.9.0' implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
// Room
implementation 'androidx.room:room-runtime:2.5.1'
implementation 'androidx.room:room-ktx:2.5.1'
implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.core:core-ktx:1.9.0'
implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'com.google.android.material:material:1.8.0' implementation 'com.google.android.material:material:1.8.0'

@ -0,0 +1,31 @@
package uca.iut.clermont.data
import android.content.Context
import androidx.room.Database
import androidx.room.Room
import androidx.room.RoomDatabase
import uca.iut.clermont.data.dao.CompetitionDao
import uca.iut.clermont.model.Competition
@Database(entities = arrayOf(Competition::class), version = 1)
abstract class BDD : RoomDatabase() {
abstract fun competitionDao(): CompetitionDao
companion object {
private var INSTANCE: BDD? = null
fun getInstance(context: Context) =
INSTANCE ?: synchronized(this) {
val db = Room.databaseBuilder(
context,
BDD::class.java,
"ScorItDB"
).build()
INSTANCE = db
}
}
}

@ -0,0 +1,22 @@
package uca.iut.clermont.data.dao
import androidx.room.Dao
import androidx.room.Delete
import androidx.room.Insert
import androidx.room.Query
import kotlinx.coroutines.flow.Flow
import uca.iut.clermont.model.Competition
@Dao
interface CompetitionDao {
@Delete
fun deleteCompetition(competition: Competition)
@Query("SELECT * FROM competition")
fun getAllCompetitions(): Flow<List<Competition>>
@Insert
fun insertCompetition(competition: Competition)
}

@ -1,11 +1,16 @@
package uca.iut.clermont.model package uca.iut.clermont.model
import androidx.room.ColumnInfo
import androidx.room.Entity
import androidx.room.PrimaryKey
@Entity(tableName = "competitions")
class Competition( class Competition(
val id: Int, @PrimaryKey val id: Int,
val name: String, @ColumnInfo val name: String,
val code: String, @ColumnInfo val code: String,
val type: String, @ColumnInfo val type: String,
val emblem: String, @ColumnInfo val emblem: String,
val currentSeason: Season, @ColumnInfo val currentSeason: Season,
val area: Area val area: Area
) )

@ -9,13 +9,21 @@ import uca.iut.clermont.model.Competition
import uca.iut.clermont.model.Match import uca.iut.clermont.model.Match
import java.util.* import java.util.*
class DetailViewModel : ViewModel() { class DetailViewModel(
//val dao: CompetitionDao
) : ViewModel() {
val manager = ApiManager() val manager = ApiManager()
val competition = MutableLiveData<Competition?>() val competition = MutableLiveData<Competition?>()
val competitionMatches = MutableLiveData<List<Match>>() val competitionMatches = MutableLiveData<List<Match>>()
val nbCompetitionMatches = MutableLiveData<Int>() val nbCompetitionMatches = MutableLiveData<Int>()
/*fun insertCompetition(competition: Competition) =
viewModelScope.launch {
dao.insertCompetition(competition)
}
*/
fun loadCurrentCompetition(id: Int) = viewModelScope.launch { fun loadCurrentCompetition(id: Int) = viewModelScope.launch {
val result = manager.competitionsMgr.getItemById(id) val result = manager.competitionsMgr.getItemById(id)
competition.value = result competition.value = result
@ -24,7 +32,8 @@ class DetailViewModel : ViewModel() {
fun loadMatches(id: Int) = viewModelScope.launch { fun loadMatches(id: Int) = viewModelScope.launch {
val matchResults = manager.matchesMgr.getItemsByCompetition(id) val matchResults = manager.matchesMgr.getItemsByCompetition(id)
competitionMatches.value = matchResults.filter { it.status != "TIMED" && it.status != "SCHEDULED" } competitionMatches.value =
matchResults.filter { it.status != "TIMED" && it.status != "SCHEDULED" }
.apply { forEach { it.date.add(Calendar.HOUR_OF_DAY, 2) } } .apply { forEach { it.date.add(Calendar.HOUR_OF_DAY, 2) } }
.sortedBy { it.competition.name } .sortedBy { it.competition.name }
.sortedByDescending { it.date } .sortedByDescending { it.date }

@ -7,11 +7,16 @@ import kotlinx.coroutines.launch
import uca.iut.clermont.api.ApiManager import uca.iut.clermont.api.ApiManager
import uca.iut.clermont.model.Competition import uca.iut.clermont.model.Competition
class FavoriteViewModel : ViewModel() { class FavoriteViewModel(
//val dao: CompetitionDao
) : ViewModel() {
val manager = ApiManager() val manager = ApiManager()
val competitions = MutableLiveData<List<Competition>>() val competitions = MutableLiveData<List<Competition>>()
//fun getAllCompetitions() = dao.getAllCompetitions()
//.isLiveDate()
fun loadCompetitions() = viewModelScope.launch { fun loadCompetitions() = viewModelScope.launch {
val result = manager.competitionsMgr.getItems() val result = manager.competitionsMgr.getItems()
competitions.value = result competitions.value = result

Loading…
Cancel
Save