package world.respect.datalayer.school import io.ktor.util.StringValues import kotlinx.coroutines.flow.Flow import world.respect.lib.dataloadstate.DataLoadParams import world.respect.lib.dataloadstate.DataLoadState import world.respect.datalayer.school.model.Clazz import world.respect.datalayer.shared.WritableDataSource import world.respect.datalayer.shared.paging.IPagingSourceFactory import world.respect.datalayer.shared.params.GetListCommonParams interface ClassDataSource: WritableDataSource { data class GetListParams( val common: GetListCommonParams = GetListCommonParams(), val inviteGuid: String? = null, ) { companion object { fun fromParams(params: StringValues) : GetListParams { return GetListParams( common = GetListCommonParams.fromParams(params), inviteGuid = params[PARAM_NAME_INVITE_CODE], ) } } } fun findByGuidAsFlow(guid: String): Flow> suspend fun findByGuid( params: DataLoadParams, guid: String ): DataLoadState fun listAsPagingSource( loadParams: DataLoadParams, params: GetListParams, ): IPagingSourceFactory suspend fun list( loadParams: DataLoadParams, params: GetListParams ): DataLoadState> override suspend fun store( list: List, ) companion object { const val ENDPOINT_NAME = "class" const val PARAM_NAME_INVITE_CODE = "inviteCode" } }