update
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
package ru.fincode.tsudesk.feature.schedule.data
|
||||
|
||||
import ru.fincode.tsudesk.core.network.model.NetworkResult
|
||||
import ru.fincode.tsudesk.core.network.model.map
|
||||
import ru.fincode.tsudesk.feature.schedule.data.datasource.ScheduleRemoteDataSource
|
||||
import ru.fincode.tsudesk.feature.schedule.data.mapper.ScheduleDtoToDomainMapper
|
||||
import ru.fincode.tsudesk.feature.schedule.domain.model.ScheduleEntity
|
||||
@@ -7,14 +9,15 @@ import ru.fincode.tsudesk.feature.schedule.domain.repository.ScheduleRepository
|
||||
import javax.inject.Inject
|
||||
|
||||
class ScheduleRepositoryImpl @Inject constructor(
|
||||
private val remote: ScheduleRemoteDataSource, private val mapper: ScheduleDtoToDomainMapper
|
||||
private val remote: ScheduleRemoteDataSource,
|
||||
private val mapper: ScheduleDtoToDomainMapper
|
||||
) : ScheduleRepository {
|
||||
|
||||
override suspend fun loadScheduleByGroup(
|
||||
groupNumber: String
|
||||
): Result<ScheduleEntity> = remote.loadScheduleByGroup(groupNumber).map(mapper::invoke)
|
||||
override suspend fun loadScheduleByGroup(number: String): NetworkResult<ScheduleEntity> =
|
||||
remote.loadScheduleByGroup(number).map(mapper::invoke)
|
||||
|
||||
override suspend fun loadScheduleByTeacher(name: String): NetworkResult<ScheduleEntity> =
|
||||
remote.loadScheduleByTeacher(name).map(mapper::invoke)
|
||||
|
||||
override suspend fun loadScheduleByTeacher(
|
||||
name: String
|
||||
): Result<ScheduleEntity> = remote.loadScheduleByTeacher(name).map(mapper::invoke)
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package ru.fincode.tsudesk.feature.schedule.data.datasource
|
||||
|
||||
import ru.fincode.tsudesk.core.network.model.NetworkResult
|
||||
import ru.fincode.tsudesk.core.network.safeApiCall
|
||||
import ru.fincode.tsudesk.feature.schedule.data.remote.ScheduleApi
|
||||
import ru.fincode.tsudesk.feature.schedule.data.remote.model.LessonDto.ScheduleSearchField.GROUP_P
|
||||
import ru.fincode.tsudesk.feature.schedule.data.remote.model.LessonDto.ScheduleSearchField.PREP
|
||||
@@ -9,9 +11,9 @@ import javax.inject.Inject
|
||||
class ScheduleRemoteDataSource @Inject constructor(
|
||||
private val api: ScheduleApi
|
||||
) {
|
||||
suspend fun loadScheduleByGroup(groupNumber: String): Result<ScheduleDto> =
|
||||
runCatching { api.getSchedule(GROUP_P, groupNumber) }
|
||||
suspend fun loadScheduleByGroup(number: String): NetworkResult<ScheduleDto> =
|
||||
safeApiCall { api.getSchedule(GROUP_P, number) }
|
||||
|
||||
suspend fun loadScheduleByTeacher(name: String): Result<ScheduleDto> =
|
||||
runCatching { api.getSchedule(PREP, name) }
|
||||
suspend fun loadScheduleByTeacher(name: String): NetworkResult<ScheduleDto> =
|
||||
safeApiCall { api.getSchedule(PREP, name) }
|
||||
}
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package ru.fincode.tsudesk.feature.schedule.data.datasource
|
||||
|
||||
import ru.fincode.tsudesk.core.network.model.NetworkResult
|
||||
import ru.fincode.tsudesk.core.network.model.map
|
||||
import ru.fincode.tsudesk.feature.schedule.data.mapper.ScheduleDtoToDomainMapper
|
||||
import ru.fincode.tsudesk.feature.schedule.domain.model.ScheduleEntity
|
||||
import ru.fincode.tsudesk.feature.schedule.domain.repository.ScheduleRepository
|
||||
@@ -10,13 +12,10 @@ class ScheduleRemoteDataSourceImpl @Inject constructor(
|
||||
private val mapper: ScheduleDtoToDomainMapper
|
||||
) : ScheduleRepository {
|
||||
|
||||
override suspend fun loadScheduleByGroup(groupNumber: String): Result<ScheduleEntity> =
|
||||
remote
|
||||
.loadScheduleByGroup(groupNumber) // Result<ScheduleDto>
|
||||
.map(mapper::invoke) // Result<ScheduleEntity>
|
||||
override suspend fun loadScheduleByGroup(number: String): NetworkResult<ScheduleEntity> =
|
||||
remote.loadScheduleByGroup(number).map(mapper::invoke)
|
||||
|
||||
override suspend fun loadScheduleByTeacher(name: String): NetworkResult<ScheduleEntity> =
|
||||
remote.loadScheduleByTeacher(name).map(mapper::invoke)
|
||||
|
||||
override suspend fun loadScheduleByTeacher(name: String): Result<ScheduleEntity> =
|
||||
remote
|
||||
.loadScheduleByTeacher(name) // Result<ScheduleDto>
|
||||
.map(mapper::invoke) // Result<ScheduleEntity>
|
||||
}
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
package ru.fincode.tsudesk.feature.schedule.domain.repository
|
||||
|
||||
import ru.fincode.tsudesk.core.network.model.NetworkResult
|
||||
import ru.fincode.tsudesk.feature.schedule.domain.model.ScheduleEntity
|
||||
|
||||
interface ScheduleRepository {
|
||||
suspend fun loadScheduleByGroup(groupNumber: String): Result<ScheduleEntity>
|
||||
suspend fun loadScheduleByTeacher(name: String): Result<ScheduleEntity>
|
||||
suspend fun loadScheduleByGroup(number: String): NetworkResult<ScheduleEntity>
|
||||
suspend fun loadScheduleByTeacher(name: String): NetworkResult<ScheduleEntity>
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package ru.fincode.tsudesk.feature.schedule.domain.usecase
|
||||
|
||||
import ru.fincode.tsudesk.core.network.model.NetworkResult
|
||||
import ru.fincode.tsudesk.feature.schedule.domain.model.ScheduleEntity
|
||||
import ru.fincode.tsudesk.feature.schedule.domain.repository.ScheduleRepository
|
||||
import javax.inject.Inject
|
||||
@@ -8,13 +9,13 @@ class GetScheduleUseCase @Inject constructor(
|
||||
private val repository: ScheduleRepository
|
||||
) {
|
||||
sealed interface ScheduleType {
|
||||
data class Group(val groupNumber: String) : ScheduleType
|
||||
data class Teacher(val teacherName: String) : ScheduleType
|
||||
data class Group(val number: String) : ScheduleType
|
||||
data class Teacher(val name: String) : ScheduleType
|
||||
}
|
||||
|
||||
suspend operator fun invoke(type: ScheduleType): Result<ScheduleEntity> =
|
||||
suspend operator fun invoke(type: ScheduleType): NetworkResult<ScheduleEntity> =
|
||||
when (type) {
|
||||
is ScheduleType.Group -> repository.loadScheduleByGroup(type.groupNumber)
|
||||
is ScheduleType.Teacher -> repository.loadScheduleByTeacher(type.teacherName)
|
||||
is ScheduleType.Group -> repository.loadScheduleByGroup(type.number)
|
||||
is ScheduleType.Teacher -> repository.loadScheduleByTeacher(type.name)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user