package exh.md.utils import exh.md.dto.ListCallDto import exh.util.under import kotlinx.serialization.json.JsonElement import kotlinx.serialization.json.decodeFromJsonElement import kotlinx.serialization.json.jsonObject suspend fun mdListCall(request: suspend (offset: Int) -> ListCallDto): List { val results = mutableListOf() var offset = 0 do { val list = request(offset) results += list.data offset += list.limit } while (offset under list.total) return results } inline fun JsonElement.asMdMap(): Map { return runCatching { MdUtil.jsonParser.decodeFromJsonElement>(jsonObject) }.getOrElse { emptyMap() } }