dave08
04/21/2021, 11:32 AMinterface 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
...dave08
04/21/2021, 11:49 AMinline 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)
}
arnaud.giuliani
04/22/2021, 12:38 PMdave08
04/22/2021, 1:08 PM