diff --git a/src/main/java/tech/ailef/dbadmin/external/DbAdminAutoConfiguration.java b/src/main/java/tech/ailef/dbadmin/external/DbAdminAutoConfiguration.java index 9313a15..7f11371 100644 --- a/src/main/java/tech/ailef/dbadmin/external/DbAdminAutoConfiguration.java +++ b/src/main/java/tech/ailef/dbadmin/external/DbAdminAutoConfiguration.java @@ -40,10 +40,11 @@ public class DbAdminAutoConfiguration { public DataSource internalDataSource() { DataSourceBuilder dataSourceBuilder = DataSourceBuilder.create(); dataSourceBuilder.driverClassName("org.h2.Driver"); - if (props.isTestMode()) + if (props.isTestMode()) { dataSourceBuilder.url("jdbc:h2:mem:test"); - else + } else { dataSourceBuilder.url("jdbc:h2:file:./dbadmin_internal"); + } dataSourceBuilder.username("sa"); dataSourceBuilder.password("password"); diff --git a/src/main/java/tech/ailef/dbadmin/external/controller/DefaultDbAdminController.java b/src/main/java/tech/ailef/dbadmin/external/controller/DefaultDbAdminController.java index ac3ddc1..7f75d3a 100644 --- a/src/main/java/tech/ailef/dbadmin/external/controller/DefaultDbAdminController.java +++ b/src/main/java/tech/ailef/dbadmin/external/controller/DefaultDbAdminController.java @@ -19,6 +19,7 @@ import org.springframework.util.MultiValueMap; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.multipart.MultipartFile; @@ -39,6 +40,8 @@ import tech.ailef.dbadmin.external.dto.QueryFilter; import tech.ailef.dbadmin.external.exceptions.InvalidPageException; import tech.ailef.dbadmin.external.misc.Utils; import tech.ailef.dbadmin.internal.model.UserAction; +import tech.ailef.dbadmin.internal.model.UserSetting; +import tech.ailef.dbadmin.internal.repository.UserSettingsRepository; import tech.ailef.dbadmin.internal.service.UserActionService; /** @@ -59,12 +62,9 @@ public class DefaultDbAdminController { @Autowired private UserActionService userActionService; -// @Autowired -// private ActionRepository repo; -// -// @Autowired -// private CustomActionRepositoryImpl customRepo; - + + @Autowired + private UserSettingsRepository userSettingsRepo; /** * Home page with list of schemas @@ -456,7 +456,15 @@ public class DefaultDbAdminController { return "settings"; } -// @Transactional("internalTransactionManager") + @PostMapping("/settings") + public String settings(@RequestParam Map params, Model model) { + for (String paramName : params.keySet()) { + userSettingsRepo.save(new UserSetting(paramName, params.get(paramName))); + } + model.addAttribute("activePage", "settings"); + return "settings"; + } + private UserAction saveAction(UserAction action) { return userActionService.save(action); } diff --git a/src/main/java/tech/ailef/dbadmin/external/controller/GlobalController.java b/src/main/java/tech/ailef/dbadmin/external/controller/GlobalController.java index 1b45540..dc52283 100644 --- a/src/main/java/tech/ailef/dbadmin/external/controller/GlobalController.java +++ b/src/main/java/tech/ailef/dbadmin/external/controller/GlobalController.java @@ -8,6 +8,7 @@ import org.springframework.web.bind.annotation.ModelAttribute; import jakarta.servlet.http.HttpServletRequest; import tech.ailef.dbadmin.external.DbAdminProperties; +import tech.ailef.dbadmin.internal.UserConfiguration; /** * This class registers some ModelAttribute objects that are @@ -18,6 +19,9 @@ public class GlobalController { @Autowired private DbAdminProperties props; + + @Autowired + private UserConfiguration userConf; /** * A multi valued map containing the query parameters. It is used primarily @@ -44,4 +48,10 @@ public class GlobalController { public String getRequestUrl(HttpServletRequest request) { return request.getRequestURI(); } -} \ No newline at end of file + + @ModelAttribute("userConf") + public UserConfiguration getUserConf() { + return userConf; + } +} + diff --git a/src/main/java/tech/ailef/dbadmin/internal/UserConfiguration.java b/src/main/java/tech/ailef/dbadmin/internal/UserConfiguration.java new file mode 100644 index 0000000..b01ac53 --- /dev/null +++ b/src/main/java/tech/ailef/dbadmin/internal/UserConfiguration.java @@ -0,0 +1,30 @@ +package tech.ailef.dbadmin.internal; + +import java.util.HashMap; +import java.util.Map; +import java.util.Optional; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import tech.ailef.dbadmin.internal.model.UserSetting; +import tech.ailef.dbadmin.internal.repository.UserSettingsRepository; + +@Component +public class UserConfiguration { + @Autowired + private UserSettingsRepository repo; + + public String get(String settingName) { + Optional setting = repo.findById(settingName); + if (setting.isPresent()) + return setting.get().getSettingValue(); + return defaultValues().get(settingName); + } + + private Map defaultValues() { + Map values = new HashMap<>(); + values.put("brandName", "Spring Boot Database Admin"); + return values; + } +} diff --git a/src/main/java/tech/ailef/dbadmin/internal/model/UserSetting.java b/src/main/java/tech/ailef/dbadmin/internal/model/UserSetting.java index 700b9cb..6b6b469 100644 --- a/src/main/java/tech/ailef/dbadmin/internal/model/UserSetting.java +++ b/src/main/java/tech/ailef/dbadmin/internal/model/UserSetting.java @@ -8,7 +8,15 @@ public class UserSetting { @Id private String id; - private String value; + private String settingValue; + + public UserSetting() { + } + + public UserSetting(String id, String settingValue) { + this.id = id; + this.settingValue = settingValue; + } public String getId() { return id; @@ -18,12 +26,12 @@ public class UserSetting { this.id = id; } - public String getValue() { - return value; + public String getSettingValue() { + return settingValue; } - - public void setValue(String value) { - this.value = value; + + public void setSettingValue(String settingValue) { + this.settingValue = settingValue; } } diff --git a/src/main/java/tech/ailef/dbadmin/internal/repository/UserSettingsRepository.java b/src/main/java/tech/ailef/dbadmin/internal/repository/UserSettingsRepository.java index f129d1a..a16fc0f 100644 --- a/src/main/java/tech/ailef/dbadmin/internal/repository/UserSettingsRepository.java +++ b/src/main/java/tech/ailef/dbadmin/internal/repository/UserSettingsRepository.java @@ -6,6 +6,6 @@ import org.springframework.stereotype.Repository; import tech.ailef.dbadmin.internal.model.UserSetting; @Repository -public interface UserSettingsRepository extends JpaRepository { +public interface UserSettingsRepository extends JpaRepository { } diff --git a/src/main/resources/templates/fragments/resources.html b/src/main/resources/templates/fragments/resources.html index a7dc215..bc5b8a0 100644 --- a/src/main/resources/templates/fragments/resources.html +++ b/src/main/resources/templates/fragments/resources.html @@ -31,7 +31,9 @@