| import org.jetbrains.kotlinx.dataframe.* | |
| import org.jetbrains.kotlinx.dataframe.annotations.* | |
| import org.jetbrains.kotlinx.dataframe.api.* | |
| import org.jetbrains.kotlinx.dataframe.io.* | |
| @DataSchema | |
| data class Sessions( | |
| val roomId: List<Int> | |
| ) | |
| @DataSchema | |
| data class Rooms( | |
| val id: Int, | |
| val sort: Int, | |
| val name: String, | |
| ) | |
| class Wrapper(val rooms: List<Rooms>) | |
| fun box(): String { | |
| val rooms = dataFrameOf(Rooms(1, 2, "n")) | |
| val sessions = dataFrameOf(Sessions(listOf(1, 2))) | |
| val df = sessions.convert { roomId }.with { | |
| listOf(Wrapper(listOf(Rooms(1, 2, "n")))).toDataFrame(maxDepth = 2) | |
| } | |
| // test 1: column converted to nested schema, structure is available | |
| df.roomId[0].rooms[0].id | |
| // test 2: add operation correctly extracted full schema from df | |
| df.add("test") { 1 }.let { | |
| val v: Int = it[0].roomId[0].rooms[0].id | |
| it.compareSchemas(strict = true) | |
| } | |
| return "OK" | |
| } |