mirror of
https://github.com/dalbodeule/snap-admin.git
synced 2025-06-09 05:48:20 +00:00
WIP SQL console: foreign key resolution
This commit is contained in:
parent
24c6972df7
commit
0ef44cbfb9
@ -557,15 +557,13 @@ public class DefaultDbAdminController {
|
|||||||
throw new DbAdminException("SQL console not enabled");
|
throw new DbAdminException("SQL console not enabled");
|
||||||
}
|
}
|
||||||
|
|
||||||
model.addAttribute("activePage", "console");
|
|
||||||
|
|
||||||
ConsoleQuery q = new ConsoleQuery();
|
ConsoleQuery q = new ConsoleQuery();
|
||||||
consoleQueryRepository.save(q);
|
consoleQueryRepository.save(q);
|
||||||
return "redirect:/" + properties.getBaseUrl() + "/console/run/" + q.getId();
|
return "redirect:/" + properties.getBaseUrl() + "/console/run/" + q.getId();
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/console")
|
@GetMapping("/console")
|
||||||
public String console(Model model) {
|
public String console() {
|
||||||
if (!properties.isSqlConsoleEnabled()) {
|
if (!properties.isSqlConsoleEnabled()) {
|
||||||
throw new DbAdminException("SQL console not enabled");
|
throw new DbAdminException("SQL console not enabled");
|
||||||
}
|
}
|
||||||
@ -575,7 +573,6 @@ public class DefaultDbAdminController {
|
|||||||
if (tabs.isEmpty()) {
|
if (tabs.isEmpty()) {
|
||||||
ConsoleQuery q = new ConsoleQuery();
|
ConsoleQuery q = new ConsoleQuery();
|
||||||
consoleQueryRepository.save(q);
|
consoleQueryRepository.save(q);
|
||||||
tabs.add(q);
|
|
||||||
return "redirect:/" + properties.getBaseUrl() + "/console/run/" + q.getId();
|
return "redirect:/" + properties.getBaseUrl() + "/console/run/" + q.getId();
|
||||||
} else {
|
} else {
|
||||||
return "redirect:/" + properties.getBaseUrl() + "/console/run/" + tabs.get(0).getId();
|
return "redirect:/" + properties.getBaseUrl() + "/console/run/" + tabs.get(0).getId();
|
||||||
@ -600,7 +597,6 @@ public class DefaultDbAdminController {
|
|||||||
@RequestParam(required = false) Integer page,
|
@RequestParam(required = false) Integer page,
|
||||||
@RequestParam(required = false) Integer pageSize,
|
@RequestParam(required = false) Integer pageSize,
|
||||||
@PathVariable String queryId) {
|
@PathVariable String queryId) {
|
||||||
|
|
||||||
if (page == null || page <= 0) page = 1;
|
if (page == null || page <= 0) page = 1;
|
||||||
if (pageSize == null) pageSize = 50;
|
if (pageSize == null) pageSize = 50;
|
||||||
|
|
||||||
@ -674,6 +670,7 @@ public class DefaultDbAdminController {
|
|||||||
model.addAttribute("results", new DbQueryResult(results));
|
model.addAttribute("results", new DbQueryResult(results));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
model.addAttribute("title", "SQL Console | " + activeQuery.getTitle());
|
||||||
double elapsedTime = (System.currentTimeMillis() - startTime) / 1000.0;
|
double elapsedTime = (System.currentTimeMillis() - startTime) / 1000.0;
|
||||||
model.addAttribute("elapsedTime", new DecimalFormat("0.0#").format(elapsedTime));
|
model.addAttribute("elapsedTime", new DecimalFormat("0.0#").format(elapsedTime));
|
||||||
return "console";
|
return "console";
|
||||||
|
@ -65,6 +65,11 @@ public class DbQueryOutputField {
|
|||||||
return dbField != null && dbField.isForeignKey();
|
return dbField != null && dbField.isForeignKey();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Class<?> getConnectedType() {
|
||||||
|
if (dbField == null) return null;
|
||||||
|
return dbField.getConnectedType();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns true if this field is a binary field (BLOB, etc.), only in the case
|
* Returns true if this field is a binary field (BLOB, etc.), only in the case
|
||||||
* the field has been mapped to a table
|
* the field has been mapped to a table
|
||||||
|
@ -123,6 +123,10 @@ h1 a:hover {
|
|||||||
overflow-x: auto;
|
overflow-x: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.inner-navigation .query-tab {
|
||||||
|
min-width: 128px;
|
||||||
|
}
|
||||||
|
|
||||||
.inner-navigation a:first-child {
|
.inner-navigation a:first-child {
|
||||||
border-top-left-radius: 5px;
|
border-top-left-radius: 5px;
|
||||||
background-color: #FAFAFA;
|
background-color: #FAFAFA;
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
<div class="col">
|
<div class="col">
|
||||||
<div class="w-100 d-flex inner-navigation">
|
<div class="w-100 d-flex inner-navigation">
|
||||||
<a th:each="query : ${tabs}" th:href="|/${dbadmin_baseUrl}/console/run/${query.getId()}|"
|
<a th:each="query : ${tabs}" th:href="|/${dbadmin_baseUrl}/console/run/${query.getId()}|"
|
||||||
class="d-inline-block"
|
class="d-inline-block query-tab"
|
||||||
th:classAppend="${query.getId() == activeQuery.getId() ? 'active' : ''}">
|
th:classAppend="${query.getId() == activeQuery.getId() ? 'active' : ''}">
|
||||||
<div class="ui-tab ps-5 pe-5 p-3">
|
<div class="ui-tab ps-5 pe-5 p-3">
|
||||||
<i class="bi bi-filetype-sql pe-2"></i>
|
<i class="bi bi-filetype-sql pe-2"></i>
|
||||||
|
@ -19,7 +19,18 @@
|
|||||||
</th:block>
|
</th:block>
|
||||||
<th:block th:if="${!field.isBinary()}">
|
<th:block th:if="${!field.isBinary()}">
|
||||||
|
|
||||||
<span th:if="${object.get(field) != null}" th:text="${object.get(field)}"></span>
|
<span th:if="${object.get(field) != null}">
|
||||||
|
<th:block th:if="${field.isForeignKey()}">
|
||||||
|
<a th:href="|/${dbadmin_baseUrl}/model/${field.getConnectedType().getName()}/show/${object.get(field)}|">
|
||||||
|
<span th:text="${object.get(field)}"></span>
|
||||||
|
</a>
|
||||||
|
<p class="p-0 m-0"
|
||||||
|
th:text="${object.traverse(field).getDisplayName()}"></p>
|
||||||
|
</th:block>
|
||||||
|
<th:block th:if="${!field.isForeignKey()}">
|
||||||
|
<span th:text="${object.get(field)}"></span>
|
||||||
|
</th:block>
|
||||||
|
</span>
|
||||||
<span th:if="${object.get(field) == null}" class="null-label font-monospace">NULL</span>
|
<span th:if="${object.get(field) == null}" class="null-label font-monospace">NULL</span>
|
||||||
</th:block>
|
</th:block>
|
||||||
</th:block>
|
</th:block>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user