[ADD] Repositories pour question

RepositoryAndroid
Renaud BEURET 3 months ago
parent 1d5cc3e009
commit 17eabbd9a5

@ -0,0 +1,11 @@
package fr.iut.sciencequest.model.repositories.question
import fr.iut.sciencequest.model.metier.question.Question
import fr.iut.sciencequest.model.metier.question.QuestionWithSimpleReponse
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.StateFlow
interface IQuestionRepository {
val questions: StateFlow<List<QuestionWithSimpleReponse>>
suspend fun fetchQuestions(index: Int)
}

@ -0,0 +1,47 @@
package fr.iut.sciencequest.model.repositories.question
import android.util.Log
import fr.iut.sciencequest.model.buisness.Question.QuestionRequestService
import fr.iut.sciencequest.model.buisness.createRequestService
import fr.iut.sciencequest.model.dto.extensions.ToModel
import fr.iut.sciencequest.model.metier.question.Question
import fr.iut.sciencequest.model.metier.question.QuestionWithSimpleReponse
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.asStateFlow
import kotlinx.coroutines.flow.flow
import kotlinx.coroutines.flow.update
import retrofit2.create
class QuestionAPIRepository : IQuestionRepository {
private val _questions = MutableStateFlow<List<QuestionWithSimpleReponse>>(emptyList())
override val questions: StateFlow<List<QuestionWithSimpleReponse>>
get() = _questions.asStateFlow()
override suspend fun fetchQuestions(index: Int) {
//1. appel à l'api QuestionRequestService
//2. fill _questions with QuestionRequestService response
// _questions.update {
//
// }
val serviceClient = createRequestService().create<QuestionRequestService>()
try {
_questions.value = serviceClient.getQuestions(index).questions.ToModel()
} catch (e: Exception) {
Log.e("Requete API Question", e.message.toString())
}
}
suspend fun fetchQuestions2(index: Int): Flow<List<QuestionWithSimpleReponse>> = flow {
val serviceClient = createRequestService().create<QuestionRequestService>()
try {
val response = serviceClient.getQuestions(index)
emit(response.questions.ToModel())
} catch (e: Exception) {
Log.e("Requete API Question", e.message.toString())
}
}
}
Loading…
Cancel
Save