Jan
09/12/2022, 6:23 PMJan
09/12/2022, 6:25 PMclass PostgresChangeBuilder<T : PostgresAction> {
var schema: String = ""
var table: String? = null
var filter: String? = null
lateinit var event: EventType<T>
fun setEvent(event: EventType<T>) {
this.event = event
}
fun buildConfig() = PostgresJoinConfig(schema.ifBlank { throw IllegalStateException("Schema not set") }, table, filter, event.name)
}
And this is my builder function:
inline fun <reified T : PostgresAction> RealtimeChannel.postgrestChangeFlow(builder: PostgresChangeBuilder<T>.() -> Unit): Flow<T> { //T must be reified
val postgrestBuilder = PostgresChangeBuilder<T>().apply(builder)
//stuff
}
Can I somehow only use the variable to make this work?
val flow = channel.postgrestChangeFlow {
setEvent(EventType.Select) //builder inference does work
event = EventType.Insert //builder inference doesn't work
}
Gleb Minaev
09/13/2022, 12:44 PMclass PostgresChangeBuilder<T : PostgresAction> {
fun changeSchema(value: String?) { schema = value }
// ...
}
// later:
val flow = channel.postgrestChangeFlow {
changeSchema("...")
}