Skip to content

Commit 3e01781

Browse files
committed
1 parent 45219aa commit 3e01781

File tree

2 files changed

+21
-22
lines changed

2 files changed

+21
-22
lines changed

src/main/kotlin/com/github/mgramin/sqlboot/model/resourcetype/impl/SqlResourceType.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,13 +32,15 @@ import com.github.mgramin.sqlboot.model.resourcetype.Metadata
3232
import com.github.mgramin.sqlboot.model.resourcetype.ResourceType
3333
import com.github.mgramin.sqlboot.model.uri.Uri
3434
import com.github.mgramin.sqlboot.model.uri.impl.DbUri
35+
import com.github.mgramin.sqlboot.model.uri.impl.FakeUri
3536
import com.github.mgramin.sqlboot.sql.select.SelectQuery
3637
import com.github.mgramin.sqlboot.sql.select.impl.SimpleSelectQuery
3738
import com.github.mgramin.sqlboot.sql.select.wrappers.JdbcSelectQuery
3839
import com.github.mgramin.sqlboot.sql.select.wrappers.OrderedSelectQuery
3940
import com.github.mgramin.sqlboot.sql.select.wrappers.PaginatedSelectQuery
4041
import com.github.mgramin.sqlboot.sql.select.wrappers.RestSelectQuery
4142
import com.github.mgramin.sqlboot.template.generator.impl.GroovyTemplateGenerator
43+
import com.google.gson.Gson
4244
import com.google.gson.JsonObject
4345
import com.google.gson.JsonParser
4446
import org.apache.commons.lang3.StringUtils.strip
@@ -102,6 +104,7 @@ class SqlResourceType(
102104
jsonObject.addProperty("name", name())
103105
jsonObject.addProperty("aliases", aliases().toString())
104106
jsonObject.addProperty("query", simpleSelectQuery.query())
107+
jsonObject.add("metadata", Gson().toJsonTree(metaData(FakeUri())))
105108
return jsonObject
106109
}
107110

src/main/kotlin/com/github/mgramin/sqlboot/rest/controllers/ApiController.kt

Lines changed: 18 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,6 @@ import org.springframework.web.bind.annotation.RequestMapping
4444
import org.springframework.web.bind.annotation.RequestMethod.GET
4545
import org.springframework.web.bind.annotation.RequestMethod.POST
4646
import org.springframework.web.bind.annotation.RestController
47-
import java.util.ArrayList
4847
import javax.servlet.http.HttpServletRequest
4948

5049
/**
@@ -70,20 +69,31 @@ class ApiController {
7069
val jsonArray = JsonArray()
7170
FsResourceType(dbConnectionList.getConnectionsByMask(connectionName), emptyList())
7271
.resourceTypes()
73-
.forEach {jsonArray.add(it.toJson())}
72+
.forEach { jsonArray.add(it.toJson()) }
7473
return jsonArray.toString()
7574
}
7675

77-
@RequestMapping(value = ["/api/{connectionName}/**"], method = [GET, POST])
78-
fun getResourcesHeadersJson(request: HttpServletRequest) =
79-
getListResponseEntityHeaders(SqlPlaceholdersWrapper(DbUri(parseUri(request, "api/headers"))))
80-
8176

8277
@RequestMapping(value = ["/api/meta/{connectionName}/**"], method = [GET, POST])
83-
fun getResourceMetadata(request: HttpServletRequest) =
84-
responseEntity(SqlPlaceholdersWrapper(DbUri(parseUri(request, "api/meta"))))
78+
fun getResourceMetadata(request: HttpServletRequest): ResponseEntity<String> {
79+
val jsonArray = JsonArray()
80+
val uri = SqlPlaceholdersWrapper(
81+
DbUri(parseUri(request, "api/meta")))
82+
FsResourceType(listOf(dbConnectionList.getConnectionByName(uri.connection())), emptyList())
83+
.resourceTypes()
84+
.asSequence()
85+
.filter { v -> v.name().equals(uri.type(), ignoreCase = true) }
86+
.map { it.metaData(uri) }
87+
.first()
88+
.forEach { jsonArray.add(it.toJson()) }
89+
return ResponseEntity(jsonArray.toString(), HttpStatus.OK)
90+
}
8591

8692

93+
@RequestMapping(value = ["/api/{connectionName}/**"], method = [GET, POST])
94+
fun getResourcesHeadersJson(request: HttpServletRequest) =
95+
getListResponseEntityHeaders(SqlPlaceholdersWrapper(DbUri(parseUri(request, "api/headers"))))
96+
8797
private fun getListResponseEntityHeaders(uri: Uri): ResponseEntity<List<Map<String, Any>>> {
8898
val connections = dbConnectionList.getConnectionsByMask(uri.connection())
8999
try {
@@ -106,20 +116,6 @@ class ApiController {
106116
}
107117

108118

109-
private fun responseEntity(uri: Uri): ResponseEntity<List<Metadata>> {
110-
val fsResourceTypes = FsResourceType(
111-
listOf(dbConnectionList.getConnectionByName(uri.connection())),
112-
emptyList())
113-
val resourceType = fsResourceTypes
114-
.resourceTypes()
115-
.stream()
116-
.filter { v -> v.name().equals(uri.type(), ignoreCase = true) }
117-
.findAny()
118-
.orElse(null) ?: return ResponseEntity(ArrayList(), HttpStatus.NO_CONTENT)
119-
return ResponseEntity(resourceType.metaData(uri), HttpStatus.OK)
120-
}
121-
122-
123119
private fun parseUri(request: HttpServletRequest, basePath: String): String {
124120
val path = request.servletPath
125121
.split("/")

0 commit comments

Comments
 (0)