scott
04/21/2024, 7:58 PMobject TimespanTable : Table("timespan"), BaseUniverseTable<Timespan, UByte> {
override val universeId: Column<UInt> = universeIdCol()
override val id: Column<UByte> = ubyte("id")
val timespanId = ubyte("timespan_id")
val name = varchar("name", 100)
override val primaryKey = PrimaryKey(universeId, timespanId)
override fun rowToData(row: ResultRow) = Timespan(
id = row[timespanId],
name = row[name],
)
//This works, but not when I extract to extension function
// suspend fun selectAllForUniverseId(universeIdz: UInt) : List<Timespan> =
// DatabaseSingleton.dbQuery {
// selectAll().where { universeId eq universeIdz }.map { rowToData(it) }
// }
}
suspend fun < T, D> T.selectAllForUniverseId(universeIdz: UInt) : List<D> where T: Table, T: BaseUniverseTable<D,Any> =
DatabaseSingleton.dbQuery {
selectAll().where { universeId eq universeIdz }.map { rowToData(it) }
}
val a : List<Timespan> = runBlocking { TimespanTable.selectAllForUniverseId<TimespanTable, Timespan>(1u) }
val b : List<Timespan> = TimespanTable.selectAllForUniverseId(1u)
Joffrey
04/21/2024, 8:15 PMBasicUniverseTable<Timespan, Any>
?
>
Why would it? Isn't TimespanTable
a BasicUniverseTable<Timespan, UByte>
? What's the variance of the second type parameter of BasicUniverseTable
? Is it marked out
?scott
04/21/2024, 8:24 PM