mirror of
				https://github.com/vran-dev/databasir.git
				synced 2025-10-31 20:49:22 +08:00 
			
		
		
		
	feat: pre compile regex when sync document (#171)
This commit is contained in:
		| @@ -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(); | ||||
|     } | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user