Merge pull request 'Realization of the DAO Competition and the Database 💾' (#10) from Data_Persistence into master
continuous-integration/drone/push Build is passing Details

Reviewed-on: #10
master
Emre KARTAL 2 years ago
commit 3e3fbe2dd0

@ -32,6 +32,7 @@ android {
}
}
apply plugin: 'kotlin-kapt'
dependencies {
// Navigation
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: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.appcompat:appcompat:1.6.1'
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
import androidx.room.ColumnInfo
import androidx.room.Entity
import androidx.room.PrimaryKey
@Entity(tableName = "competitions")
class Competition(
val id: Int,
val name: String,
val code: String,
val type: String,
val emblem: String,
val currentSeason: Season,
@PrimaryKey val id: Int,
@ColumnInfo val name: String,
@ColumnInfo val code: String,
@ColumnInfo val type: String,
@ColumnInfo val emblem: String,
@ColumnInfo val currentSeason: Season,
val area: Area
)

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

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

Loading…
Cancel
Save