mirror of
https://github.com/vran-dev/databasir.git
synced 2025-08-08 18:08:18 +08:00
feat:support custom url pattern
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
package com.databasir.api;
|
||||
|
||||
import com.databasir.api.validator.DatabaseTypeValidator;
|
||||
import com.databasir.common.JsonData;
|
||||
import com.databasir.core.domain.database.data.*;
|
||||
import com.databasir.core.domain.database.service.DatabaseTypeService;
|
||||
@@ -24,6 +25,8 @@ public class DatabaseTypeController {
|
||||
|
||||
private final DatabaseTypeService databaseTypeService;
|
||||
|
||||
private final DatabaseTypeValidator databaseTypeValidator;
|
||||
|
||||
@GetMapping(Routes.DatabaseType.LIST_SIMPLE)
|
||||
public JsonData<List<String>> listSimpleDatabaseTypes() {
|
||||
List<String> types = databaseTypeService.listSimpleDatabaseTypes();
|
||||
@@ -41,6 +44,7 @@ public class DatabaseTypeController {
|
||||
@PostMapping(Routes.DatabaseType.CREATE)
|
||||
@Operation(module = Operation.Modules.DATABASE_TYPE, name = "创建数据库类型")
|
||||
public JsonData<Integer> create(@RequestBody @Valid DatabaseTypeCreateRequest request) {
|
||||
databaseTypeValidator.isValidUrlPattern(request.getUrlPattern());
|
||||
Integer id = databaseTypeService.create(request);
|
||||
return JsonData.ok(id);
|
||||
}
|
||||
@@ -48,6 +52,7 @@ public class DatabaseTypeController {
|
||||
@PatchMapping(Routes.DatabaseType.UPDATE)
|
||||
@Operation(module = Operation.Modules.DATABASE_TYPE, name = "更新数据库类型")
|
||||
public JsonData<Void> update(@RequestBody @Valid DatabaseTypeUpdateRequest request) {
|
||||
databaseTypeValidator.isValidUrlPattern(request.getUrlPattern());
|
||||
databaseTypeService.update(request);
|
||||
return JsonData.ok();
|
||||
}
|
||||
|
@@ -0,0 +1,23 @@
|
||||
package com.databasir.api.validator;
|
||||
|
||||
import com.databasir.core.domain.DomainErrors;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
public class DatabaseTypeValidator {
|
||||
|
||||
public void isValidUrlPattern(String urlPattern) {
|
||||
if (urlPattern == null) {
|
||||
throw DomainErrors.INVALID_DATABASE_TYPE_URL_PATTERN.exception("url pattern 不能为空");
|
||||
}
|
||||
if (!urlPattern.contains("{{jdbc.protocol}}")) {
|
||||
throw DomainErrors.INVALID_DATABASE_TYPE_URL_PATTERN.exception("必须包含变量{{jdbc.protocol}}");
|
||||
}
|
||||
if (!urlPattern.contains("{{db.url}}")) {
|
||||
throw DomainErrors.INVALID_DATABASE_TYPE_URL_PATTERN.exception("必须包含变量{{db.url}}不能为空");
|
||||
}
|
||||
if (!urlPattern.contains("{{db.name}}")) {
|
||||
throw DomainErrors.INVALID_DATABASE_TYPE_URL_PATTERN.exception("必须包含变量{{db.name}}不能为空");
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user