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.IOException; | ||||||
| import java.io.OutputStream; | import java.io.OutputStream; | ||||||
| import java.sql.Connection; | import java.sql.Connection; | ||||||
|  | import java.util.List; | ||||||
| import java.util.Optional; | import java.util.Optional; | ||||||
|  | import java.util.regex.Pattern; | ||||||
|  | import java.util.stream.Collectors; | ||||||
|  |  | ||||||
| @RequiredArgsConstructor | @RequiredArgsConstructor | ||||||
| @Getter | @Getter | ||||||
| @@ -20,11 +23,18 @@ public class Databasir { | |||||||
|     private final DatabasirConfig config; |     private final DatabasirConfig config; | ||||||
|  |  | ||||||
|     public Optional<DatabaseMeta> get(Connection connection, String databaseName, String schemaName) { |     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() |         Condition condition = Condition.builder() | ||||||
|                 .databaseName(databaseName) |                 .databaseName(databaseName) | ||||||
|                 .schemaName(schemaName) |                 .schemaName(schemaName) | ||||||
|                 .ignoreTableNameRegex(config.getIgnoreTableNameRegex()) |                 .ignoreTableNamePatterns(ignoreTableNamePatterns) | ||||||
|                 .ignoreTableColumnNameRegex(config.getIgnoreTableColumnNameRegex()) |                 .ignoreTableColumnNamePatterns(ignoreTableColumnPatterns) | ||||||
|                 .build(); |                 .build(); | ||||||
|         return MetaProviders |         return MetaProviders | ||||||
|                 .of(connection) |                 .of(connection) | ||||||
|   | |||||||
| @@ -19,16 +19,18 @@ public class Condition { | |||||||
|     private String schemaName; |     private String schemaName; | ||||||
|  |  | ||||||
|     @Builder.Default |     @Builder.Default | ||||||
|     private Collection<String> ignoreTableNameRegex = Collections.emptyList(); |     @Builder.ObtainVia(method = "ignoreTableNameRegexes") | ||||||
|  |     private Collection<Pattern> ignoreTableNamePatterns = Collections.emptyList(); | ||||||
|  |  | ||||||
|     @Builder.Default |     @Builder.Default | ||||||
|     private Collection<String> ignoreTableColumnNameRegex = Collections.emptyList(); |     @Builder.ObtainVia(method = "ignoreTableColumnNameRegexes") | ||||||
|  |     private Collection<Pattern> ignoreTableColumnNamePatterns = Collections.emptyList(); | ||||||
|  |  | ||||||
|     public boolean tableIsIgnored(String tableName) { |     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) { |     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()) |                 .databaseName(condition.getDatabaseName()) | ||||||
|                 .tableName(tableName) |                 .tableName(tableName) | ||||||
|                 .schemaName(condition.getSchemaName()) |                 .schemaName(condition.getSchemaName()) | ||||||
|                 .ignoreTableNameRegex(condition.getIgnoreTableNameRegex()) |                 .ignoreTableNamePatterns(condition.getIgnoreTableNamePatterns()) | ||||||
|                 .ignoreTableColumnNameRegex(condition.getIgnoreTableColumnNameRegex()) |                 .ignoreTableColumnNamePatterns(condition.getIgnoreTableColumnNamePatterns()) | ||||||
|                 .build(); |                 .build(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user