Repository: mindsdb/mindsdb

Issue:
[New Integration]: Integration with D0lt
### Is there an existing integration?

- [X] I have searched the existing integrations.

### Use Case

**Using Dolt to manage and share your Machine Learning data amongst your data analysts, engineers, and scientists make collaboration easy. Dolt gives you human and machine readable diffs. Diffs are useful providing data oriented insights into your ML models. Why is this model performing better than this one? What in the data changed? Dolt provides data lineage as a first class entity in your Machine Learning pipelines. Dolt provides model reproducibility by storing each version of the data you use to train a model. Dolt is especially useful in Natural Language Processing (NLP) where the data is mostly text.**

For more UseCases you can refer [here](https://docs.dolthub.com/introduction/use-cases)

### Motivation

Dolt is like Imagine if Git and MySQL had a baby.
It has very amazing and powerful features.

It has amazing usecases as described above.

### Implementation

_No response_

### Anything else?

_No response_


Discussion:
@ZoranPandovski **_Last assigned issues completed and Made PR._**

_Assignee this to me._

Resolving patch:
diff --git a/mindsdb/integrations/handlers/d0lt_handler/__about__.py b/mindsdb/integrations/handlers/d0lt_handler/__about__.py
new file mode 100644
--- /dev/null
+++ b/mindsdb/integrations/handlers/d0lt_handler/__about__.py
@@ -0,0 +1,9 @@
+__title__ = 'MindsDB D0lt handler'
+__package_name__ = 'mindsdb_d0lt_handler'
+__version__ = '0.0.1'
+__description__ = "MindsDB handler for D0lt"
+__author__ = 'Parthiv Makwana'
+__github__ = 'https://github.com/mindsdb/mindsdb'
+__pypi__ = 'https://pypi.org/project/mindsdb/'
+__license__ = 'GPL-3.0'
+__copyright__ = 'Copyright 2022- mindsdb'
diff --git a/mindsdb/integrations/handlers/d0lt_handler/__init__.py b/mindsdb/integrations/handlers/d0lt_handler/__init__.py
new file mode 100644
--- /dev/null
+++ b/mindsdb/integrations/handlers/d0lt_handler/__init__.py
@@ -0,0 +1,22 @@
+from mindsdb.integrations.libs.const import HANDLER_TYPE
+
+from .__about__ import __version__ as version, __description__ as description
+try:
+    from .d0lt_handler import (
+        D0ltHandler as Handler,
+        
+    )
+    import_error = None
+except Exception as e:
+    Handler = None
+    import_error = e
+
+title = 'D0lt'
+name = 'd0lt'
+type = HANDLER_TYPE.DATA
+icon_path = 'icon.svg'
+
+__all__ = [
+    'Handler', 'version', 'name', 'type', 'title', 'description',
+     'import_error', 'icon_path'
+]
diff --git a/mindsdb/integrations/handlers/d0lt_handler/d0lt_handler.py b/mindsdb/integrations/handlers/d0lt_handler/d0lt_handler.py
new file mode 100644
--- /dev/null
+++ b/mindsdb/integrations/handlers/d0lt_handler/d0lt_handler.py
@@ -0,0 +1,11 @@
+from ..matrixone_handler import Handler as MatrixOneHandler
+
+
+class D0ltHandler(MatrixOneHandler):
+    """
+    This handler handles connection and execution of the MariaDB statements.
+    """
+    name = 'd0lt'
+
+    def __init__(self, name, **kwargs):
+        super().__init__(name, **kwargs)


Test patch:
diff --git a/mindsdb/integrations/handlers/d0lt_handler/tests/__init__.py b/mindsdb/integrations/handlers/d0lt_handler/tests/__init__.py
new file mode 100644
diff --git a/mindsdb/integrations/handlers/d0lt_handler/tests/test_d0lt_handler.py b/mindsdb/integrations/handlers/d0lt_handler/tests/test_d0lt_handler.py
new file mode 100644
--- /dev/null
+++ b/mindsdb/integrations/handlers/d0lt_handler/tests/test_d0lt_handler.py
@@ -0,0 +1,62 @@
+import unittest
+
+from mindsdb.integrations.handlers.d0lt_handler.d0lt_handler import D0ltHandler
+from mindsdb.api.mysql.mysql_proxy.libs.constants.response_type import RESPONSE_TYPE
+
+
+class D0ltHandlerTest(unittest.TestCase):
+    @classmethod
+    def setUpClass(cls):
+        cls.kwargs = {
+            "host": "localhost",
+            "port": 3306,
+            "user": "root",
+            "password": "",
+            "database": "getting_started",
+            "ssl": False
+        }
+        cls.handler = D0ltHandler('test_mysql_handler', connection_data=cls.kwargs)
+
+    def test_0_connect(self):
+         self.handler.connect()
+
+
+    def test_0_connect(self):
+         self.handler.connect()
+
+    
+
+    def test_1_drop_table(self):
+        res = self.handler.query("DROP TABLE IF EXISTS PREM;")
+        assert res.type is  not RESPONSE_TYPE.ERROR 
+
+
+    def test_2_create_table(self):
+        res = self.handler.query("CREATE TABLE IF NOT EXISTS PREM (Premi varchar(50));")
+        assert res.type is not  RESPONSE_TYPE.ERROR 
+
+    def test_3_insert_table(self):
+        res = self.handler.query("INSERT INTO PREM VALUES('Radha <3 Krishna');")
+        assert res.type is not  RESPONSE_TYPE.ERROR 
+    
+
+    def test_4_get_tables(self):
+        tables = self.handler.get_tables()
+        assert tables.type is not  RESPONSE_TYPE.ERROR
+
+ 
+    def test_5_select_query(self):
+        query = "SELECT * FROM PREM;"
+        result = self.handler.native_query(query)
+        assert result.type is not  RESPONSE_TYPE.ERROR
+    
+    def test_6_get_columns(self):
+        
+        result = self.handler.get_columns('PREM')
+        assert result.type is not  RESPONSE_TYPE.ERROR
+
+    def test_7_check_connection(self):
+         self.handler.check_connection()
+
+if __name__ == '__main__':
+    unittest.main()
\ No newline at end of file