diff --git a/en/docs/assets/img/integrate/connectors/db-store.png b/en/docs/assets/img/integrate/connectors/db-store.png new file mode 100644 index 000000000..0490bae5c Binary files /dev/null and b/en/docs/assets/img/integrate/connectors/db-store.png differ diff --git a/en/docs/assets/img/integrate/connectors/db/add-connection-details.png b/en/docs/assets/img/integrate/connectors/db/add-connection-details.png new file mode 100644 index 000000000..db86d904c Binary files /dev/null and b/en/docs/assets/img/integrate/connectors/db/add-connection-details.png differ diff --git a/en/docs/assets/img/integrate/connectors/db/add-connector.png b/en/docs/assets/img/integrate/connectors/db/add-connector.png new file mode 100644 index 000000000..088d595b4 Binary files /dev/null and b/en/docs/assets/img/integrate/connectors/db/add-connector.png differ diff --git a/en/docs/assets/img/integrate/connectors/db/add-mysql-connection.png b/en/docs/assets/img/integrate/connectors/db/add-mysql-connection.png new file mode 100644 index 000000000..7fb89ff34 Binary files /dev/null and b/en/docs/assets/img/integrate/connectors/db/add-mysql-connection.png differ diff --git a/en/docs/assets/img/integrate/connectors/db/add-query-param.png b/en/docs/assets/img/integrate/connectors/db/add-query-param.png new file mode 100644 index 000000000..0f2032743 Binary files /dev/null and b/en/docs/assets/img/integrate/connectors/db/add-query-param.png differ diff --git a/en/docs/assets/img/integrate/connectors/db/begintransaction-operation.png b/en/docs/assets/img/integrate/connectors/db/begintransaction-operation.png new file mode 100644 index 000000000..fce4027fb Binary files /dev/null and b/en/docs/assets/img/integrate/connectors/db/begintransaction-operation.png differ diff --git a/en/docs/assets/img/integrate/connectors/db/complete-flow.png b/en/docs/assets/img/integrate/connectors/db/complete-flow.png new file mode 100644 index 000000000..7545d1913 Binary files /dev/null and b/en/docs/assets/img/integrate/connectors/db/complete-flow.png differ diff --git a/en/docs/assets/img/integrate/connectors/db/connector-operations.png b/en/docs/assets/img/integrate/connectors/db/connector-operations.png new file mode 100644 index 000000000..0327dc66a Binary files /dev/null and b/en/docs/assets/img/integrate/connectors/db/connector-operations.png differ diff --git a/en/docs/assets/img/integrate/connectors/db/execute-query-operation.png b/en/docs/assets/img/integrate/connectors/db/execute-query-operation.png new file mode 100644 index 000000000..f2a73318f Binary files /dev/null and b/en/docs/assets/img/integrate/connectors/db/execute-query-operation.png differ diff --git a/en/docs/assets/img/integrate/connectors/db/filter.png b/en/docs/assets/img/integrate/connectors/db/filter.png new file mode 100644 index 000000000..02768a769 Binary files /dev/null and b/en/docs/assets/img/integrate/connectors/db/filter.png differ diff --git a/en/docs/assets/img/integrate/connectors/db/insert-operation.png b/en/docs/assets/img/integrate/connectors/db/insert-operation.png new file mode 100644 index 000000000..23e68eaf9 Binary files /dev/null and b/en/docs/assets/img/integrate/connectors/db/insert-operation.png differ diff --git a/en/docs/assets/img/integrate/connectors/db/select-operation.png b/en/docs/assets/img/integrate/connectors/db/select-operation.png new file mode 100644 index 000000000..235a01f91 Binary files /dev/null and b/en/docs/assets/img/integrate/connectors/db/select-operation.png differ diff --git a/en/docs/reference/connectors/db-connector/db-connector-config.md b/en/docs/reference/connectors/db-connector/db-connector-config.md new file mode 100644 index 000000000..048956187 --- /dev/null +++ b/en/docs/reference/connectors/db-connector/db-connector-config.md @@ -0,0 +1,428 @@ +# DB Connector Reference + +This documentation provides a reference guide for the DB Connector. +The DB Connector allows you to connect to relational databases via JDBC and perform various operations including executing queries, modifying data, calling stored procedures, and managing transactions. + +## Connection Configurations + +The DB Connector utilizes connection pooling for efficient database interaction. You need to configure a connection before using the connector operations. + +### Connection Parameters +Common parameters for configuring a database connection: + +??? note "Connection Parameters" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Parameter NameDescriptionRequired
Connection NameA unique name to identify this connection configuration.Yes
JDBC Driver ClassThe fully qualified name of the JDBC driver class (e.g., com.mysql.cj.jdbc.Driver, org.postgresql.Driver). Standard driver classes are supported.Yes
Database URLThe JDBC URL for connecting to the database (e.g., jdbc:mysql://localhost:3306/mydatabase, jdbc:postgresql://localhost:5432/mydatabase).Yes
Database UsernameThe username for database authentication.Yes
Database PasswordThe password for database authentication.Yes
JDBC Driver Select OptionsChoose "Use Default Driver" to use the default driver for the connection else you can add your own driver with the options "Select Local Driver" or "Add Maven Dependency". All the standard drivers are supported.Yes
Allow access to database metadataIf this option is enabled, the VS Code extension will connect to the database during development and display the available tables and columns. This enhances the overall developer experience by providing easier access to database metadata.
+ + ####Additional parameters for connection + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Parameter NameDescriptionRequired
maxActiveConnectionsMaximum number of active connections that can be allocated from this pool at the same time.Optional
maxIdleConnectionsMaximum number of connections that can remain idle in the pool, without extra ones being released.Optional
minIdleConnectionsMinimum number of connections that can remain idle in the pool, without extra ones being created.Optional
poolConnectionAgedTimeoutThe time in milliseconds after which an aged connection should be removed from the pool.Optional
maxWaitTimeThe maximum number of milliseconds that the pool will wait (when no connections are available) for a connection to be returned before throwing an exception.Optional
evictionCheckIntervalThe interval in milliseconds between runs of the idle object evictor thread.Optional
minEvictionTimeThe minimum amount of time in milliseconds an object may sit idle in the pool before it is eligible for eviction by the idle object evictor.Optional
exhaustedActionSpecifies the behavior when the pool is exhausted (e.g., 'FAIL', 'BLOCK', 'GROW').Optional
+ +??? note "Example: MySQL Connection" + ```xml + + + + MYSQL + jdbc:mysql://localhost:3306/supermarket + user1 + password + com.mysql.cj.jdbc.Driver + true + MySQL + WHEN_EXHAUSTED_BLOCK + DBCon11 + + + ``` + +??? note "Example: PostgreSQL Connection" + ```xml + + + + POSTGRESQL + jdbc:postgresql://localhost:5432/supermarket + user1 + password + org.postgresql.Driver + true + PostgreSQL + WHEN_EXHAUSTED_BLOCK + PostgreSQLCon + + + ``` + +## Operations + +Operations use the `configKey` attribute to reference a pre-defined connection configuration. + +??? note "select" + + Executes a SQL SELECT query using prepared statements. + + + + + + + + + + + + + + +
Parameter NameDescriptionRequired
QueryThe Raw SQL SELECT statementYes
Table NameThe name of the table to be queried.Optional
Table ColumnsA comma-separated list of column names to be returned in the result set.Optional
Response ColumnsA comma-separated list of data types for the columns (e.g., VARCHAR, INTEGER, DOUBLE).Optional
Order ByThe column name to order the result set by.Optional
LimitThe maximum number of rows to return from the result set.Optional
OffsetThe number of rows to skip before starting to return results.Optional
Fetch SizeThe number of rows to fetch at a time from the database.Optional
Max RowsThe upper limit on the number of rows returned/affected by a query, regardless of the total number of rows in the table.Optional
Query TimeoutThe maximum time in milliseconds to wait for the query to execute.Optional
Output Variable NameIf specified, the result set is stored in this context variable.Optional
Overwrite Message BodyIf 'true' (default), the result set overwrites the payload. Set to 'false' if using 'responseVariable'.Optional
+ + + **Sample configuration** + + ```xml + + SELECT * FROM `Products` WHERE `product_id` = '${params.queryParams.productId}' + product_id + VARCHAR + json + Products
+ [] + online + + + + + + + db_select_1 + false +
+ ``` + + **Sample response (JSON in `db_select_1` variable)** + + ```json + [ + { + "product_id": "PROD001", + "name": "Super Widget", + "price": 19.99, + "stock_quantity": 148 + }, + { + "product_id": "PROD002", + "name": "Mega Widget", + "price": 29.99, + "stock_quantity": 75 + }, + { + "product_id": "PROD003", + "name": "Ultra Widget", + "price": 39.99, + "stock_quantity": 50 + } + ] + ``` + *(Note: The exact JSON structure might vary based on the database schema and query.)* + +??? note "insert" + + Executes a SQL INSERT statement using prepared statements. Can retrieve auto-generated keys. + + + + + + + + +
Parameter NameDescriptionRequired
QueryThe Raw SQL INSERT statementYes
Table NameThe name of the table to be inserted into.Optional
Table ColumnsA comma-separated list of column names to be inserted.Optional
Query TimeoutThe maximum time in milliseconds to wait for the query to execute.Optional
Output Variable NameIf specified, the result set is stored in this context variable.Optional
Overwrite Message BodyIf 'true' (default), the result set overwrites the payload. Set to 'false' if using 'responseVariable'.Optional
+ + **Sample configuration** + + ```xml + + INSERT INTO `orders` (`customer_id`, `total_amount`) VALUES (${params.queryParams.customerId}, ${vars.db_select_1.payload.rows[0].price * params.queryParams.quantity}) + customerid, totalamount + INT, DECIMAL + json + orders
+ [] + online + + db_insert_1 + false +
+ ``` + + **Sample result (in `insertResult` variable)** + ```json + { + "generatedKeys": [ + { "GENERATED_KEY": 12345 } + ], + "affectedRows": 1 + } + ``` + +??? note "delete" + + Executes a SQL DELETE statement using prepared statements. + + + + + + + + + +
Parameter NameDescriptionRequired
QueryThe Raw SQL DELETE statementYes
Table NameThe name of the table to be deleted from.Optional
Table ColumnsA comma-separated list of column names involved in the WHERE clause.Optional
Query TimeoutThe maximum time in milliseconds to wait for the query to execute.Optional
Output Variable NameIf specified, the result set is stored in this context variable.Optional
Overwrite Message BodyIf 'true' (default), the result set overwrites the payload. Set to 'false' if using 'responseVariable'.Optional
+ + **Sample configuration** + ```xml + + DELETE FROM `OrderItems` WHERE `order_item_id` = 1 AND `product_id` = 'PROD001' + order_item_id, productid + INT, VARCHAR + json + OrderItems
+ [] + online + + db_delete_1 + false +
+ ``` + **Sample result (in `db_delete_1` variable)** + ```json + { + "affectedRows": 1 // Number of rows affected by the delete operation + } + ``` + +??? note "callProcedure" + + Calls a database stored procedure or function. + + + + + + + + + + + + +
Parameter NameDescriptionRequired
QueryThe Raw SQL CALL statementYes
Stored Procedure NameThe name of the table to be queried.Optional
ParametersA comma-separated list of column names to be returned in the result set.Optional
Fetch SizeThe maximum time in milliseconds to wait for the query to execute.Optional
Max RowsThe maximum time in milliseconds to wait for the query to execute.Optional
Query TimeoutThe maximum time in milliseconds to wait for the query to execute.Optional
Output Variable NameIf specified, the result set is stored in this context variable.Optional
Overwrite Message BodyIf 'true' (default), the result set overwrites the payload. Set to 'false' if using 'responseVariable'.Optional
+ + **Sample configuration (Conceptual)** + ```xml + + CALL `GetEmployeesByDepartment`(2, '3') + deptID, deptName + INT, VARCHAR + json + GetEmployeesByDepartment
+ [] + online + + + + db_call_51 + false +
+ ``` + **Sample result (in `db_call_51` variable)** + ```json + { + "outputParameters": { + "deptID": 2, + "deptName": "Sales" + }, + "resultSets": [ /* Optional: if procedure returns result sets */ ] + } + ``` + +??? note "executeQuery" + + Executes an arbitrary SQL statement. Use when you need to execute complex queries. Parameters can be passed in the SQL statement using the `?` placeholder. The parameters are passed in the order they appear in the SQL statement. + Prepared statement support is currently available only for executeQuery operation. + + + + + + + + + + + +
Parameter NameDescriptionRequired
QueryThe SQL statement to execute.Yes
Prepared StatementIf 'true', the SQL statement is treated as a prepared statement. If 'false', it is treated as a regular SQL statement.Yes
Result SetIf 'true', the result is treated as a result set. If 'false', it is treated as an update count.Yes
Fetch SizeThe maximum time in milliseconds to wait for the query to execute.Optional
Transaction IsolationThe maximum time in milliseconds to wait for the query to execute.Optional
Max RowsThe maximum time in milliseconds to wait for the query to execute.Optional
Query TimeoutThe maximum time in milliseconds to wait for the query to execute.Optional
Output Variable NameIf specified, the result set is stored in this context variable.Optional
Overwrite Message BodyIf 'true' (default), the result set overwrites the payload. Set to 'false' if using 'responseVariable'.Optional
+ + **Sample configuration** + ```xml + + SELECT o.order_id, o.order_date, o.status, o.total_amount, c.customer_name, c.email, oi.product_id, p.name AS product_name, oi.quantity, oi.unit_price FROM Orders o JOIN Customers c ON o.customer_id = c.customer_id JOIN Order_Items oi ON o.order_id = oi.order_id JOIN Products p ON oi.product_id = p.product_id WHERE o.order_id = ? + [[1,"INTEGER"]] + true + true + JSON + db_execute_query_1 + false + + ``` + + **Sample result (in `db_execute_query_1` variable)** + ```json + [{ + "order_id": 101, + "order_date": "2025-04-30 14:23:45", + "status": "Shipped", + "total_amount": 199.99, + "customer_name": "John Doe", + "email": "john@mail.com", + "product_id": "PROD001", + "product_name": "Super Widget", + "quantity": 2, + "unit_price": 19.99 + }] + ``` + +??? note "beginTransaction" + + Starts a new database transaction associated with the current message context. Subsequent DB operations within the same flow (until commit or rollback) will participate in this transaction. + + + + +
Parameter NameDescriptionRequired
isolationLevelSpecifies the transaction isolation level (e.g., TRANSACTION_READ_COMMITTED, TRANSACTION_REPEATABLE_READ, TRANSACTION_SERIALIZABLE). Default depends on the database.Optional
+ + The `isolationLevel` parameter can take one of the following values:
+ - `TRANSACTION_READ_UNCOMMITTED`: Allows reading uncommitted changes (dirty reads).
+ - `TRANSACTION_READ_COMMITTED`: Prevents dirty reads; allows non-repeatable reads.
+ - `TRANSACTION_REPEATABLE_READ`: Prevents dirty reads and non-repeatable reads; allows phantom reads.
+ - `TRANSACTION_SERIALIZABLE`: Prevents dirty reads, non-repeatable reads, and phantom reads. This is the highest isolation level. + + **Sample configuration** + ```xml + + 300 + TRANSACTION_READ_COMMITTED + + ``` + +??? note "commitTransaction" + + Commits the database transaction associated with the current message context. + + **Sample configuration** + ```xml + + true + + ``` + +??? note "rollbackTransaction" + + Rolls back the database transaction associated with the current message context. + + **Sample configuration** + ```xml + + true + + ``` + +**Note**: For a practical example demonstrating transaction management and various operations, see [DB Connector Example]({{base_path}}/reference/connectors/db-connector/db-connector-example/). \ No newline at end of file diff --git a/en/docs/reference/connectors/db-connector/db-connector-example.md b/en/docs/reference/connectors/db-connector/db-connector-example.md new file mode 100644 index 000000000..9e9fd9418 --- /dev/null +++ b/en/docs/reference/connectors/db-connector/db-connector-example.md @@ -0,0 +1,254 @@ +# DB Connector Example + +The DB Connector can be used to interact with relational databases using JDBC, perform CRUD operations, call stored procedures, and manage transactions. + +## What you'll build +This example demonstrates how to use the DB Connector to create a simple Order Management API. + +**GET `/place_order`**: Accepts new order details (customer ID, product ID, quantity). It checks product availability, inserts the order details into `Orders` and `OrderItems` tables, and updates the product inventory in the `Products` table, all within a single database transaction. It returns the newly created `order_id`. + +This example showcases: + +* Using `select`, `insert`, and `executeQuery` operations. +* Using prepared statements for security and efficiency. +* Managing database transactions (`beginTransaction`, `commitTransaction`, `rollbackTransaction`). +* Retrieving auto-generated keys. +* Conditional processing based on database query results (Filter mediator). +* Reading URI parameters and request payloads. + +### Database Schema (Example - MySQL) + +You'll need a database with the following tables and sample data: + +```sql +-- Products Table +CREATE TABLE Products ( + product_id VARCHAR(50) PRIMARY KEY, + name VARCHAR(255) NOT NULL, + price DECIMAL(10, 2) NOT NULL, + stock_quantity INT NOT NULL +); + +-- Customers Table +CREATE TABLE Customers ( + customer_id INT PRIMARY KEY AUTO_INCREMENT, -- Or SERIAL for PostgreSQL + customer_name VARCHAR(255) NOT NULL, + email VARCHAR(255) +); + +-- Orders Table +CREATE TABLE Orders ( + order_id INT PRIMARY KEY AUTO_INCREMENT, -- Or SERIAL for PostgreSQL + customer_id INT NOT NULL, + order_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + total_amount DECIMAL(10, 2), + status VARCHAR(50) DEFAULT 'PENDING', + FOREIGN KEY (customer_id) REFERENCES Customers(customer_id) +); + +-- OrderItems Table +CREATE TABLE OrderItems ( + order_item_id INT PRIMARY KEY AUTO_INCREMENT, -- Or SERIAL for PostgreSQL + order_id INT NOT NULL, + product_id VARCHAR(50) NOT NULL, + quantity INT NOT NULL, + unit_price DECIMAL(10, 2) NOT NULL, + FOREIGN KEY (order_id) REFERENCES Orders(order_id), + FOREIGN KEY (product_id) REFERENCES Products(product_id) +); + +-- Sample Data +INSERT INTO Products (product_id, name, price, stock_quantity) VALUES +('PROD001', 'Super Widget', 19.99, 100), +('PROD002', 'Mega Gadget', 45.50, 50); + +INSERT INTO Customers (customer_id, customer_name, email) VALUES +(101, 'Alice Wonderland', 'alice@example.com'), +(102, 'Bob The Builder', 'bob@example.com'); +``` + +## Set up the integration project + +1. Follow the steps in the [create integration project]({{base_path}}/develop/create-integration-project/) guide to set up an **Integration Project**. +2. Create the `ordersAPI` API. Follow the steps in the [create an api]({{base_path}}/develop/creating-artifacts/creating-an-api/#create-an-api-artifact) guide to create the API. +3. Click on the three dots next to the GET resource of created API and select **Edit**. +4. Set the resource path as `/place_order` +5. Click **Add Query Param** and set the name as `customerId` and click **Add**. +6. Repeat the above step to add the following query parameters: + * `productId` + * `quantity` +7. Click **Update** to save the changes. + + Add Query Param + +8. Click on the updated resource. It opens the API in the diagram view. Then click on the + button below to START to add connectors or mediators + + Add Connector + +9. Click on the **Connections** tab and click on the **Add new connection** button. +10. Search for **MySQL** and select the MySQL connection. Under the DB Connector you will see the supported Database types that you can select from. + + Add MySQL Connection + +11. Fill in the connection details and click **Add**. + * **Connection Name**: `DBCon1` + * **JDBC URL**: `jdbc:mysql://localhost:3306/your_database_name` + * **Username**: `your_db_username` + * **Password**: `your_db_password` + * **JDBC Driver Select Options**: If you want to use your own driver, select "Select Local Driver" or "Add Maven Dependency" options. For this example let's use the default driver. + + Add Connection Details + + Once you add the connection the connector operations will be shown as below. + + Add Connector Operations + +## Create the integration logic for placing an order (GET /place_order) + +1. Add BeginTransaction operation with Isolation Level "TRANSACTION_READ_COMMITTED" + + BeginTransaction Operation + +2. Add Select operation as below. + + Select Operation + +3. Add filter to check the stock availability. + + Filter + +4. Add Insert operation to the then flow. + + Insert Operation + +5. Use ExecuteQuery operation to implement stock number update in Product table. + + ExecuteQuery Operation + +6. Add CommitTransaction operation to implement commit for the DB transaction. +7. In the Else flow add the RollbackTransaction to rollback. +8. Complete the flow as shown below in the image. The XML code is provided below. + + Complete Flow + +??? note "Source view" + ```xml + + + + + + 300 + TRANSACTION_READ_COMMITTED + + + SELECT * FROM `Products` WHERE `product_id` = '${params.queryParams.productId}' + product_id + VARCHAR + json + Products
+ [] + online + + + + + + + db_select_1 + false +
+ + + + INSERT INTO `Orders` (`customer_id`, `total_amount`) VALUES (${params.queryParams.customerId}, ${vars.db_select_1.payload.rows[0].price * params.queryParams.quantity}) + customer_id, total_amount + INT, DECIMAL + json + Orders
+ [] + online + + db_insert_1 + false +
+ + UPDATE `products` SET `stock_quantity` = `stock_quantity` - ? WHERE product_id = ? + json + [["${params.queryParams.quantity}", "INTEGER"], ["${params.queryParams.productId}", "VARCHAR"]] + true + true + + + + TRANSACTION_NONE + db_executeQuery_1 + false + + + true + +
+ + + true + + + {"Message":"Failed to place the order. Requested amount of the product not available."} + + +
+ +
+ + +
+
+ ``` +## Get the project + +You can download the ZIP file and extract the contents to get the project code. + + + Download ZIP + + + +## Deployment + +1. Ensure your database (MySQL) is running and the schema/sample data is loaded. +2. Ensure the DB Connection configuration in your project matches your database credentials and URL. +3. Once you have [built your artifacts]({{base_path}}/develop/packaging-artifacts) into a composite application, you can + export it into a CAR file (.car file) using the WSO2 Micro Integrator Visual Studio Code extension: +4. Open the project overview and click on **Export**. + + Download ZIP + +5. Click on **Select Destination** to select a destination folder to export the CAR file. + + +## Test + +### Place a new order + +1. Use a tool like `curl` or Postman to send a GET request: + ```bash + curl -X GET "http://localhost:8290/ordermgmt/place_order?customerId=101&productId=PROD001&quantity=2" + ``` +2. You should receive a response with the `order_id` of the newly created order. + +??? "Sample Response" +```json +{ +"generatedKeys": [ +{ "GENERATED_KEY": 1 } +], +"affectedRows": 1, +} +``` +3. Check your database to verify that the order has been created and the product stock has been updated. +4. You can also check the `Orders` and `OrderItems` tables to see the inserted records. +## What's next +* Explore the [DB Connector Reference]({{base_path}}/reference/connectors/db-connector/db-connector-config/) for details on all operations and connection parameters. +* Learn about error handling strategies in WSO2 MI. +* Consider using Data Services for more complex data access scenarios. \ No newline at end of file diff --git a/en/docs/reference/connectors/db-connector/db-connector-overview.md b/en/docs/reference/connectors/db-connector/db-connector-overview.md new file mode 100644 index 000000000..f22f54360 --- /dev/null +++ b/en/docs/reference/connectors/db-connector/db-connector-overview.md @@ -0,0 +1,42 @@ +# DB Connector Overview + +The DB Connector allows you to connect and interact with various relational databases using JDBC. It enables you to perform operations such as executing queries (SELECT), data manipulation (INSERT, UPDATE, DELETE), calling stored procedures, and managing transactions directly from your WSO2 Micro Integrator integration flows. + + DB Connector Store + +## Compatibility + + + + + + + + + + +
+ Connector version + + Supported product versions +
+ 1.0.0 (latest) + + MI 4.4.0, MI 4.5.0 +
+ +## DB Connector documentation + +* **[DB Connector Example]({{base_path}}/reference/connectors/db-connector/db-connector-example/)**: This example explains how to use the DB Connector to build a simple Order Management API, demonstrating query execution, data modification, and transaction management. + +* **[DB Connector Reference]({{base_path}}/reference/connectors/db-connector/db-connector-config/)**: This documentation provides a reference guide for the DB Connector, detailing connection configurations and all available operations. + +## How to contribute + +As an open source project, WSO2 extensions welcome contributions from the community. + +To contribute to the code for this connector, please create a pull request in the following repository. + +* [DB Connector GitHub repository](https://github.com/wso2-extensions/mi-connector-db) + +Check the issue tracker for open issues that interest you. We look forward to receiving your contributions. \ No newline at end of file diff --git a/en/mkdocs.yml b/en/mkdocs.yml index 42e371942..a49b398bb 100644 --- a/en/mkdocs.yml +++ b/en/mkdocs.yml @@ -820,6 +820,10 @@ nav: - 1.x: # - Microsoft Azure Storage Example: reference/connectors/microsoft-azure-storage-connector/1.x/microsoft-azure-storage-connector-example.md - Microsoft Azure Storage Reference: reference/connectors/microsoft-azure-storage-connector/1.x/microsoft-azure-storage-reference.md + - DB Connector: + - DB Connector Overview: reference/connectors/db-connector/db-connector-overview.md + - DB Connector Example: reference/connectors/db-connector/db-connector-example.md + - DB Connector Reference: reference/connectors/db-connector/db-connector-config.md - MongoDB Connector: - MongoDB Connector Overview: reference/connectors/mongodb-connector/mongodb-connector-overview.md - 3.x: