feat: pre compile regex when sync document
This commit is contained in:
parent
1f185321fe
commit
909f29aef7
|
@ -11,7 +11,10 @@ import lombok.RequiredArgsConstructor;
|
|||
import java.io.IOException;
|
||||
import java.io.OutputStream;
|
||||
import java.sql.Connection;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.regex.Pattern;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
@Getter
|
||||
|
@ -20,11 +23,18 @@ public class Databasir {
|
|||
private final DatabasirConfig config;
|
||||
|
||||
public Optional<DatabaseMeta> get(Connection connection, String databaseName, String schemaName) {
|
||||
// pre compile regex
|
||||
List<Pattern> ignoreTableColumnPatterns = config.getIgnoreTableColumnNameRegex().stream()
|
||||
.map(Pattern::compile)
|
||||
.collect(Collectors.toList());
|
||||
List<Pattern> ignoreTableNamePatterns = config.getIgnoreTableNameRegex().stream()
|
||||
.map(Pattern::compile)
|
||||
.collect(Collectors.toList());
|
||||
Condition condition = Condition.builder()
|
||||
.databaseName(databaseName)
|
||||
.schemaName(schemaName)
|
||||
.ignoreTableNameRegex(config.getIgnoreTableNameRegex())
|
||||
.ignoreTableColumnNameRegex(config.getIgnoreTableColumnNameRegex())
|
||||
.ignoreTableNamePatterns(ignoreTableNamePatterns)
|
||||
.ignoreTableColumnNamePatterns(ignoreTableColumnPatterns)
|
||||
.build();
|
||||
return MetaProviders
|
||||
.of(connection)
|
||||
|
|
|
@ -19,16 +19,18 @@ public class Condition {
|
|||
private String schemaName;
|
||||
|
||||
@Builder.Default
|
||||
private Collection<String> ignoreTableNameRegex = Collections.emptyList();
|
||||
@Builder.ObtainVia(method = "ignoreTableNameRegexes")
|
||||
private Collection<Pattern> ignoreTableNamePatterns = Collections.emptyList();
|
||||
|
||||
@Builder.Default
|
||||
private Collection<String> ignoreTableColumnNameRegex = Collections.emptyList();
|
||||
@Builder.ObtainVia(method = "ignoreTableColumnNameRegexes")
|
||||
private Collection<Pattern> ignoreTableColumnNamePatterns = Collections.emptyList();
|
||||
|
||||
public boolean tableIsIgnored(String tableName) {
|
||||
return ignoreTableNameRegex.stream().anyMatch(regex -> Pattern.matches(regex, tableName));
|
||||
return ignoreTableNamePatterns.stream().anyMatch(regex -> regex.matcher(tableName).matches());
|
||||
}
|
||||
|
||||
public boolean columnIsIgnored(String column) {
|
||||
return ignoreTableColumnNameRegex.stream().anyMatch(regex -> Pattern.matches(regex, column));
|
||||
return ignoreTableColumnNamePatterns.stream().anyMatch(regex -> regex.matcher(column).matches());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -16,8 +16,8 @@ public class TableCondition extends Condition {
|
|||
.databaseName(condition.getDatabaseName())
|
||||
.tableName(tableName)
|
||||
.schemaName(condition.getSchemaName())
|
||||
.ignoreTableNameRegex(condition.getIgnoreTableNameRegex())
|
||||
.ignoreTableColumnNameRegex(condition.getIgnoreTableColumnNameRegex())
|
||||
.ignoreTableNamePatterns(condition.getIgnoreTableNamePatterns())
|
||||
.ignoreTableColumnNamePatterns(condition.getIgnoreTableColumnNamePatterns())
|
||||
.build();
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue