Any short way to inject a child of: ```interface U...
# koin
d
Any short way to inject a child of:
Copy code
interface UseCase<in Request : Any> {
    suspend fun execute(request: Request): ServerResponse

    suspend operator fun invoke(request: Request): ServerResponse = execute(request)
}
in a ktor
fun Route.someRoutes()
using the `Request`'s type? I want to be able to provide an implementation in Unit tests without mocking the actual implementation for that route... and the
Request
object is unique for each
UseCase
...
Does this make sense @arnaud.giuliani?
Copy code
inline fun <reified Request : Any> Route.injectUseCaseByRequestType(
    noinline parameters: ParametersDefinition? = null
) = inject<UseCase<Request>>(qualifier<Request>(), parameters)

inline fun <reified Request : Any> Module.singleUseCase(
    createdAtStart: Boolean = false,
    override: Boolean = false,
    noinline definition: Definition<UseCase<Request>>
): BeanDefinition<UseCase<Request>> = single(qualifier<Request>(), createdAtStart, override, definition)

inline fun <reified Request : Any> Scope.getUseCase(
    noinline parameters: ParametersDefinition? = null
): UseCase<Request> {
    return get(UseCase::class, qualifier<Request>(), parameters)
}
a
yep, seems ok 👌
d
Thanks for double checking 🙂, I'm a bit new to Koin -- I wasn't sure I was doing this the right way.