Feature: make description optional when save project or group (#113)

* feat: make description field optional

* feat: update frontend resources

* fix: ut failed
This commit is contained in:
vran 2022-04-20 19:15:16 +08:00 committed by GitHub
parent 0badba566a
commit c1f7d1e99d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
35 changed files with 44 additions and 35 deletions

View File

@ -1 +1 @@
<!doctype html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="/favicon.ico"><title>databasir</title><script defer="defer" type="module" src="/js/chunk-vendors.787360f3.js"></script><script defer="defer" type="module" src="/js/app.c9efd150.js"></script><link href="/css/chunk-vendors.8e1003a6.css" rel="stylesheet"><link href="/css/app.15b40a89.css" rel="stylesheet"><script defer="defer" src="/js/chunk-vendors-legacy.405c78b5.js" nomodule></script><script defer="defer" src="/js/app-legacy.57eb4513.js" nomodule></script></head><body><noscript><strong>We're sorry but databasir doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div></body></html>
<!doctype html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="/favicon.ico"><title>databasir</title><script defer="defer" type="module" src="/js/chunk-vendors.787360f3.js"></script><script defer="defer" type="module" src="/js/app.1e655dc8.js"></script><link href="/css/chunk-vendors.8e1003a6.css" rel="stylesheet"><link href="/css/app.15b40a89.css" rel="stylesheet"><script defer="defer" src="/js/chunk-vendors-legacy.405c78b5.js" nomodule></script><script defer="defer" src="/js/app-legacy.2730dbc0.js" nomodule></script></head><body><noscript><strong>We're sorry but databasir doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div></body></html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -19,4 +19,8 @@ public interface GroupPojoConverter {
@Mapping(target = "createAt", ignore = true)
@Mapping(target = "updateAt", ignore = true)
GroupPojo of(GroupUpdateRequest groupUpdateRequest);
default String nullToEmpty(String description) {
return description == null ? "" : description;
}
}

View File

@ -14,7 +14,6 @@ public class GroupCreateRequest {
@NotBlank
private String name;
@NotBlank
private String description;
@NotEmpty

View File

@ -17,7 +17,6 @@ public class GroupUpdateRequest {
@NotBlank
private String name;
@NotBlank
private String description;
@NotEmpty

View File

@ -9,6 +9,8 @@ import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.ReportingPolicy;
import java.util.Optional;
@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE, uses = JsonConverter.class)
public interface ProjectPojoConverter {
@ -25,4 +27,8 @@ public interface ProjectPojoConverter {
@Mapping(target = "ignoreColumnNameRegexArray", source = "request.ignoreColumnNameRegexes")
ProjectSyncRulePojo of(ProjectUpdateRequest.ProjectSyncRuleUpdateRequest request,
Integer projectId);
default String optionToEmpty(Optional<String> optional) {
return optional.orElse("");
}
}

View File

@ -6,6 +6,7 @@ import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
@Data
public class ProjectCreateRequest {
@ -13,8 +14,7 @@ public class ProjectCreateRequest {
@NotBlank
private String name;
@NotBlank
private String description;
private Optional<String> description = Optional.empty();
@NotNull
private Integer groupId;

View File

@ -6,6 +6,7 @@ import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
@Data
public class ProjectUpdateRequest {
@ -16,8 +17,7 @@ public class ProjectUpdateRequest {
@NotBlank
private String name;
@NotBlank
private String description;
private Optional<String> description = Optional.empty();
@NotNull
private ProjectUpdateRequest.DataSourceUpdateRequest dataSource;

View File

@ -20,6 +20,7 @@ import org.springframework.test.context.jdbc.Sql;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Optional;
@Transactional
class ProjectServiceTest extends BaseTest {
@ -46,7 +47,7 @@ class ProjectServiceTest extends BaseTest {
void create() {
ProjectCreateRequest request = new ProjectCreateRequest();
request.setName("ut");
request.setDescription("integration test");
request.setDescription(Optional.of("integration test"));
request.setGroupId(-1000);
DataSourceCreateRequest dataSource = new DataSourceCreateRequest();
@ -76,7 +77,7 @@ class ProjectServiceTest extends BaseTest {
ProjectUpdateRequest request = new ProjectUpdateRequest();
request.setId(-1000);
request.setName("ut");
request.setDescription("integration test");
request.setDescription(Optional.of("integration test"));
var dataSource = new ProjectUpdateRequest.DataSourceUpdateRequest();
dataSource.setUsername("root");