修改mongo查询集合名称由注解提供; 修改command app中throwExec为safeExec
This commit is contained in:
@@ -22,7 +22,7 @@ interface ICommandApp<TCommand : ICommand, TKey> : IApplication {
|
|||||||
|
|
||||||
@PostMapping
|
@PostMapping
|
||||||
fun add(@RequestBody command: TCommand): HttpMessage {
|
fun add(@RequestBody command: TCommand): HttpMessage {
|
||||||
return this.throwExecute("添加${this.name}数据失败 - ${if (jsonSerializer != null) jsonSerializer?.serialize(command) else ""}") {
|
return this.safeExecute("添加${this.name}数据失败 - ${if (jsonSerializer != null) jsonSerializer?.serialize(command) else ""}") {
|
||||||
if (this.service != null) {
|
if (this.service != null) {
|
||||||
val msg = this.service!!.add(command)
|
val msg = this.service!!.add(command)
|
||||||
it.load(msg)
|
it.load(msg)
|
||||||
@@ -35,7 +35,7 @@ interface ICommandApp<TCommand : ICommand, TKey> : IApplication {
|
|||||||
|
|
||||||
@DeleteMapping("/{key:.+}")
|
@DeleteMapping("/{key:.+}")
|
||||||
fun remove(@PathVariable key: TKey): HttpMessage {
|
fun remove(@PathVariable key: TKey): HttpMessage {
|
||||||
return this.throwExecute("删除${this.name}失败[Key: $key]") {
|
return this.safeExecute("删除${this.name}失败[Key: $key]") {
|
||||||
if (this.service != null)
|
if (this.service != null)
|
||||||
it.data = this.service!!.remove(key)
|
it.data = this.service!!.remove(key)
|
||||||
else {
|
else {
|
||||||
@@ -47,7 +47,7 @@ interface ICommandApp<TCommand : ICommand, TKey> : IApplication {
|
|||||||
|
|
||||||
@PutMapping("/{key:.+}")
|
@PutMapping("/{key:.+}")
|
||||||
fun update(@PathVariable key: TKey, @RequestBody command: TCommand): HttpMessage {
|
fun update(@PathVariable key: TKey, @RequestBody command: TCommand): HttpMessage {
|
||||||
return this.throwExecute("更新${this.name}失败 - ${if (jsonSerializer != null) jsonSerializer?.serialize(command) else ""}") {
|
return this.safeExecute("更新${this.name}失败 - ${if (jsonSerializer != null) jsonSerializer?.serialize(command) else ""}") {
|
||||||
if (this.service != null)
|
if (this.service != null)
|
||||||
this.service!!.update(key, command)
|
this.service!!.update(key, command)
|
||||||
else {
|
else {
|
||||||
|
|||||||
@@ -0,0 +1,3 @@
|
|||||||
|
package com.synebula.gaea.mongo
|
||||||
|
|
||||||
|
annotation class Collection(val name: String = "")
|
||||||
@@ -3,16 +3,13 @@ package com.synebula.gaea.mongo.query
|
|||||||
import com.synebula.gaea.extension.fieldNames
|
import com.synebula.gaea.extension.fieldNames
|
||||||
import com.synebula.gaea.extension.firstCharLowerCase
|
import com.synebula.gaea.extension.firstCharLowerCase
|
||||||
import com.synebula.gaea.log.ILogger
|
import com.synebula.gaea.log.ILogger
|
||||||
import com.synebula.gaea.mongo.order
|
import com.synebula.gaea.mongo.*
|
||||||
import com.synebula.gaea.mongo.select
|
import com.synebula.gaea.mongo.Collection
|
||||||
import com.synebula.gaea.mongo.where
|
|
||||||
import com.synebula.gaea.mongo.whereId
|
|
||||||
import com.synebula.gaea.query.IQuery
|
import com.synebula.gaea.query.IQuery
|
||||||
import com.synebula.gaea.query.PagingData
|
import com.synebula.gaea.query.PagingData
|
||||||
import com.synebula.gaea.query.PagingParam
|
import com.synebula.gaea.query.PagingParam
|
||||||
import org.springframework.data.mongodb.core.MongoTemplate
|
import org.springframework.data.mongodb.core.MongoTemplate
|
||||||
import org.springframework.data.mongodb.core.query.Query
|
import org.springframework.data.mongodb.core.query.Query
|
||||||
import java.lang.RuntimeException
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 实现IQuery的Mongo查询类
|
* 实现IQuery的Mongo查询类
|
||||||
@@ -21,14 +18,6 @@ import java.lang.RuntimeException
|
|||||||
|
|
||||||
open class MongoQuery(var repo: MongoTemplate, var logger: ILogger? = null) : IQuery {
|
open class MongoQuery(var repo: MongoTemplate, var logger: ILogger? = null) : IQuery {
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询的集合名称
|
|
||||||
*
|
|
||||||
* 若没有为成员变量collection赋值,会尝试使用View名称解析集合名称。
|
|
||||||
* 规则为移除View后缀并首字母小写,此时使用
|
|
||||||
*/
|
|
||||||
var collection: String = ""
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 使用View解析是collection时是否校验存在,默认不校验
|
* 使用View解析是collection时是否校验存在,默认不校验
|
||||||
*/
|
*/
|
||||||
@@ -73,15 +62,17 @@ open class MongoQuery(var repo: MongoTemplate, var logger: ILogger? = null) : IQ
|
|||||||
* 获取collection
|
* 获取collection
|
||||||
*/
|
*/
|
||||||
protected fun <TView> collection(clazz: Class<TView>): String {
|
protected fun <TView> collection(clazz: Class<TView>): String {
|
||||||
return if (this.collection.isEmpty()) {
|
val collection: Collection? = clazz.getDeclaredAnnotation(Collection::class.java)
|
||||||
this.logger?.info(this, "查询集合参数[collection]值为空, 尝试使用View<${clazz.name}>名称解析集合")
|
return if (collection != null)
|
||||||
val collection = clazz.simpleName.removeSuffix("View").firstCharLowerCase()
|
return collection.name
|
||||||
if (!validViewCollection || this.repo.collectionExists(collection))
|
else {
|
||||||
collection
|
this.logger?.info(this, "视图类没有标记[Collection]注解,无法获取Collection名称。尝试使用View<${clazz.name}>名称解析集合")
|
||||||
|
val name = clazz.simpleName.removeSuffix("View").firstCharLowerCase()
|
||||||
|
if (!validViewCollection || this.repo.collectionExists(name))
|
||||||
|
name
|
||||||
else {
|
else {
|
||||||
throw RuntimeException("找不到名为[$collection]的集合")
|
throw RuntimeException("找不到名为[$collection]的集合")
|
||||||
}
|
}
|
||||||
} else
|
}
|
||||||
this.collection
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user