This is an automated email from the ASF dual-hosted git repository.
fanjia pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/seatunnel.git
The following commit(s) were added to refs/heads/dev by this push:
new bf20a3e6a8 [improve] typesense options (#9398)
bf20a3e6a8 is described below
commit bf20a3e6a8971870d55c9daf60e31c14575865e0
Author: Jarvis <[email protected]>
AuthorDate: Sun Jun 29 11:40:04 2025 +0800
[improve] typesense options (#9398)
Co-authored-by: corgy-w <[email protected]>
---
.../seatunnel/api/ConnectorOptionCheckTest.java | 2 --
.../typesense/catalog/TypesenseCatalogFactory.java | 9 ++++++--
.../typesense/catalog/TypesenseTypeConverter.java | 3 ++-
.../typesense/client/TypesenseClient.java | 13 ++++++-----
...ectionConfig.java => TypesenseBaseOptions.java} | 10 +++++++-
.../{SinkConfig.java => TypesenseSinkOptions.java} | 8 +------
...urceConfig.java => TypesenseSourceOptions.java} | 8 +------
.../seatunnel/typesense/dto/CollectionInfo.java | 8 +++----
.../seatunnel/typesense/sink/TypesenseSink.java | 15 +++++-------
.../typesense/sink/TypesenseSinkFactory.java | 27 ++++++++++------------
.../typesense/source/TypesenseSource.java | 3 ++-
.../typesense/source/TypesenseSourceFactory.java | 18 ++++++++++-----
.../source/TypesenseSourceSplitEnumerator.java | 9 ++++----
.../serializer/TypesenseRowSerializerTest.java | 7 +++---
.../e2e/connector/typesense/TypesenseIT.java | 8 +++----
15 files changed, 76 insertions(+), 72 deletions(-)
diff --git
a/seatunnel-ci-tools/src/test/java/org/apache/seatunnel/api/ConnectorOptionCheckTest.java
b/seatunnel-ci-tools/src/test/java/org/apache/seatunnel/api/ConnectorOptionCheckTest.java
index 1d14dd556d..d433102de5 100644
---
a/seatunnel-ci-tools/src/test/java/org/apache/seatunnel/api/ConnectorOptionCheckTest.java
+++
b/seatunnel-ci-tools/src/test/java/org/apache/seatunnel/api/ConnectorOptionCheckTest.java
@@ -190,8 +190,6 @@ public class ConnectorOptionCheckTest {
private Set<String> buildWhiteList() {
Set<String> whiteList = new HashSet<>();
whiteList.add("JdbcSinkOptions");
- whiteList.add("TypesenseSourceOptions");
- whiteList.add("TypesenseSinkOptions");
whiteList.add("MongodbSinkOptions");
whiteList.add("SelectDBSinkOptions");
whiteList.add("PostgresIncrementalSourceOptions");
diff --git
a/seatunnel-connectors-v2/connector-typesense/src/main/java/org/apache/seatunnel/connectors/seatunnel/typesense/catalog/TypesenseCatalogFactory.java
b/seatunnel-connectors-v2/connector-typesense/src/main/java/org/apache/seatunnel/connectors/seatunnel/typesense/catalog/TypesenseCatalogFactory.java
index 0b619ad305..92d944638e 100644
---
a/seatunnel-connectors-v2/connector-typesense/src/main/java/org/apache/seatunnel/connectors/seatunnel/typesense/catalog/TypesenseCatalogFactory.java
+++
b/seatunnel-connectors-v2/connector-typesense/src/main/java/org/apache/seatunnel/connectors/seatunnel/typesense/catalog/TypesenseCatalogFactory.java
@@ -22,6 +22,7 @@ import org.apache.seatunnel.api.configuration.util.OptionRule;
import org.apache.seatunnel.api.table.catalog.Catalog;
import org.apache.seatunnel.api.table.factory.CatalogFactory;
import org.apache.seatunnel.api.table.factory.Factory;
+import
org.apache.seatunnel.connectors.seatunnel.typesense.config.TypesenseBaseOptions;
import com.google.auto.service.AutoService;
@@ -35,11 +36,15 @@ public class TypesenseCatalogFactory implements
CatalogFactory {
@Override
public String factoryIdentifier() {
- return "Typesense";
+ return TypesenseBaseOptions.CONNECTOR_IDENTITY;
}
@Override
public OptionRule optionRule() {
- return OptionRule.builder().build();
+ return OptionRule.builder()
+ .required(TypesenseBaseOptions.HOSTS)
+ .required(TypesenseBaseOptions.PROTOCOL)
+ .required(TypesenseBaseOptions.APIKEY)
+ .build();
}
}
diff --git
a/seatunnel-connectors-v2/connector-typesense/src/main/java/org/apache/seatunnel/connectors/seatunnel/typesense/catalog/TypesenseTypeConverter.java
b/seatunnel-connectors-v2/connector-typesense/src/main/java/org/apache/seatunnel/connectors/seatunnel/typesense/catalog/TypesenseTypeConverter.java
index c4cb862e29..156bb51fbb 100644
---
a/seatunnel-connectors-v2/connector-typesense/src/main/java/org/apache/seatunnel/connectors/seatunnel/typesense/catalog/TypesenseTypeConverter.java
+++
b/seatunnel-connectors-v2/connector-typesense/src/main/java/org/apache/seatunnel/connectors/seatunnel/typesense/catalog/TypesenseTypeConverter.java
@@ -26,6 +26,7 @@ import org.apache.seatunnel.api.table.type.BasicType;
import org.apache.seatunnel.api.table.type.SeaTunnelDataType;
import org.apache.seatunnel.api.table.type.SeaTunnelRowType;
import
org.apache.seatunnel.connectors.seatunnel.typesense.client.TypesenseType;
+import
org.apache.seatunnel.connectors.seatunnel.typesense.config.TypesenseBaseOptions;
import com.google.auto.service.AutoService;
@@ -40,7 +41,7 @@ public class TypesenseTypeConverter implements
BasicTypeConverter<BasicTypeDefin
@Override
public String identifier() {
- return "Typesense";
+ return TypesenseBaseOptions.CONNECTOR_IDENTITY;
}
@Override
diff --git
a/seatunnel-connectors-v2/connector-typesense/src/main/java/org/apache/seatunnel/connectors/seatunnel/typesense/client/TypesenseClient.java
b/seatunnel-connectors-v2/connector-typesense/src/main/java/org/apache/seatunnel/connectors/seatunnel/typesense/client/TypesenseClient.java
index e045d6043d..f520931d23 100644
---
a/seatunnel-connectors-v2/connector-typesense/src/main/java/org/apache/seatunnel/connectors/seatunnel/typesense/client/TypesenseClient.java
+++
b/seatunnel-connectors-v2/connector-typesense/src/main/java/org/apache/seatunnel/connectors/seatunnel/typesense/client/TypesenseClient.java
@@ -19,7 +19,8 @@ package
org.apache.seatunnel.connectors.seatunnel.typesense.client;
import org.apache.seatunnel.api.configuration.ReadonlyConfig;
import org.apache.seatunnel.api.table.converter.BasicTypeDefine;
-import
org.apache.seatunnel.connectors.seatunnel.typesense.config.TypesenseConnectionConfig;
+import
org.apache.seatunnel.connectors.seatunnel.typesense.config.TypesenseBaseOptions;
+import
org.apache.seatunnel.connectors.seatunnel.typesense.config.TypesenseSourceOptions;
import
org.apache.seatunnel.connectors.seatunnel.typesense.exception.TypesenseConnectorException;
import
org.apache.seatunnel.connectors.seatunnel.typesense.util.URLParamsConverter;
@@ -47,7 +48,6 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import static
org.apache.seatunnel.connectors.seatunnel.typesense.config.SourceConfig.QUERY_BATCH_SIZE;
import static
org.apache.seatunnel.connectors.seatunnel.typesense.exception.TypesenseConnectorErrorCode.CREATE_COLLECTION_ERROR;
import static
org.apache.seatunnel.connectors.seatunnel.typesense.exception.TypesenseConnectorErrorCode.DELETE_COLLECTION_ERROR;
import static
org.apache.seatunnel.connectors.seatunnel.typesense.exception.TypesenseConnectorErrorCode.DROP_COLLECTION_ERROR;
@@ -69,9 +69,9 @@ public class TypesenseClient {
}
public static TypesenseClient createInstance(ReadonlyConfig config) {
- List<String> hosts = config.get(TypesenseConnectionConfig.HOSTS);
- String protocol = config.get(TypesenseConnectionConfig.PROTOCOL);
- String apiKey = config.get(TypesenseConnectionConfig.APIKEY);
+ List<String> hosts = config.get(TypesenseBaseOptions.HOSTS);
+ String protocol = config.get(TypesenseBaseOptions.PROTOCOL);
+ String apiKey = config.get(TypesenseBaseOptions.APIKEY);
return createInstance(hosts, apiKey, protocol);
}
@@ -114,7 +114,8 @@ public class TypesenseClient {
}
public SearchResult search(String collection, String query, int offset)
throws Exception {
- return search(collection, query, offset,
QUERY_BATCH_SIZE.defaultValue());
+ return search(
+ collection, query, offset,
TypesenseSourceOptions.QUERY_BATCH_SIZE.defaultValue());
}
public SearchResult search(String collection, String query, int offset,
int pageSize)
diff --git
a/seatunnel-connectors-v2/connector-typesense/src/main/java/org/apache/seatunnel/connectors/seatunnel/typesense/config/TypesenseConnectionConfig.java
b/seatunnel-connectors-v2/connector-typesense/src/main/java/org/apache/seatunnel/connectors/seatunnel/typesense/config/TypesenseBaseOptions.java
similarity index 84%
rename from
seatunnel-connectors-v2/connector-typesense/src/main/java/org/apache/seatunnel/connectors/seatunnel/typesense/config/TypesenseConnectionConfig.java
rename to
seatunnel-connectors-v2/connector-typesense/src/main/java/org/apache/seatunnel/connectors/seatunnel/typesense/config/TypesenseBaseOptions.java
index 93808fc5a4..a2876018df 100644
---
a/seatunnel-connectors-v2/connector-typesense/src/main/java/org/apache/seatunnel/connectors/seatunnel/typesense/config/TypesenseConnectionConfig.java
+++
b/seatunnel-connectors-v2/connector-typesense/src/main/java/org/apache/seatunnel/connectors/seatunnel/typesense/config/TypesenseBaseOptions.java
@@ -22,7 +22,9 @@ import org.apache.seatunnel.api.configuration.Options;
import java.util.List;
-public class TypesenseConnectionConfig {
+public class TypesenseBaseOptions {
+
+ public static final String CONNECTOR_IDENTITY = "Typesense";
public static final Option<List<String>> HOSTS =
Options.key("hosts")
@@ -42,4 +44,10 @@ public class TypesenseConnectionConfig {
.stringType()
.defaultValue("http")
.withDescription("Default is http , for Typesense Cloud
use https");
+
+ public static final Option<String> COLLECTION =
+ Options.key("collection")
+ .stringType()
+ .noDefaultValue()
+ .withDescription("Typesense collection name");
}
diff --git
a/seatunnel-connectors-v2/connector-typesense/src/main/java/org/apache/seatunnel/connectors/seatunnel/typesense/config/SinkConfig.java
b/seatunnel-connectors-v2/connector-typesense/src/main/java/org/apache/seatunnel/connectors/seatunnel/typesense/config/TypesenseSinkOptions.java
similarity index 92%
rename from
seatunnel-connectors-v2/connector-typesense/src/main/java/org/apache/seatunnel/connectors/seatunnel/typesense/config/SinkConfig.java
rename to
seatunnel-connectors-v2/connector-typesense/src/main/java/org/apache/seatunnel/connectors/seatunnel/typesense/config/TypesenseSinkOptions.java
index 9912c6aa2e..7b87fbfb82 100644
---
a/seatunnel-connectors-v2/connector-typesense/src/main/java/org/apache/seatunnel/connectors/seatunnel/typesense/config/SinkConfig.java
+++
b/seatunnel-connectors-v2/connector-typesense/src/main/java/org/apache/seatunnel/connectors/seatunnel/typesense/config/TypesenseSinkOptions.java
@@ -29,13 +29,7 @@ import static
org.apache.seatunnel.api.sink.DataSaveMode.APPEND_DATA;
import static org.apache.seatunnel.api.sink.DataSaveMode.DROP_DATA;
import static
org.apache.seatunnel.api.sink.DataSaveMode.ERROR_WHEN_DATA_EXISTS;
-public class SinkConfig {
-
- public static final Option<String> COLLECTION =
- Options.key("collection")
- .stringType()
- .noDefaultValue()
- .withDescription("Typesense collection name");
+public class TypesenseSinkOptions extends TypesenseBaseOptions {
public static final Option<List<String>> PRIMARY_KEYS =
Options.key("primary_keys")
diff --git
a/seatunnel-connectors-v2/connector-typesense/src/main/java/org/apache/seatunnel/connectors/seatunnel/typesense/config/SourceConfig.java
b/seatunnel-connectors-v2/connector-typesense/src/main/java/org/apache/seatunnel/connectors/seatunnel/typesense/config/TypesenseSourceOptions.java
similarity index 84%
rename from
seatunnel-connectors-v2/connector-typesense/src/main/java/org/apache/seatunnel/connectors/seatunnel/typesense/config/SourceConfig.java
rename to
seatunnel-connectors-v2/connector-typesense/src/main/java/org/apache/seatunnel/connectors/seatunnel/typesense/config/TypesenseSourceOptions.java
index a1642331a6..caea001563 100644
---
a/seatunnel-connectors-v2/connector-typesense/src/main/java/org/apache/seatunnel/connectors/seatunnel/typesense/config/SourceConfig.java
+++
b/seatunnel-connectors-v2/connector-typesense/src/main/java/org/apache/seatunnel/connectors/seatunnel/typesense/config/TypesenseSourceOptions.java
@@ -20,13 +20,7 @@ package
org.apache.seatunnel.connectors.seatunnel.typesense.config;
import org.apache.seatunnel.api.configuration.Option;
import org.apache.seatunnel.api.configuration.Options;
-public class SourceConfig {
-
- public static final Option<String> COLLECTION =
- Options.key("collection")
- .stringType()
- .noDefaultValue()
- .withDescription("Typesense collection name");
+public class TypesenseSourceOptions extends TypesenseBaseOptions {
public static final Option<String> QUERY =
Options.key("query")
diff --git
a/seatunnel-connectors-v2/connector-typesense/src/main/java/org/apache/seatunnel/connectors/seatunnel/typesense/dto/CollectionInfo.java
b/seatunnel-connectors-v2/connector-typesense/src/main/java/org/apache/seatunnel/connectors/seatunnel/typesense/dto/CollectionInfo.java
index 9fd4892979..e2ab88c832 100644
---
a/seatunnel-connectors-v2/connector-typesense/src/main/java/org/apache/seatunnel/connectors/seatunnel/typesense/dto/CollectionInfo.java
+++
b/seatunnel-connectors-v2/connector-typesense/src/main/java/org/apache/seatunnel/connectors/seatunnel/typesense/dto/CollectionInfo.java
@@ -18,7 +18,7 @@
package org.apache.seatunnel.connectors.seatunnel.typesense.dto;
import org.apache.seatunnel.api.configuration.ReadonlyConfig;
-import org.apache.seatunnel.connectors.seatunnel.typesense.config.SinkConfig;
+import
org.apache.seatunnel.connectors.seatunnel.typesense.config.TypesenseSinkOptions;
import lombok.Data;
@@ -32,9 +32,9 @@ public class CollectionInfo {
public CollectionInfo(String collection, ReadonlyConfig config) {
this.collection = collection;
- if (config.getOptional(SinkConfig.PRIMARY_KEYS).isPresent()) {
- primaryKeys = config.get(SinkConfig.PRIMARY_KEYS).toArray(new
String[0]);
+ if (config.getOptional(TypesenseSinkOptions.PRIMARY_KEYS).isPresent())
{
+ primaryKeys =
config.get(TypesenseSinkOptions.PRIMARY_KEYS).toArray(new String[0]);
}
- keyDelimiter = config.get(SinkConfig.KEY_DELIMITER);
+ keyDelimiter = config.get(TypesenseSinkOptions.KEY_DELIMITER);
}
}
diff --git
a/seatunnel-connectors-v2/connector-typesense/src/main/java/org/apache/seatunnel/connectors/seatunnel/typesense/sink/TypesenseSink.java
b/seatunnel-connectors-v2/connector-typesense/src/main/java/org/apache/seatunnel/connectors/seatunnel/typesense/sink/TypesenseSink.java
index fe4d7190c5..c60cc37ee8 100644
---
a/seatunnel-connectors-v2/connector-typesense/src/main/java/org/apache/seatunnel/connectors/seatunnel/typesense/sink/TypesenseSink.java
+++
b/seatunnel-connectors-v2/connector-typesense/src/main/java/org/apache/seatunnel/connectors/seatunnel/typesense/sink/TypesenseSink.java
@@ -32,16 +32,13 @@ import org.apache.seatunnel.api.table.catalog.TablePath;
import org.apache.seatunnel.api.table.factory.CatalogFactory;
import org.apache.seatunnel.api.table.factory.FactoryUtil;
import org.apache.seatunnel.api.table.type.SeaTunnelRow;
-import org.apache.seatunnel.connectors.seatunnel.typesense.config.SinkConfig;
+import
org.apache.seatunnel.connectors.seatunnel.typesense.config.TypesenseSinkOptions;
import
org.apache.seatunnel.connectors.seatunnel.typesense.state.TypesenseAggregatedCommitInfo;
import
org.apache.seatunnel.connectors.seatunnel.typesense.state.TypesenseCommitInfo;
import
org.apache.seatunnel.connectors.seatunnel.typesense.state.TypesenseSinkState;
import java.util.Optional;
-import static
org.apache.seatunnel.connectors.seatunnel.typesense.config.SinkConfig.MAX_BATCH_SIZE;
-import static
org.apache.seatunnel.connectors.seatunnel.typesense.config.SinkConfig.MAX_RETRY_COUNT;
-
public class TypesenseSink
implements SeaTunnelSink<
SeaTunnelRow,
@@ -59,13 +56,13 @@ public class TypesenseSink
public TypesenseSink(ReadonlyConfig config, CatalogTable catalogTable) {
this.config = config;
this.catalogTable = catalogTable;
- maxBatchSize = config.get(MAX_BATCH_SIZE);
- maxRetryCount = config.get(MAX_RETRY_COUNT);
+ maxBatchSize = config.get(TypesenseSinkOptions.MAX_BATCH_SIZE);
+ maxRetryCount = config.get(TypesenseSinkOptions.MAX_RETRY_COUNT);
}
@Override
public String getPluginName() {
- return "Typesense";
+ return TypesenseSinkOptions.CONNECTOR_IDENTITY;
}
@Override
@@ -84,8 +81,8 @@ public class TypesenseSink
return Optional.empty();
}
Catalog catalog =
catalogFactory.createCatalog(catalogFactory.factoryIdentifier(), config);
- SchemaSaveMode schemaSaveMode =
config.get(SinkConfig.SCHEMA_SAVE_MODE);
- DataSaveMode dataSaveMode = config.get(SinkConfig.DATA_SAVE_MODE);
+ SchemaSaveMode schemaSaveMode =
config.get(TypesenseSinkOptions.SCHEMA_SAVE_MODE);
+ DataSaveMode dataSaveMode =
config.get(TypesenseSinkOptions.DATA_SAVE_MODE);
TablePath tablePath = TablePath.of("",
catalogTable.getTableId().getTableName());
catalog.open();
diff --git
a/seatunnel-connectors-v2/connector-typesense/src/main/java/org/apache/seatunnel/connectors/seatunnel/typesense/sink/TypesenseSinkFactory.java
b/seatunnel-connectors-v2/connector-typesense/src/main/java/org/apache/seatunnel/connectors/seatunnel/typesense/sink/TypesenseSinkFactory.java
index 4c93760940..e6114b10da 100644
---
a/seatunnel-connectors-v2/connector-typesense/src/main/java/org/apache/seatunnel/connectors/seatunnel/typesense/sink/TypesenseSinkFactory.java
+++
b/seatunnel-connectors-v2/connector-typesense/src/main/java/org/apache/seatunnel/connectors/seatunnel/typesense/sink/TypesenseSinkFactory.java
@@ -25,41 +25,38 @@ import org.apache.seatunnel.api.table.connector.TableSink;
import org.apache.seatunnel.api.table.factory.Factory;
import org.apache.seatunnel.api.table.factory.TableSinkFactory;
import org.apache.seatunnel.api.table.factory.TableSinkFactoryContext;
-import org.apache.seatunnel.connectors.seatunnel.typesense.config.SinkConfig;
+import
org.apache.seatunnel.connectors.seatunnel.typesense.config.TypesenseSinkOptions;
import com.google.auto.service.AutoService;
-import static
org.apache.seatunnel.connectors.seatunnel.typesense.config.SinkConfig.COLLECTION;
-import static
org.apache.seatunnel.connectors.seatunnel.typesense.config.SinkConfig.KEY_DELIMITER;
-import static
org.apache.seatunnel.connectors.seatunnel.typesense.config.SinkConfig.PRIMARY_KEYS;
-import static
org.apache.seatunnel.connectors.seatunnel.typesense.config.TypesenseConnectionConfig.APIKEY;
-import static
org.apache.seatunnel.connectors.seatunnel.typesense.config.TypesenseConnectionConfig.HOSTS;
-
@AutoService(Factory.class)
public class TypesenseSinkFactory implements TableSinkFactory {
@Override
public String factoryIdentifier() {
- return "Typesense";
+ return TypesenseSinkOptions.CONNECTOR_IDENTITY;
}
@Override
public OptionRule optionRule() {
return OptionRule.builder()
.required(
- HOSTS,
- COLLECTION,
- APIKEY,
- SinkConfig.SCHEMA_SAVE_MODE,
- SinkConfig.DATA_SAVE_MODE)
- .optional(PRIMARY_KEYS, KEY_DELIMITER)
+ TypesenseSinkOptions.HOSTS,
+ TypesenseSinkOptions.COLLECTION,
+ TypesenseSinkOptions.APIKEY,
+ TypesenseSinkOptions.SCHEMA_SAVE_MODE,
+ TypesenseSinkOptions.DATA_SAVE_MODE)
+ .optional(TypesenseSinkOptions.PRIMARY_KEYS)
+ .optional(TypesenseSinkOptions.KEY_DELIMITER)
+ .optional(TypesenseSinkOptions.MAX_BATCH_SIZE)
+ .optional(TypesenseSinkOptions.MAX_RETRY_COUNT)
.build();
}
@Override
public TableSink createSink(TableSinkFactoryContext context) {
ReadonlyConfig readonlyConfig = context.getOptions();
- String original = readonlyConfig.get(COLLECTION);
+ String original = readonlyConfig.get(TypesenseSinkOptions.COLLECTION);
CatalogTable newTable =
CatalogTable.of(
TableIdentifier.of(
diff --git
a/seatunnel-connectors-v2/connector-typesense/src/main/java/org/apache/seatunnel/connectors/seatunnel/typesense/source/TypesenseSource.java
b/seatunnel-connectors-v2/connector-typesense/src/main/java/org/apache/seatunnel/connectors/seatunnel/typesense/source/TypesenseSource.java
index f77ef63143..dc7ed68741 100644
---
a/seatunnel-connectors-v2/connector-typesense/src/main/java/org/apache/seatunnel/connectors/seatunnel/typesense/source/TypesenseSource.java
+++
b/seatunnel-connectors-v2/connector-typesense/src/main/java/org/apache/seatunnel/connectors/seatunnel/typesense/source/TypesenseSource.java
@@ -28,6 +28,7 @@ import org.apache.seatunnel.api.source.SupportParallelism;
import org.apache.seatunnel.api.table.catalog.CatalogTable;
import org.apache.seatunnel.api.table.catalog.CatalogTableUtil;
import org.apache.seatunnel.api.table.type.SeaTunnelRow;
+import
org.apache.seatunnel.connectors.seatunnel.typesense.config.TypesenseBaseOptions;
import lombok.extern.slf4j.Slf4j;
@@ -53,7 +54,7 @@ public class TypesenseSource
@Override
public String getPluginName() {
- return "Typesense";
+ return TypesenseBaseOptions.CONNECTOR_IDENTITY;
}
@Override
diff --git
a/seatunnel-connectors-v2/connector-typesense/src/main/java/org/apache/seatunnel/connectors/seatunnel/typesense/source/TypesenseSourceFactory.java
b/seatunnel-connectors-v2/connector-typesense/src/main/java/org/apache/seatunnel/connectors/seatunnel/typesense/source/TypesenseSourceFactory.java
index 254763ebbb..01aac0e1e2 100644
---
a/seatunnel-connectors-v2/connector-typesense/src/main/java/org/apache/seatunnel/connectors/seatunnel/typesense/source/TypesenseSourceFactory.java
+++
b/seatunnel-connectors-v2/connector-typesense/src/main/java/org/apache/seatunnel/connectors/seatunnel/typesense/source/TypesenseSourceFactory.java
@@ -18,32 +18,38 @@
package org.apache.seatunnel.connectors.seatunnel.typesense.source;
import org.apache.seatunnel.api.configuration.util.OptionRule;
+import org.apache.seatunnel.api.options.ConnectorCommonOptions;
import org.apache.seatunnel.api.source.SeaTunnelSource;
import org.apache.seatunnel.api.source.SourceSplit;
import org.apache.seatunnel.api.table.connector.TableSource;
import org.apache.seatunnel.api.table.factory.Factory;
import org.apache.seatunnel.api.table.factory.TableSourceFactory;
import org.apache.seatunnel.api.table.factory.TableSourceFactoryContext;
+import
org.apache.seatunnel.connectors.seatunnel.typesense.config.TypesenseSinkOptions;
+import
org.apache.seatunnel.connectors.seatunnel.typesense.config.TypesenseSourceOptions;
import com.google.auto.service.AutoService;
import java.io.Serializable;
-import static
org.apache.seatunnel.connectors.seatunnel.typesense.config.SourceConfig.COLLECTION;
-import static
org.apache.seatunnel.connectors.seatunnel.typesense.config.TypesenseConnectionConfig.APIKEY;
-import static
org.apache.seatunnel.connectors.seatunnel.typesense.config.TypesenseConnectionConfig.HOSTS;
-
@AutoService(Factory.class)
public class TypesenseSourceFactory implements TableSourceFactory {
@Override
public String factoryIdentifier() {
- return "Typesense";
+ return TypesenseSinkOptions.CONNECTOR_IDENTITY;
}
@Override
public OptionRule optionRule() {
- return OptionRule.builder().required(HOSTS,
APIKEY).optional(COLLECTION).build();
+ return OptionRule.builder()
+ .required(TypesenseSourceOptions.HOSTS,
TypesenseSourceOptions.APIKEY)
+ .optional(TypesenseSourceOptions.PROTOCOL)
+ .optional(TypesenseSourceOptions.QUERY)
+ .optional(TypesenseSourceOptions.QUERY_BATCH_SIZE)
+ .optional(TypesenseSourceOptions.COLLECTION)
+ .optional(ConnectorCommonOptions.SCHEMA)
+ .build();
}
@Override
diff --git
a/seatunnel-connectors-v2/connector-typesense/src/main/java/org/apache/seatunnel/connectors/seatunnel/typesense/source/TypesenseSourceSplitEnumerator.java
b/seatunnel-connectors-v2/connector-typesense/src/main/java/org/apache/seatunnel/connectors/seatunnel/typesense/source/TypesenseSourceSplitEnumerator.java
index 55c4018856..0088a32a2b 100644
---
a/seatunnel-connectors-v2/connector-typesense/src/main/java/org/apache/seatunnel/connectors/seatunnel/typesense/source/TypesenseSourceSplitEnumerator.java
+++
b/seatunnel-connectors-v2/connector-typesense/src/main/java/org/apache/seatunnel/connectors/seatunnel/typesense/source/TypesenseSourceSplitEnumerator.java
@@ -21,7 +21,8 @@ import org.apache.seatunnel.api.configuration.ReadonlyConfig;
import org.apache.seatunnel.api.source.SourceSplitEnumerator;
import org.apache.seatunnel.common.exception.CommonErrorCodeDeprecated;
import
org.apache.seatunnel.connectors.seatunnel.typesense.client.TypesenseClient;
-import org.apache.seatunnel.connectors.seatunnel.typesense.config.SourceConfig;
+import
org.apache.seatunnel.connectors.seatunnel.typesense.config.TypesenseBaseOptions;
+import
org.apache.seatunnel.connectors.seatunnel.typesense.config.TypesenseSourceOptions;
import
org.apache.seatunnel.connectors.seatunnel.typesense.dto.SourceCollectionInfo;
import
org.apache.seatunnel.connectors.seatunnel.typesense.exception.TypesenseConnectorException;
@@ -132,9 +133,9 @@ public class TypesenseSourceSplitEnumerator
private List<TypesenseSourceSplit> getTypesenseSplit() {
List<TypesenseSourceSplit> splits = new ArrayList<>();
- String collection = config.get(SourceConfig.COLLECTION);
- String query = config.get(SourceConfig.QUERY);
- int queryBatchSize = config.get(SourceConfig.QUERY_BATCH_SIZE);
+ String collection = config.get(TypesenseBaseOptions.COLLECTION);
+ String query = config.get(TypesenseSourceOptions.QUERY);
+ int queryBatchSize =
config.get(TypesenseSourceOptions.QUERY_BATCH_SIZE);
splits.add(
new TypesenseSourceSplit(
collection,
diff --git
a/seatunnel-connectors-v2/connector-typesense/src/test/java/org/apache/seatunnel/connectors/seatunnel/typesense/serializer/TypesenseRowSerializerTest.java
b/seatunnel-connectors-v2/connector-typesense/src/test/java/org/apache/seatunnel/connectors/seatunnel/typesense/serializer/TypesenseRowSerializerTest.java
index bb604869ff..cdc7fe66c8 100644
---
a/seatunnel-connectors-v2/connector-typesense/src/test/java/org/apache/seatunnel/connectors/seatunnel/typesense/serializer/TypesenseRowSerializerTest.java
+++
b/seatunnel-connectors-v2/connector-typesense/src/test/java/org/apache/seatunnel/connectors/seatunnel/typesense/serializer/TypesenseRowSerializerTest.java
@@ -22,7 +22,8 @@ import org.apache.seatunnel.api.table.type.RowKind;
import org.apache.seatunnel.api.table.type.SeaTunnelDataType;
import org.apache.seatunnel.api.table.type.SeaTunnelRow;
import org.apache.seatunnel.api.table.type.SeaTunnelRowType;
-import org.apache.seatunnel.connectors.seatunnel.typesense.config.SinkConfig;
+import
org.apache.seatunnel.connectors.seatunnel.typesense.config.TypesenseBaseOptions;
+import
org.apache.seatunnel.connectors.seatunnel.typesense.config.TypesenseSinkOptions;
import org.apache.seatunnel.connectors.seatunnel.typesense.dto.CollectionInfo;
import
org.apache.seatunnel.connectors.seatunnel.typesense.serialize.sink.TypesenseRowSerializer;
@@ -41,8 +42,8 @@ public class TypesenseRowSerializerTest {
String collection = "test";
String primaryKey = "id";
Map<String, Object> confMap = new HashMap<>();
- confMap.put(SinkConfig.COLLECTION.key(), collection);
- confMap.put(SinkConfig.PRIMARY_KEYS.key(), Arrays.asList(primaryKey));
+ confMap.put(TypesenseBaseOptions.COLLECTION.key(), collection);
+ confMap.put(TypesenseSinkOptions.PRIMARY_KEYS.key(),
Arrays.asList(primaryKey));
ReadonlyConfig pluginConf = ReadonlyConfig.fromMap(confMap);
CollectionInfo collectionInfo = new CollectionInfo(collection,
pluginConf);
diff --git
a/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-typesense-e2e/src/test/java/org/apache/seatunnel/e2e/connector/typesense/TypesenseIT.java
b/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-typesense-e2e/src/test/java/org/apache/seatunnel/e2e/connector/typesense/TypesenseIT.java
index 3baa0b8c02..133fb450f6 100644
---
a/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-typesense-e2e/src/test/java/org/apache/seatunnel/e2e/connector/typesense/TypesenseIT.java
+++
b/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-typesense-e2e/src/test/java/org/apache/seatunnel/e2e/connector/typesense/TypesenseIT.java
@@ -33,7 +33,7 @@ import
org.apache.seatunnel.api.table.catalog.exception.TableNotExistException;
import org.apache.seatunnel.api.table.type.BasicType;
import
org.apache.seatunnel.connectors.seatunnel.typesense.catalog.TypesenseCatalog;
import
org.apache.seatunnel.connectors.seatunnel.typesense.client.TypesenseClient;
-import
org.apache.seatunnel.connectors.seatunnel.typesense.config.TypesenseConnectionConfig;
+import
org.apache.seatunnel.connectors.seatunnel.typesense.config.TypesenseBaseOptions;
import org.apache.seatunnel.e2e.common.TestResource;
import org.apache.seatunnel.e2e.common.TestSuiteBase;
import org.apache.seatunnel.e2e.common.container.TestContainer;
@@ -110,9 +110,9 @@ public class TypesenseIT extends TestSuiteBase implements
TestResource {
private void initConnection() {
String host = typesenseServer.getContainerIpAddress();
Map<String, Object> config = new HashMap<>();
- config.put(TypesenseConnectionConfig.HOSTS.key(),
Lists.newArrayList(host + ":8108"));
- config.put(TypesenseConnectionConfig.APIKEY.key(), "xyz");
- config.put(TypesenseConnectionConfig.PROTOCOL.key(), "http");
+ config.put(TypesenseBaseOptions.HOSTS.key(), Lists.newArrayList(host +
":8108"));
+ config.put(TypesenseBaseOptions.APIKEY.key(), "xyz");
+ config.put(TypesenseBaseOptions.PROTOCOL.key(), "http");
ReadonlyConfig readonlyConfig = ReadonlyConfig.fromMap(config);
typesenseClient = TypesenseClient.createInstance(readonlyConfig);