Added appropriate service layer to all internal classes in order to be able to use the TransactionTemplate

This commit is contained in:
Francesco 2023-10-26 12:17:14 +02:00
parent 298ec067c5
commit 299082d891
3 changed files with 57 additions and 5 deletions

View File

@ -72,8 +72,9 @@ import tech.ailef.dbadmin.internal.model.ConsoleQuery;
import tech.ailef.dbadmin.internal.model.UserAction; import tech.ailef.dbadmin.internal.model.UserAction;
import tech.ailef.dbadmin.internal.model.UserSetting; import tech.ailef.dbadmin.internal.model.UserSetting;
import tech.ailef.dbadmin.internal.repository.ConsoleQueryRepository; import tech.ailef.dbadmin.internal.repository.ConsoleQueryRepository;
import tech.ailef.dbadmin.internal.repository.UserSettingsRepository; import tech.ailef.dbadmin.internal.service.ConsoleQueryService;
import tech.ailef.dbadmin.internal.service.UserActionService; import tech.ailef.dbadmin.internal.service.UserActionService;
import tech.ailef.dbadmin.internal.service.UserSettingsService;
/** /**
* The main DbAdmin controller that register most of the routes of the web interface. * The main DbAdmin controller that register most of the routes of the web interface.
@ -97,7 +98,10 @@ public class DefaultDbAdminController {
private ConsoleQueryRepository consoleQueryRepository; private ConsoleQueryRepository consoleQueryRepository;
@Autowired @Autowired
private UserSettingsRepository userSettingsRepo; private ConsoleQueryService consoleService;
@Autowired
private UserSettingsService userSettingsService;
/** /**
* Home page with list of schemas * Home page with list of schemas
@ -564,7 +568,7 @@ public class DefaultDbAdminController {
if (tabs.isEmpty()) { if (tabs.isEmpty()) {
ConsoleQuery q = new ConsoleQuery(); ConsoleQuery q = new ConsoleQuery();
consoleQueryRepository.save(q); consoleService.save(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();
@ -608,7 +612,7 @@ public class DefaultDbAdminController {
} }
activeQuery.setUpdatedAt(LocalDateTime.now()); activeQuery.setUpdatedAt(LocalDateTime.now());
consoleQueryRepository.save(activeQuery); consoleService.save(activeQuery);
model.addAttribute("activePage", "console"); model.addAttribute("activePage", "console");
model.addAttribute("activeQuery", activeQuery); model.addAttribute("activeQuery", activeQuery);
@ -651,7 +655,7 @@ public class DefaultDbAdminController {
for (String paramName : params.keySet()) { for (String paramName : params.keySet()) {
if (paramName.equals("next")) continue; if (paramName.equals("next")) continue;
userSettingsRepo.save(new UserSetting(paramName, params.get(paramName))); userSettingsService.save(new UserSetting(paramName, params.get(paramName)));
} }
model.addAttribute("activePage", "settings"); model.addAttribute("activePage", "settings");
return next; return next;

View File

@ -0,0 +1,24 @@
package tech.ailef.dbadmin.internal.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.support.TransactionTemplate;
import tech.ailef.dbadmin.internal.model.ConsoleQuery;
import tech.ailef.dbadmin.internal.repository.ConsoleQueryRepository;
@Service
public class ConsoleQueryService {
@Autowired
private TransactionTemplate internalTransactionTemplate;
@Autowired
private ConsoleQueryRepository repo;
public ConsoleQuery save(ConsoleQuery q) {
return internalTransactionTemplate.execute((status) -> {
return repo.save(q);
});
}
}

View File

@ -0,0 +1,24 @@
package tech.ailef.dbadmin.internal.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.support.TransactionTemplate;
import tech.ailef.dbadmin.internal.model.UserSetting;
import tech.ailef.dbadmin.internal.repository.UserSettingsRepository;
@Service
public class UserSettingsService {
@Autowired
private TransactionTemplate internalTransactionTemplate;
@Autowired
private UserSettingsRepository repo;
public UserSetting save(UserSetting q) {
return internalTransactionTemplate.execute((status) -> {
return repo.save(q);
});
}
}