Skip to content

Commit

Permalink
feat: 复制目录时,子节点查询使用stream查询 TencentBlueKing#1583 (TencentBlueKing#1584)
Browse files Browse the repository at this point in the history
  • Loading branch information
yaoxuwan authored Dec 26, 2023
1 parent 669a966 commit 0aff019
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ import org.springframework.data.mongodb.core.aggregation.AggregationResults
import org.springframework.data.mongodb.core.mapping.Document
import org.springframework.data.mongodb.core.query.Query
import org.springframework.data.mongodb.core.query.Update
import org.springframework.data.util.CloseableIterator
import java.lang.reflect.ParameterizedType

/**
Expand Down Expand Up @@ -74,6 +75,10 @@ abstract class AbstractMongoDao<E> : MongoDao<E> {
return findAll(classType)
}

fun stream(query: Query): CloseableIterator<E> {
return stream(query, classType)
}

override fun <T> findOne(query: Query, clazz: Class<T>): T? {
if (logger.isDebugEnabled) {
logger.debug("Mongo Dao findOne: [$query] [$clazz]")
Expand Down Expand Up @@ -180,6 +185,13 @@ abstract class AbstractMongoDao<E> : MongoDao<E> {
return determineMongoTemplate().findAndModify(query, update, options, clazz, determineCollectionName(query))
}

override fun <T> stream(query: Query, clazz: Class<T>): CloseableIterator<T> {
if (logger.isDebugEnabled) {
logger.debug("Mongo Dao stream query: [$query]")
}
return determineMongoTemplate().stream(query, clazz, determineCollectionName(query))
}

protected open fun determineCollectionName(): String {
var collectionName: String? = null
if (classType.isAnnotationPresent(Document::class.java)) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ import org.springframework.data.mongodb.core.aggregation.Aggregation
import org.springframework.data.mongodb.core.aggregation.AggregationResults
import org.springframework.data.mongodb.core.query.Query
import org.springframework.data.mongodb.core.query.Update
import org.springframework.data.util.CloseableIterator

/**
* mongo db 数据访问层接口
Expand Down Expand Up @@ -113,4 +114,9 @@ interface MongoDao<E> {
* 查询并更新操作
*/
fun <T> findAndModify(query: Query, update: Update, options: FindAndModifyOptions, clazz: Class<T>): T?

/**
* 流式查询
*/
fun <T> stream(query: Query, clazz: Class<T>): CloseableIterator<T>
}
Original file line number Diff line number Diff line change
Expand Up @@ -312,7 +312,7 @@ open class NodeMoveCopySupport(
val listOption = NodeListOption(includeFolder = true, includeMetadata = true, deep = true, sort = false)
val query = NodeQueryHelper.nodeListQuery(srcNode.projectId, srcNode.repoName, srcRootNodePath, listOption)
// 目录下的节点 -> 创建好的目录
nodeDao.find(query).forEach {
nodeDao.stream(query).stream().forEach {
doMoveCopy(this, it, it.path.replaceFirst(srcRootNodePath, dstRootNodePath), it.name)
}
}
Expand Down

0 comments on commit 0aff019

Please sign in to comment.