This commit is contained in:
Francesco 2023-09-21 22:40:49 +02:00
commit 95e8dea90f
6 changed files with 37 additions and 5 deletions

View File

@ -113,9 +113,16 @@ This annotation can be placed on binary fields to declare they are storing an im
## Changelog ## Changelog
**0.0.4**
- Simplified setup/configuration: now it only requires a couple of config properties and 1 annotation
- Support of custom base url for the web UI, instead of hardcoded "/dbadmin"
- Continued implementation of automated testing with Selenium
0.0.3 - @DisplayImage; Selenium tests; Fixed/greatly improved edit page; **0.0.3**
- @DisplayImage; Selenium tests; Fixed/greatly improved edit page;
0.0.2 - Faceted search with `@Filterable` annotation **0.0.2**
- Faceted search with `@Filterable` annotation
0.0.1 - First alpha release (basic CRUD features) **0.0.1**
- First alpha release (basic CRUD features)

View File

@ -1,5 +1,8 @@
package tech.ailef.dbadmin; package tech.ailef.dbadmin;
import java.util.HashMap;
import java.util.Map;
import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.context.properties.ConfigurationProperties;
/** /**
@ -47,5 +50,13 @@ public class DbAdminProperties {
this.modelsPackage = modelsPackage; this.modelsPackage = modelsPackage;
} }
public Map<String, String> toMap() {
Map<String, String> conf = new HashMap<>();
conf.put("enabled", enabled + "");
conf.put("baseUrl", baseUrl);
conf.put("modelsPackage", modelsPackage);
return conf;
}
} }

View File

@ -1,6 +1,8 @@
package tech.ailef.dbadmin.controller.rest; package tech.ailef.dbadmin.controller.rest;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -13,6 +15,7 @@ import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import tech.ailef.dbadmin.DbAdmin; import tech.ailef.dbadmin.DbAdmin;
import tech.ailef.dbadmin.DbAdminProperties;
import tech.ailef.dbadmin.dbmapping.DbAdminRepository; import tech.ailef.dbadmin.dbmapping.DbAdminRepository;
import tech.ailef.dbadmin.dbmapping.DbObjectSchema; import tech.ailef.dbadmin.dbmapping.DbObjectSchema;
import tech.ailef.dbadmin.dto.PaginatedResult; import tech.ailef.dbadmin.dto.PaginatedResult;
@ -23,6 +26,9 @@ import tech.ailef.dbadmin.exceptions.DbAdminException;
public class DefaultDbAdminRestController { public class DefaultDbAdminRestController {
@Autowired @Autowired
public DbAdmin dbAdmin; public DbAdmin dbAdmin;
@Autowired
private DbAdminProperties properties;
@Autowired @Autowired
private JdbcTemplate jdbcTemplate; private JdbcTemplate jdbcTemplate;
@ -31,6 +37,11 @@ public class DefaultDbAdminRestController {
// @Qualifier("internalJdbc") // @Qualifier("internalJdbc")
// private JdbcTemplate internalJdbc; // private JdbcTemplate internalJdbc;
// @GetMapping("/configuration")
// public ResponseEntity<?> conf() {
// return ResponseEntity.ok(properties.toMap());
// }
@GetMapping @GetMapping
public ResponseEntity<?> index(@RequestParam(required = false) String query) { public ResponseEntity<?> index(@RequestParam(required = false) String query) {
checkInit(); checkInit();

View File

@ -1,6 +1,6 @@
/* Request to the autocomplete REST endpoit */ /* Request to the autocomplete REST endpoit */
async function getSuggestions(className, query) { async function getSuggestions(className, query) {
const response = await fetch(`/dbadmin/api/autocomplete/${className}?query=${query}`); const response = await fetch(`/${baseUrl}/api/autocomplete/${className}?query=${query}`);
const suggestions = await response.json(); const suggestions = await response.json();
return suggestions; return suggestions;
} }

View File

@ -1,6 +1,6 @@
/* Request to the autocomplete REST endpoit */ /* Request to the autocomplete REST endpoit */
async function getSuggestions(className, query) { async function getSuggestions(className, query) {
const response = await fetch(`/dbadmin/api/autocomplete/${className}?query=${query}`); const response = await fetch(`/${baseUrl}/api/autocomplete/${className}?query=${query}`);
const suggestions = await response.json(); const suggestions = await response.json();
return suggestions; return suggestions;
} }

View File

@ -12,6 +12,9 @@
<script type="text/javascript" src="/js/filters.js"></script> <script type="text/javascript" src="/js/filters.js"></script>
<script type="text/javascript" src="/js/create.js"></script> <script type="text/javascript" src="/js/create.js"></script>
<title th:text="${title != null ? title + ' | Spring Boot DB Admin Panel' : 'Spring Boot DB Admin Panel'}"></title> <title th:text="${title != null ? title + ' | Spring Boot DB Admin Panel' : 'Spring Boot DB Admin Panel'}"></title>
<script th:inline="javascript">
let baseUrl = [[ ${baseUrl} ]];
</script>
</head> </head>
<th:block th:fragment="alerts"> <th:block th:fragment="alerts">