Skip to content

Commit

Permalink
Add support for Java-based create indexes
Browse files Browse the repository at this point in the history
  • Loading branch information
cosmin-marginean committed May 12, 2024
1 parent 2941fc1 commit df2416d
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 7 deletions.
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
invirtVersion = 0.9.6
invirtVersion = 0.9.8
kotlinVersion = 1.9.23
http4kVersion = 5.17.0.0
mockkVersion = 1.13.9
Expand Down
32 changes: 26 additions & 6 deletions invirt-mongodb/src/main/kotlin/invirt/mongodb/index.kt
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,30 @@ fun <E : StoredEntity> MongoCollection<E>.createIndexes(
clientSession: ClientSession? = null,
build: IndexesBuilder.() -> Unit
) {
val indexes = buildIndexes(this.namespace.collectionName, build)
if (clientSession != null) {
createIndexes(clientSession, indexes)
} else {
createIndexes(indexes)
}
}

/**
* For backwards compatibility with the Java driver
*/
fun com.mongodb.client.MongoCollection<*>.createIndexes(
clientSession: com.mongodb.client.ClientSession? = null,
build: IndexesBuilder.() -> Unit
) {
val indexes = buildIndexes(this.namespace.collectionName, build)
if (clientSession != null) {
createIndexes(clientSession, indexes)
} else {
createIndexes(indexes)
}
}

private fun buildIndexes(collectionName: String, build: IndexesBuilder.() -> Unit): List<IndexModel> {
val indexesBuilder = IndexesBuilder()
indexesBuilder.asc(StoredEntity::version)
indexesBuilder.desc(StoredEntity::createdAt)
Expand All @@ -40,16 +64,12 @@ fun <E : StoredEntity> MongoCollection<E>.createIndexes(
log.atInfo {
message = "Creating indexes for collection"
payload = mapOf(
"collection" to this@createIndexes.namespace.collectionName,
"collection" to collectionName,
"count" to indexesBuilder.indexes.size,
"indexes" to indexesBuilder.indexes.map { it.keys }
)
}
if (clientSession != null) {
createIndexes(clientSession, indexesBuilder.indexes)
} else {
createIndexes(indexesBuilder.indexes)
}
return indexesBuilder.indexes
}

private fun indexOptions(caseInsensitive: Boolean): IndexOptions {
Expand Down

0 comments on commit df2416d

Please sign in to comment.