kandraKoin

fun Application.kandraKoin()

Registers a KandraRepository and KandraSuspendRepository in the Koin container for every entity registered in SchemaRegistry.

Must be called after install(Kandra) and after Koin itself is installed. All repos share the plugin's io.kandra.runtime.BatchEngine, so shutdown protection and in-flight tracking apply to Koin-managed repos too.

Named qualifiers follow the pattern:

Qualifiers are derived purely from Class.getSimpleName, so two @ScyllaTable entities that share a simple name (e.g. billing.User and admin.User) would otherwise collide and cause a confusing DefinitionOverrideException from Koin itself. To surface a clear cause instead, this checks for simple-name collisions across every registered entity before building any bindings and throws KandraSchemaException naming the colliding classes. See GH-35.