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);

Reply via email to