outhad-integrations 0.32.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.rspec +3 -0
- data/.rubocop.yml +43 -0
- data/.ruby-version +1 -0
- data/.vscode/settings.json +5 -0
- data/README.md +76 -0
- data/Rakefile +12 -0
- data/lib/outhad/integrations/config.rb +14 -0
- data/lib/outhad/integrations/core/base_connector.rb +79 -0
- data/lib/outhad/integrations/core/constants.rb +103 -0
- data/lib/outhad/integrations/core/destination_connector.rb +20 -0
- data/lib/outhad/integrations/core/fullrefresher.rb +19 -0
- data/lib/outhad/integrations/core/http_client.rb +17 -0
- data/lib/outhad/integrations/core/http_helper.rb +36 -0
- data/lib/outhad/integrations/core/query_builder.rb +33 -0
- data/lib/outhad/integrations/core/rate_limiter.rb +19 -0
- data/lib/outhad/integrations/core/source_connector.rb +66 -0
- data/lib/outhad/integrations/core/streaming_http_client.rb +21 -0
- data/lib/outhad/integrations/core/unstructured_source_connector.rb +52 -0
- data/lib/outhad/integrations/core/utils.rb +123 -0
- data/lib/outhad/integrations/core/vector_source_connector.rb +14 -0
- data/lib/outhad/integrations/destination/airtable/client.rb +157 -0
- data/lib/outhad/integrations/destination/airtable/config/catalog.json +6 -0
- data/lib/outhad/integrations/destination/airtable/config/meta.json +15 -0
- data/lib/outhad/integrations/destination/airtable/config/spec.json +23 -0
- data/lib/outhad/integrations/destination/airtable/icon.svg +6 -0
- data/lib/outhad/integrations/destination/airtable/schema_helper.rb +141 -0
- data/lib/outhad/integrations/destination/ais_data_store/client.rb +130 -0
- data/lib/outhad/integrations/destination/ais_data_store/config/meta.json +15 -0
- data/lib/outhad/integrations/destination/ais_data_store/config/spec.json +68 -0
- data/lib/outhad/integrations/destination/ais_data_store/icon.svg +4 -0
- data/lib/outhad/integrations/destination/amazon_s3/client.rb +92 -0
- data/lib/outhad/integrations/destination/amazon_s3/config/catalog.json +16 -0
- data/lib/outhad/integrations/destination/amazon_s3/config/meta.json +15 -0
- data/lib/outhad/integrations/destination/amazon_s3/config/spec.json +56 -0
- data/lib/outhad/integrations/destination/amazon_s3/icon.svg +34 -0
- data/lib/outhad/integrations/destination/databricks_lakehouse/client.rb +147 -0
- data/lib/outhad/integrations/destination/databricks_lakehouse/config/meta.json +15 -0
- data/lib/outhad/integrations/destination/databricks_lakehouse/config/spec.json +44 -0
- data/lib/outhad/integrations/destination/databricks_lakehouse/icon.svg +65 -0
- data/lib/outhad/integrations/destination/facebook_custom_audience/client.rb +125 -0
- data/lib/outhad/integrations/destination/facebook_custom_audience/config/catalog.json +42 -0
- data/lib/outhad/integrations/destination/facebook_custom_audience/config/meta.json +15 -0
- data/lib/outhad/integrations/destination/facebook_custom_audience/config/spec.json +28 -0
- data/lib/outhad/integrations/destination/facebook_custom_audience/icon.svg +23 -0
- data/lib/outhad/integrations/destination/google_sheets/client.rb +240 -0
- data/lib/outhad/integrations/destination/google_sheets/config/catalog.json +6 -0
- data/lib/outhad/integrations/destination/google_sheets/config/meta.json +15 -0
- data/lib/outhad/integrations/destination/google_sheets/config/spec.json +75 -0
- data/lib/outhad/integrations/destination/google_sheets/icon.svg +1 -0
- data/lib/outhad/integrations/destination/http/client.rb +106 -0
- data/lib/outhad/integrations/destination/http/config/catalog.json +16 -0
- data/lib/outhad/integrations/destination/http/config/meta.json +15 -0
- data/lib/outhad/integrations/destination/http/config/spec.json +24 -0
- data/lib/outhad/integrations/destination/http/icon.svg +9 -0
- data/lib/outhad/integrations/destination/hubspot/client.rb +122 -0
- data/lib/outhad/integrations/destination/hubspot/config/catalog.json +351 -0
- data/lib/outhad/integrations/destination/hubspot/config/meta.json +15 -0
- data/lib/outhad/integrations/destination/hubspot/config/spec.json +18 -0
- data/lib/outhad/integrations/destination/hubspot/icon.svg +5 -0
- data/lib/outhad/integrations/destination/iterable/client.rb +111 -0
- data/lib/outhad/integrations/destination/iterable/config/catalog.json +47 -0
- data/lib/outhad/integrations/destination/iterable/config/meta.json +15 -0
- data/lib/outhad/integrations/destination/iterable/config/spec.json +19 -0
- data/lib/outhad/integrations/destination/iterable/icon.svg +71 -0
- data/lib/outhad/integrations/destination/klaviyo/client.rb +119 -0
- data/lib/outhad/integrations/destination/klaviyo/config/catalog.json +103 -0
- data/lib/outhad/integrations/destination/klaviyo/config/meta.json +15 -0
- data/lib/outhad/integrations/destination/klaviyo/config/spec.json +24 -0
- data/lib/outhad/integrations/destination/klaviyo/icon.svg +6 -0
- data/lib/outhad/integrations/destination/mailchimp/client.rb +141 -0
- data/lib/outhad/integrations/destination/mailchimp/config/catalog.json +142 -0
- data/lib/outhad/integrations/destination/mailchimp/config/meta.json +15 -0
- data/lib/outhad/integrations/destination/mailchimp/config/spec.json +28 -0
- data/lib/outhad/integrations/destination/mailchimp/icon.svg +4 -0
- data/lib/outhad/integrations/destination/maria_db/client.rb +114 -0
- data/lib/outhad/integrations/destination/maria_db/config/meta.json +15 -0
- data/lib/outhad/integrations/destination/maria_db/config/spec.json +48 -0
- data/lib/outhad/integrations/destination/maria_db/icon.svg +15 -0
- data/lib/outhad/integrations/destination/microsoft_dynamics/client.rb +150 -0
- data/lib/outhad/integrations/destination/microsoft_dynamics/config/catalog.json +161 -0
- data/lib/outhad/integrations/destination/microsoft_dynamics/config/meta.json +15 -0
- data/lib/outhad/integrations/destination/microsoft_dynamics/config/spec.json +35 -0
- data/lib/outhad/integrations/destination/microsoft_dynamics/icon.svg +2 -0
- data/lib/outhad/integrations/destination/microsoft_excel/client.rb +198 -0
- data/lib/outhad/integrations/destination/microsoft_excel/config/catalog.json +7 -0
- data/lib/outhad/integrations/destination/microsoft_excel/config/meta.json +15 -0
- data/lib/outhad/integrations/destination/microsoft_excel/config/spec.json +19 -0
- data/lib/outhad/integrations/destination/microsoft_excel/icon.svg +18 -0
- data/lib/outhad/integrations/destination/microsoft_sql/client.rb +137 -0
- data/lib/outhad/integrations/destination/microsoft_sql/config/meta.json +15 -0
- data/lib/outhad/integrations/destination/microsoft_sql/config/spec.json +68 -0
- data/lib/outhad/integrations/destination/microsoft_sql/icon.svg +22 -0
- data/lib/outhad/integrations/destination/odoo/client.rb +109 -0
- data/lib/outhad/integrations/destination/odoo/config/meta.json +15 -0
- data/lib/outhad/integrations/destination/odoo/config/spec.json +39 -0
- data/lib/outhad/integrations/destination/odoo/icon.svg +21 -0
- data/lib/outhad/integrations/destination/oracle_db/client.rb +112 -0
- data/lib/outhad/integrations/destination/oracle_db/config/meta.json +15 -0
- data/lib/outhad/integrations/destination/oracle_db/config/spec.json +47 -0
- data/lib/outhad/integrations/destination/oracle_db/icon.svg +4 -0
- data/lib/outhad/integrations/destination/pinecone_db/client.rb +154 -0
- data/lib/outhad/integrations/destination/pinecone_db/config/meta.json +15 -0
- data/lib/outhad/integrations/destination/pinecone_db/config/spec.json +32 -0
- data/lib/outhad/integrations/destination/pinecone_db/icon.svg +1 -0
- data/lib/outhad/integrations/destination/postgresql/client.rb +130 -0
- data/lib/outhad/integrations/destination/postgresql/config/meta.json +15 -0
- data/lib/outhad/integrations/destination/postgresql/config/spec.json +68 -0
- data/lib/outhad/integrations/destination/postgresql/icon.svg +20 -0
- data/lib/outhad/integrations/destination/qdrant/client.rb +184 -0
- data/lib/outhad/integrations/destination/qdrant/config/meta.json +15 -0
- data/lib/outhad/integrations/destination/qdrant/config/spec.json +23 -0
- data/lib/outhad/integrations/destination/qdrant/icon.svg +1 -0
- data/lib/outhad/integrations/destination/salesforce_consumer_goods_cloud/client.rb +136 -0
- data/lib/outhad/integrations/destination/salesforce_consumer_goods_cloud/config/catalog.json +6 -0
- data/lib/outhad/integrations/destination/salesforce_consumer_goods_cloud/config/meta.json +16 -0
- data/lib/outhad/integrations/destination/salesforce_consumer_goods_cloud/config/spec.json +52 -0
- data/lib/outhad/integrations/destination/salesforce_consumer_goods_cloud/icon.svg +16 -0
- data/lib/outhad/integrations/destination/salesforce_consumer_goods_cloud/schema_helper.rb +132 -0
- data/lib/outhad/integrations/destination/salesforce_crm/client.rb +114 -0
- data/lib/outhad/integrations/destination/salesforce_crm/config/catalog.json +320 -0
- data/lib/outhad/integrations/destination/salesforce_crm/config/meta.json +15 -0
- data/lib/outhad/integrations/destination/salesforce_crm/config/spec.json +46 -0
- data/lib/outhad/integrations/destination/salesforce_crm/icon.svg +16 -0
- data/lib/outhad/integrations/destination/sftp/client.rb +186 -0
- data/lib/outhad/integrations/destination/sftp/config/catalog.json +16 -0
- data/lib/outhad/integrations/destination/sftp/config/meta.json +16 -0
- data/lib/outhad/integrations/destination/sftp/config/spec.json +73 -0
- data/lib/outhad/integrations/destination/sftp/icon.svg +1 -0
- data/lib/outhad/integrations/destination/slack/client.rb +125 -0
- data/lib/outhad/integrations/destination/slack/config/catalog.json +22 -0
- data/lib/outhad/integrations/destination/slack/config/meta.json +15 -0
- data/lib/outhad/integrations/destination/slack/config/spec.json +23 -0
- data/lib/outhad/integrations/destination/slack/icon.svg +26 -0
- data/lib/outhad/integrations/destination/stripe/client.rb +94 -0
- data/lib/outhad/integrations/destination/stripe/config/catalog.json +128 -0
- data/lib/outhad/integrations/destination/stripe/config/meta.json +15 -0
- data/lib/outhad/integrations/destination/stripe/config/spec.json +18 -0
- data/lib/outhad/integrations/destination/stripe/icon.svg +10 -0
- data/lib/outhad/integrations/destination/zendesk/client.rb +132 -0
- data/lib/outhad/integrations/destination/zendesk/config/catalog.json +110 -0
- data/lib/outhad/integrations/destination/zendesk/config/meta.json +18 -0
- data/lib/outhad/integrations/destination/zendesk/config/spec.json +32 -0
- data/lib/outhad/integrations/destination/zendesk/icon.svg +63 -0
- data/lib/outhad/integrations/protocol/protocol.json +189 -0
- data/lib/outhad/integrations/protocol/protocol.rb +228 -0
- data/lib/outhad/integrations/rollout.rb +66 -0
- data/lib/outhad/integrations/service.rb +55 -0
- data/lib/outhad/integrations/source/amazon_s3/client.rb +235 -0
- data/lib/outhad/integrations/source/amazon_s3/config/meta.json +16 -0
- data/lib/outhad/integrations/source/amazon_s3/config/spec.json +119 -0
- data/lib/outhad/integrations/source/amazon_s3/icon.svg +34 -0
- data/lib/outhad/integrations/source/anthropic/client.rb +135 -0
- data/lib/outhad/integrations/source/anthropic/config/catalog.json +6 -0
- data/lib/outhad/integrations/source/anthropic/config/meta.json +16 -0
- data/lib/outhad/integrations/source/anthropic/config/spec.json +56 -0
- data/lib/outhad/integrations/source/anthropic/icon.svg +1 -0
- data/lib/outhad/integrations/source/aws_athena/client.rb +109 -0
- data/lib/outhad/integrations/source/aws_athena/config/meta.json +16 -0
- data/lib/outhad/integrations/source/aws_athena/config/spec.json +63 -0
- data/lib/outhad/integrations/source/aws_athena/icon.svg +22 -0
- data/lib/outhad/integrations/source/aws_bedrock_model/client.rb +91 -0
- data/lib/outhad/integrations/source/aws_bedrock_model/config/catalog.json +6 -0
- data/lib/outhad/integrations/source/aws_bedrock_model/config/meta.json +16 -0
- data/lib/outhad/integrations/source/aws_bedrock_model/config/spec.json +58 -0
- data/lib/outhad/integrations/source/aws_bedrock_model/icon.svg +1 -0
- data/lib/outhad/integrations/source/aws_sagemaker_model/client.rb +79 -0
- data/lib/outhad/integrations/source/aws_sagemaker_model/config/catalog.json +6 -0
- data/lib/outhad/integrations/source/aws_sagemaker_model/config/meta.json +16 -0
- data/lib/outhad/integrations/source/aws_sagemaker_model/config/spec.json +52 -0
- data/lib/outhad/integrations/source/aws_sagemaker_model/icon.svg +7 -0
- data/lib/outhad/integrations/source/bigquery/client.rb +98 -0
- data/lib/outhad/integrations/source/bigquery/config/meta.json +16 -0
- data/lib/outhad/integrations/source/bigquery/config/spec.json +83 -0
- data/lib/outhad/integrations/source/bigquery/icon.svg +1 -0
- data/lib/outhad/integrations/source/clickhouse/client.rb +102 -0
- data/lib/outhad/integrations/source/clickhouse/config/meta.json +16 -0
- data/lib/outhad/integrations/source/clickhouse/config/spec.json +42 -0
- data/lib/outhad/integrations/source/clickhouse/icon.svg +25 -0
- data/lib/outhad/integrations/source/databricks/client.rb +98 -0
- data/lib/outhad/integrations/source/databricks/config/meta.json +17 -0
- data/lib/outhad/integrations/source/databricks/config/spec.json +56 -0
- data/lib/outhad/integrations/source/databricks/icon.svg +19 -0
- data/lib/outhad/integrations/source/databrics_model/client.rb +89 -0
- data/lib/outhad/integrations/source/databrics_model/config/catalog.json +6 -0
- data/lib/outhad/integrations/source/databrics_model/config/meta.json +17 -0
- data/lib/outhad/integrations/source/databrics_model/config/spec.json +63 -0
- data/lib/outhad/integrations/source/databrics_model/icon.svg +19 -0
- data/lib/outhad/integrations/source/firecrawl/client.rb +151 -0
- data/lib/outhad/integrations/source/firecrawl/config/catalog.json +29 -0
- data/lib/outhad/integrations/source/firecrawl/config/meta.json +17 -0
- data/lib/outhad/integrations/source/firecrawl/config/spec.json +31 -0
- data/lib/outhad/integrations/source/firecrawl/icon.svg +4 -0
- data/lib/outhad/integrations/source/generic_open_ai/client.rb +118 -0
- data/lib/outhad/integrations/source/generic_open_ai/config/catalog.json +6 -0
- data/lib/outhad/integrations/source/generic_open_ai/config/meta.json +16 -0
- data/lib/outhad/integrations/source/generic_open_ai/config/spec.json +63 -0
- data/lib/outhad/integrations/source/generic_open_ai/icon.svg +6 -0
- data/lib/outhad/integrations/source/google_vertex_model/client.rb +83 -0
- data/lib/outhad/integrations/source/google_vertex_model/config/catalog.json +6 -0
- data/lib/outhad/integrations/source/google_vertex_model/config/meta.json +17 -0
- data/lib/outhad/integrations/source/google_vertex_model/config/spec.json +105 -0
- data/lib/outhad/integrations/source/google_vertex_model/icon.svg +2 -0
- data/lib/outhad/integrations/source/http_model/client.rb +108 -0
- data/lib/outhad/integrations/source/http_model/config/catalog.json +6 -0
- data/lib/outhad/integrations/source/http_model/config/meta.json +16 -0
- data/lib/outhad/integrations/source/http_model/config/spec.json +70 -0
- data/lib/outhad/integrations/source/http_model/icon.svg +9 -0
- data/lib/outhad/integrations/source/intuit_quick_books/client.rb +213 -0
- data/lib/outhad/integrations/source/intuit_quick_books/config/catalog.json +6 -0
- data/lib/outhad/integrations/source/intuit_quick_books/config/meta.json +17 -0
- data/lib/outhad/integrations/source/intuit_quick_books/config/spec.json +44 -0
- data/lib/outhad/integrations/source/intuit_quick_books/icon.svg +1 -0
- data/lib/outhad/integrations/source/maria_db/client.rb +92 -0
- data/lib/outhad/integrations/source/maria_db/config/meta.json +16 -0
- data/lib/outhad/integrations/source/maria_db/config/spec.json +48 -0
- data/lib/outhad/integrations/source/maria_db/icon.svg +15 -0
- data/lib/outhad/integrations/source/odoo/client.rb +106 -0
- data/lib/outhad/integrations/source/odoo/config/meta.json +15 -0
- data/lib/outhad/integrations/source/odoo/config/spec.json +39 -0
- data/lib/outhad/integrations/source/odoo/icon.svg +21 -0
- data/lib/outhad/integrations/source/open_ai/client.rb +118 -0
- data/lib/outhad/integrations/source/open_ai/config/catalog.json +6 -0
- data/lib/outhad/integrations/source/open_ai/config/meta.json +16 -0
- data/lib/outhad/integrations/source/open_ai/config/spec.json +56 -0
- data/lib/outhad/integrations/source/open_ai/icon.svg +1 -0
- data/lib/outhad/integrations/source/oracle_db/client.rb +127 -0
- data/lib/outhad/integrations/source/oracle_db/config/meta.json +16 -0
- data/lib/outhad/integrations/source/oracle_db/config/spec.json +47 -0
- data/lib/outhad/integrations/source/oracle_db/icon.svg +4 -0
- data/lib/outhad/integrations/source/pinecone_db/client.rb +73 -0
- data/lib/outhad/integrations/source/pinecone_db/config/catalog.json +6 -0
- data/lib/outhad/integrations/source/pinecone_db/config/meta.json +16 -0
- data/lib/outhad/integrations/source/pinecone_db/config/spec.json +34 -0
- data/lib/outhad/integrations/source/pinecone_db/icon.svg +2 -0
- data/lib/outhad/integrations/source/postgresql/client.rb +112 -0
- data/lib/outhad/integrations/source/postgresql/config/meta.json +16 -0
- data/lib/outhad/integrations/source/postgresql/config/spec.json +86 -0
- data/lib/outhad/integrations/source/postgresql/icon.svg +20 -0
- data/lib/outhad/integrations/source/qdrant/client.rb +86 -0
- data/lib/outhad/integrations/source/qdrant/config/catalog.json +6 -0
- data/lib/outhad/integrations/source/qdrant/config/meta.json +16 -0
- data/lib/outhad/integrations/source/qdrant/config/spec.json +29 -0
- data/lib/outhad/integrations/source/qdrant/icon.svg +1 -0
- data/lib/outhad/integrations/source/redshift/client.rb +109 -0
- data/lib/outhad/integrations/source/redshift/config/meta.json +16 -0
- data/lib/outhad/integrations/source/redshift/config/spec.json +71 -0
- data/lib/outhad/integrations/source/redshift/icon.svg +15 -0
- data/lib/outhad/integrations/source/salesforce_consumer_goods_cloud/client.rb +133 -0
- data/lib/outhad/integrations/source/salesforce_consumer_goods_cloud/config/catalog.json +6 -0
- data/lib/outhad/integrations/source/salesforce_consumer_goods_cloud/config/meta.json +18 -0
- data/lib/outhad/integrations/source/salesforce_consumer_goods_cloud/config/spec.json +53 -0
- data/lib/outhad/integrations/source/salesforce_consumer_goods_cloud/icon.svg +16 -0
- data/lib/outhad/integrations/source/salesforce_consumer_goods_cloud/schema_helper.rb +130 -0
- data/lib/outhad/integrations/source/sftp/client.rb +133 -0
- data/lib/outhad/integrations/source/sftp/config/meta.json +16 -0
- data/lib/outhad/integrations/source/sftp/config/spec.json +59 -0
- data/lib/outhad/integrations/source/sftp/icon.svg +1 -0
- data/lib/outhad/integrations/source/snowflake/client.rb +92 -0
- data/lib/outhad/integrations/source/snowflake/config/meta.json +16 -0
- data/lib/outhad/integrations/source/snowflake/config/spec.json +82 -0
- data/lib/outhad/integrations/source/snowflake/icon.svg +10 -0
- data/lib/outhad/integrations/source/watsonx_ai/client.rb +194 -0
- data/lib/outhad/integrations/source/watsonx_ai/config/catalog.json +6 -0
- data/lib/outhad/integrations/source/watsonx_ai/config/meta.json +16 -0
- data/lib/outhad/integrations/source/watsonx_ai/config/spec.json +74 -0
- data/lib/outhad/integrations/source/watsonx_ai/icon.svg +1 -0
- data/lib/outhad/integrations/source/watsonx_data/client.rb +146 -0
- data/lib/outhad/integrations/source/watsonx_data/config/meta.json +17 -0
- data/lib/outhad/integrations/source/watsonx_data/config/spec.json +72 -0
- data/lib/outhad/integrations/source/watsonx_data/icon.svg +1 -0
- data/lib/outhad/integrations.rb +129 -0
- data/outhad-integrations.gemspec +79 -0
- data/sig/outhad/integrations.rbs +6 -0
- metadata +866 -0
@@ -0,0 +1,68 @@
|
|
1
|
+
{
|
2
|
+
"documentation_url": "https://docs.squared.ai/guides/destinations/retl-destinations/database/ais_data_store",
|
3
|
+
"stream_type": "dynamic",
|
4
|
+
"connection_specification": {
|
5
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
6
|
+
"title": "AIS Data Store",
|
7
|
+
"type": "object",
|
8
|
+
"required": ["host", "port", "database", "schema"],
|
9
|
+
"properties": {
|
10
|
+
"credentials": {
|
11
|
+
"title": "",
|
12
|
+
"type": "object",
|
13
|
+
"required": ["auth_type", "username", "password"],
|
14
|
+
"properties": {
|
15
|
+
"auth_type": {
|
16
|
+
"type": "string",
|
17
|
+
"default": "username/password",
|
18
|
+
"order": 0,
|
19
|
+
"readOnly": true
|
20
|
+
},
|
21
|
+
"username": {
|
22
|
+
"description": "Username refers to your individual AIS Data Store login credentials. At a minimum, the user associated with these credentials must be granted read access to the data intended for synchronization.",
|
23
|
+
"examples": ["AIS_DATA_STORE_USER"],
|
24
|
+
"type": "string",
|
25
|
+
"title": "Username",
|
26
|
+
"order": 1
|
27
|
+
},
|
28
|
+
"password": {
|
29
|
+
"description": "This field requires the password associated with the user account specified in the preceding section.",
|
30
|
+
"type": "string",
|
31
|
+
"outhad_secret": true,
|
32
|
+
"title": "Password",
|
33
|
+
"order": 2
|
34
|
+
}
|
35
|
+
},
|
36
|
+
"order": 0
|
37
|
+
},
|
38
|
+
"host": {
|
39
|
+
"description": "The hostname or IP address of your AIS Data Store server.",
|
40
|
+
"examples": ["127.0.0.1"],
|
41
|
+
"type": "string",
|
42
|
+
"title": "Host",
|
43
|
+
"order": 1
|
44
|
+
},
|
45
|
+
"port": {
|
46
|
+
"description": "The port number for your AIS Data Store server, which defaults to 5432, may vary based on your configuration. ",
|
47
|
+
"examples": ["5432"],
|
48
|
+
"type": "string",
|
49
|
+
"title": "Port",
|
50
|
+
"order": 2
|
51
|
+
},
|
52
|
+
"database": {
|
53
|
+
"description": "The specific AIS Data Store database to connect to.",
|
54
|
+
"examples": ["AIS_DATA_STORE_DB"],
|
55
|
+
"type": "string",
|
56
|
+
"title": "Database",
|
57
|
+
"order": 3
|
58
|
+
},
|
59
|
+
"schema": {
|
60
|
+
"description": "The schema within the AIS Data Store database.",
|
61
|
+
"examples": ["AIS_DATA_STORE_SCHEMA"],
|
62
|
+
"type": "string",
|
63
|
+
"title": "Schema",
|
64
|
+
"order": 4
|
65
|
+
}
|
66
|
+
}
|
67
|
+
}
|
68
|
+
}
|
@@ -0,0 +1,4 @@
|
|
1
|
+
<svg width="66" height="64" viewBox="0 0 66 64" fill="none" xmlns="http://www.w3.org/2000/svg">
|
2
|
+
<path d="M24.5072 18.9904C26.4821 18.9904 28.2101 20.0795 29.1976 21.6527H51.2916V18.2643C51.2916 15.3599 48.9464 13.0607 45.9841 13.0607H18.2123C15.4968 13.0607 13.3985 15.2389 13.3985 17.7802V33.1491C13.3985 34.9643 14.8796 36.4165 16.7311 36.4165H34.9988C35.8628 34.4802 37.8377 33.1491 40.0595 33.1491C43.1452 33.1491 45.7373 35.6904 45.7373 38.8368C45.7373 41.9831 43.1452 44.5244 40.0595 44.5244C38.4549 44.5244 36.9737 43.7984 35.8628 42.5882H13.1516V46.5817C13.1516 49.002 15.1265 50.9382 17.5951 50.9382H47.8356C49.687 50.9382 51.1682 49.486 51.0448 47.6708V32.181C51.0448 30.0027 49.1933 28.1875 46.9716 28.1875H28.9507C27.9633 29.5186 26.3587 30.3657 24.5072 30.3657C21.4215 30.3657 18.8294 27.8244 18.8294 24.6781C18.8294 21.5317 21.4215 18.9904 24.5072 18.9904Z" fill="#00249C"/>
|
3
|
+
<path d="M57.0292 0H8.02359C3.57976 0 0 3.54198 0 7.93893V56.0611C0 60.458 3.57976 64 8.02359 64H57.0292C61.4731 64 65.0528 60.458 65.0528 56.0611V7.93893C65.1763 3.54198 61.4731 0 57.0292 0ZM59.1277 51.6641C59.1277 55.2061 56.1652 58.1374 52.5854 58.1374H12.4674C8.88767 58.1374 5.92512 55.2061 5.92512 51.6641V12.3359C5.92512 8.79389 8.88767 5.8626 12.4674 5.8626H52.7088C56.2886 5.8626 59.2512 8.79389 59.2512 12.3359V51.6641H59.1277Z" fill="#00249C"/>
|
4
|
+
</svg>
|
@@ -0,0 +1,92 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Outhad::Integrations::Destination
|
4
|
+
module AmazonS3
|
5
|
+
include Outhad::Integrations::Core
|
6
|
+
class Client < DestinationConnector
|
7
|
+
def check_connection(connection_config)
|
8
|
+
connection_config = connection_config.with_indifferent_access
|
9
|
+
conn = create_connection(connection_config)
|
10
|
+
conn.head_bucket(bucket: connection_config[:bucket_name])
|
11
|
+
ConnectionStatus.new(status: ConnectionStatusType["succeeded"]).to_outhad_message
|
12
|
+
rescue StandardError => e
|
13
|
+
ConnectionStatus.new(status: ConnectionStatusType["failed"], message: e.message).to_outhad_message
|
14
|
+
end
|
15
|
+
|
16
|
+
def discover(_connection_config = nil)
|
17
|
+
catalog_json = read_json(CATALOG_SPEC_PATH)
|
18
|
+
catalog = build_catalog(catalog_json)
|
19
|
+
catalog.to_outhad_message
|
20
|
+
rescue StandardError => e
|
21
|
+
handle_exception(e, {
|
22
|
+
context: "AMAZONS3:DISCOVER:EXCEPTION",
|
23
|
+
type: "error"
|
24
|
+
})
|
25
|
+
end
|
26
|
+
|
27
|
+
def write(sync_config, records, _action = "destination_insert")
|
28
|
+
records_size = records.size
|
29
|
+
log_message_array = []
|
30
|
+
write_success = upload_csv_content(sync_config, records)
|
31
|
+
write_failure = records_size - write_success
|
32
|
+
log_message_array << log_request_response("info", @args, @response)
|
33
|
+
tracking_message(write_success, write_failure, log_message_array)
|
34
|
+
rescue StandardError => e
|
35
|
+
handle_exception(e, {
|
36
|
+
context: "AMAZONS3:WRITE:EXCEPTION",
|
37
|
+
type: "error",
|
38
|
+
sync_id: sync_config.sync_id,
|
39
|
+
sync_run_id: sync_config.sync_run_id
|
40
|
+
})
|
41
|
+
end
|
42
|
+
|
43
|
+
private
|
44
|
+
|
45
|
+
def create_connection(connection_config)
|
46
|
+
Aws::S3::Client.new(
|
47
|
+
region: connection_config[:region],
|
48
|
+
access_key_id: connection_config[:access_key_id],
|
49
|
+
secret_access_key: connection_config[:secret_access_key]
|
50
|
+
)
|
51
|
+
end
|
52
|
+
|
53
|
+
def upload_csv_content(sync_config, records)
|
54
|
+
connection_config = sync_config.destination.connection_specification.with_indifferent_access
|
55
|
+
conn = create_connection(connection_config)
|
56
|
+
file_name = generate_local_file_name(connection_config)
|
57
|
+
csv_content = generate_csv_content(records)
|
58
|
+
begin
|
59
|
+
@args = ["create", connection_config[:bucket_name], "#{connection_config[:file_path]}#{file_name}", csv_content]
|
60
|
+
@response = conn.put_object(
|
61
|
+
bucket: connection_config[:bucket_name],
|
62
|
+
key: "#{connection_config[:file_path]}#{file_name}",
|
63
|
+
body: csv_content
|
64
|
+
)
|
65
|
+
write_success = records.size
|
66
|
+
rescue StandardError => e
|
67
|
+
handle_exception(e, {
|
68
|
+
context: "AMAZONS3:RECORD:WRITE:EXCEPTION",
|
69
|
+
type: "error",
|
70
|
+
sync_id: sync_config.sync_id,
|
71
|
+
sync_run_id: sync_config.sync_run_id
|
72
|
+
})
|
73
|
+
write_success = 0
|
74
|
+
end
|
75
|
+
write_success
|
76
|
+
end
|
77
|
+
|
78
|
+
def generate_csv_content(records)
|
79
|
+
CSV.generate do |csv|
|
80
|
+
headers = records.first.keys
|
81
|
+
csv << headers
|
82
|
+
records.each { |record| csv << record.values_at(*headers) }
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
def generate_local_file_name(connection_config)
|
87
|
+
timestamp = Time.now.strftime("%Y%m%d-%H%M%S")
|
88
|
+
"#{connection_config[:file_name]}_#{timestamp}.#{connection_config[:format_type]}"
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
{
|
2
|
+
"request_rate_limit": 600,
|
3
|
+
"request_rate_limit_unit": "minute",
|
4
|
+
"request_rate_concurrency": 10,
|
5
|
+
"schema_mode": "schemaless",
|
6
|
+
"streams": [
|
7
|
+
{
|
8
|
+
"name": "create",
|
9
|
+
"batch_support": true,
|
10
|
+
"batch_size": 100000,
|
11
|
+
"action": "create",
|
12
|
+
"json_schema": {},
|
13
|
+
"supported_sync_modes": ["full_refresh","incremental"]
|
14
|
+
}
|
15
|
+
]
|
16
|
+
}
|
@@ -0,0 +1,15 @@
|
|
1
|
+
{
|
2
|
+
"data": {
|
3
|
+
"name": "AmazonS3",
|
4
|
+
"title": "Amazon S3",
|
5
|
+
"connector_type": "source",
|
6
|
+
"category": "File Storage",
|
7
|
+
"documentation_url": "https://docs.squared.ai/guides/destinations/retl-destinations/file-storage/amazon_s3",
|
8
|
+
"github_issue_label": "source-amazons3",
|
9
|
+
"icon": "icon.svg",
|
10
|
+
"license": "MIT",
|
11
|
+
"release_stage": "alpha",
|
12
|
+
"support_level": "community",
|
13
|
+
"tags": ["language:ruby", "outhad"]
|
14
|
+
}
|
15
|
+
}
|
@@ -0,0 +1,56 @@
|
|
1
|
+
{
|
2
|
+
"documentation_url": "https://docs.squared.ai/guides/destinations/retl-destinations/file-storage/amazon_s3",
|
3
|
+
"stream_type": "static",
|
4
|
+
"connection_specification": {
|
5
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
6
|
+
"title": "AmazonS3",
|
7
|
+
"required": ["access_key_id", "secret_access_key", "region", "bucket_name", "file_path", "file_name", "format_type" ],
|
8
|
+
"properties": {
|
9
|
+
"access_key_id": {
|
10
|
+
"description": "The AWS Access Key ID to use for authentication.",
|
11
|
+
"type": "string",
|
12
|
+
"title": "Personal Access Key",
|
13
|
+
"order": 0
|
14
|
+
},
|
15
|
+
"secret_access_key": {
|
16
|
+
"description": "The AWS Secret Access Key to use for authentication.",
|
17
|
+
"type": "string",
|
18
|
+
"outhad_secret": true,
|
19
|
+
"title": "Secret Access Key",
|
20
|
+
"order": 1
|
21
|
+
},
|
22
|
+
"region": {
|
23
|
+
"description": "AWS region.",
|
24
|
+
"type": "string",
|
25
|
+
"title": "Region",
|
26
|
+
"order": 2
|
27
|
+
},
|
28
|
+
"bucket_name": {
|
29
|
+
"title": "Bucket Name",
|
30
|
+
"description": "Amazon S3 bucket name.",
|
31
|
+
"type": "string",
|
32
|
+
"order": 3
|
33
|
+
},
|
34
|
+
"file_path": {
|
35
|
+
"title": "File Path",
|
36
|
+
"type": "string",
|
37
|
+
"description": "Path to the directory where files will be written.",
|
38
|
+
"order": 4
|
39
|
+
},
|
40
|
+
"file_name": {
|
41
|
+
"title": "File Name",
|
42
|
+
"type": "string",
|
43
|
+
"description": "Name of the file to be written.",
|
44
|
+
"order": 5
|
45
|
+
},
|
46
|
+
"format_type": {
|
47
|
+
"title": "File Format Type",
|
48
|
+
"type": "string",
|
49
|
+
"description": "Format of the data output.",
|
50
|
+
"order": 6,
|
51
|
+
"enum": ["csv"],
|
52
|
+
"default": "csv"
|
53
|
+
}
|
54
|
+
}
|
55
|
+
}
|
56
|
+
}
|
@@ -0,0 +1,34 @@
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="428" height="512" viewBox="0 0 428 512">
|
2
|
+
<defs>
|
3
|
+
<style>
|
4
|
+
.cls-1 {
|
5
|
+
fill: #e25444;
|
6
|
+
}
|
7
|
+
|
8
|
+
.cls-1, .cls-2, .cls-3 {
|
9
|
+
fill-rule: evenodd;
|
10
|
+
}
|
11
|
+
|
12
|
+
.cls-2 {
|
13
|
+
fill: #7b1d13;
|
14
|
+
}
|
15
|
+
|
16
|
+
.cls-3 {
|
17
|
+
fill: #58150d;
|
18
|
+
}
|
19
|
+
</style>
|
20
|
+
</defs>
|
21
|
+
<path class="cls-1" d="M378,99L295,257l83,158,34-19V118Z"/>
|
22
|
+
<path class="cls-2" d="M378,99L212,118,127.5,257,212,396l166,19V99Z"/>
|
23
|
+
<path class="cls-3" d="M43,99L16,111V403l27,12L212,257Z"/>
|
24
|
+
<path class="cls-1" d="M42.637,98.667l169.587,47.111V372.444L42.637,415.111V98.667Z"/>
|
25
|
+
<path class="cls-3" d="M212.313,170.667l-72.008-11.556,72.008-81.778,71.83,81.778Z"/>
|
26
|
+
<path class="cls-3" d="M284.143,159.111l-71.919,11.733-71.919-11.733V77.333"/>
|
27
|
+
<path class="cls-3" d="M212.313,342.222l-72.008,13.334,72.008,70.222,71.83-70.222Z"/>
|
28
|
+
<path class="cls-2" d="M212,16L140,54V159l72.224-20.333Z"/>
|
29
|
+
<path class="cls-2" d="M212.224,196.444l-71.919,7.823V309.105l71.919,8.228V196.444Z"/>
|
30
|
+
<path class="cls-2" d="M212.224,373.333L140.305,355.3V458.363L212.224,496V373.333Z"/>
|
31
|
+
<path class="cls-1" d="M284.143,355.3l-71.919,18.038V496l71.919-37.637V355.3Z"/>
|
32
|
+
<path class="cls-1" d="M212.224,196.444l71.919,7.823V309.105l-71.919,8.228V196.444Z"/>
|
33
|
+
<path class="cls-1" d="M212,16l72,38V159l-72-20V16Z"/>
|
34
|
+
</svg>
|
@@ -0,0 +1,147 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Outhad
|
4
|
+
module Integrations
|
5
|
+
module Destination
|
6
|
+
module DatabricksLakehouse
|
7
|
+
include Outhad::Integrations::Core
|
8
|
+
class Client < DestinationConnector
|
9
|
+
MAX_CHUNK_SIZE = 10
|
10
|
+
def check_connection(connection_config)
|
11
|
+
connection_config = connection_config.with_indifferent_access
|
12
|
+
db = create_connection(connection_config)
|
13
|
+
response = db.get("/api/2.0/clusters/list")
|
14
|
+
if response.status == 200
|
15
|
+
success_status
|
16
|
+
else
|
17
|
+
failure_status(nil)
|
18
|
+
end
|
19
|
+
rescue StandardError => e
|
20
|
+
handle_exception(e, {
|
21
|
+
context: "DATABRICKS:LAKEHOUSE:CHECK_CONNECTION:EXCEPTION",
|
22
|
+
type: "error"
|
23
|
+
})
|
24
|
+
failure_status(e)
|
25
|
+
end
|
26
|
+
|
27
|
+
def discover(connection_config)
|
28
|
+
connection_config = connection_config.with_indifferent_access
|
29
|
+
table_query = "SHOW TABLES IN #{connection_config[:catalog]}.#{connection_config[:schema]};"
|
30
|
+
db = create_connection(connection_config)
|
31
|
+
records = []
|
32
|
+
table_response = db.post("/api/2.0/sql/statements", generate_body(connection_config[:warehouse_id], table_query).to_json)
|
33
|
+
table_response_body = JSON.parse(table_response.body)
|
34
|
+
table_response_body["result"]["data_array"].each do |table|
|
35
|
+
table_name = table[1]
|
36
|
+
query = "DESCRIBE TABLE #{connection_config[:catalog]}.#{connection_config[:schema]}.#{table_name};"
|
37
|
+
column_response = db.post("/api/2.0/sql/statements", generate_body(connection_config[:warehouse_id], query).to_json)
|
38
|
+
column_response_body = JSON.parse(column_response.body)
|
39
|
+
records << [table_name, column_response_body["result"]["data_array"]]
|
40
|
+
end
|
41
|
+
catalog = Catalog.new(streams: create_streams(records))
|
42
|
+
catalog.to_outhad_message
|
43
|
+
rescue StandardError => e
|
44
|
+
handle_exception(
|
45
|
+
"DATABRICKS:LAKEHOUSE:DISCOVER:EXCEPTION",
|
46
|
+
"error",
|
47
|
+
e
|
48
|
+
)
|
49
|
+
end
|
50
|
+
|
51
|
+
def write(sync_config, records, action = "destination_insert")
|
52
|
+
connection_config = sync_config.destination.connection_specification.with_indifferent_access
|
53
|
+
table_name = "#{connection_config[:catalog]}.#{connection_config[:schema]}.#{sync_config.stream.name}"
|
54
|
+
primary_key = sync_config.model.primary_key
|
55
|
+
db = create_connection(connection_config)
|
56
|
+
write_success = 0
|
57
|
+
write_failure = 0
|
58
|
+
log_message_array = []
|
59
|
+
|
60
|
+
records.each do |record|
|
61
|
+
query = Outhad::Integrations::Core::QueryBuilder.perform(action, table_name, record, primary_key)
|
62
|
+
logger.debug("DATABRICKS:LAKEHOUSE:WRITE:QUERY query = #{query} sync_id = #{sync_config.sync_id} sync_run_id = #{sync_config.sync_run_id}")
|
63
|
+
begin
|
64
|
+
arg = ["/api/2.0/sql/statements", generate_body(connection_config[:warehouse_id], query)]
|
65
|
+
response = db.post("/api/2.0/sql/statements", generate_body(connection_config[:warehouse_id], query).to_json)
|
66
|
+
if response.status == 200
|
67
|
+
write_success += 1
|
68
|
+
else
|
69
|
+
write_failure += 1
|
70
|
+
end
|
71
|
+
log_message_array << log_request_response("info", arg, response)
|
72
|
+
rescue StandardError => e
|
73
|
+
handle_exception(e, {
|
74
|
+
context: "DATABRICKS:LAKEHOUSE:RECORD:WRITE:EXCEPTION",
|
75
|
+
type: "error",
|
76
|
+
sync_id: sync_config.sync_id,
|
77
|
+
sync_run_id: sync_config.sync_run_id
|
78
|
+
})
|
79
|
+
write_failure += 1
|
80
|
+
end
|
81
|
+
end
|
82
|
+
tracking_message(write_success, write_failure)
|
83
|
+
rescue StandardError => e
|
84
|
+
handle_exception(e, {
|
85
|
+
context: "DATABRICKS:LAKEHOUSE:RECORD:WRITE:EXCEPTION",
|
86
|
+
type: "error",
|
87
|
+
sync_id: sync_config.sync_id,
|
88
|
+
sync_run_id: sync_config.sync_run_id
|
89
|
+
})
|
90
|
+
end
|
91
|
+
|
92
|
+
private
|
93
|
+
|
94
|
+
def create_connection(connection_config)
|
95
|
+
Faraday.new(url: connection_config[:host]) do |conn|
|
96
|
+
conn.headers["Authorization"] = "Bearer #{connection_config[:api_token]}"
|
97
|
+
conn.headers["Content-Type"] = "application/json"
|
98
|
+
conn.adapter Faraday.default_adapter
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
def generate_body(warehouse_id, query)
|
103
|
+
{
|
104
|
+
warehouse_id: warehouse_id,
|
105
|
+
statement: query,
|
106
|
+
wait_timeout: "15s"
|
107
|
+
}
|
108
|
+
end
|
109
|
+
|
110
|
+
def create_streams(records)
|
111
|
+
message = []
|
112
|
+
group_by_table(records).each_value do |r|
|
113
|
+
message << Outhad::Integrations::Protocol::Stream.new(name: r[:tablename], action: StreamAction["fetch"], json_schema: convert_to_json_schema(r[:columns]))
|
114
|
+
end
|
115
|
+
message
|
116
|
+
end
|
117
|
+
|
118
|
+
def group_by_table(records)
|
119
|
+
result = {}
|
120
|
+
records.each_with_index do |entries, index|
|
121
|
+
table_name = records[index][0]
|
122
|
+
column = []
|
123
|
+
entry_data = entries[1]
|
124
|
+
entry_data.each do |entry|
|
125
|
+
column << {
|
126
|
+
column_name: entry[0],
|
127
|
+
data_type: entry[1],
|
128
|
+
is_nullable: true
|
129
|
+
}
|
130
|
+
end
|
131
|
+
result[index] ||= {}
|
132
|
+
result[index][:tablename] = table_name
|
133
|
+
result[index][:columns] = column
|
134
|
+
end
|
135
|
+
result
|
136
|
+
end
|
137
|
+
|
138
|
+
def tracking_message(success, failure)
|
139
|
+
Outhad::Integrations::Protocol::TrackingMessage.new(
|
140
|
+
success: success, failed: failure
|
141
|
+
).to_outhad_message
|
142
|
+
end
|
143
|
+
end
|
144
|
+
end
|
145
|
+
end
|
146
|
+
end
|
147
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
{
|
2
|
+
"data": {
|
3
|
+
"name": "DatabricksLakehouse",
|
4
|
+
"title": "Databricks Data Warehouse",
|
5
|
+
"connector_type": "destination",
|
6
|
+
"category": "Database",
|
7
|
+
"documentation_url": "https://docs.squared.ai/guides/destinations/retl-destinations/analytics/databricks_lakehouse",
|
8
|
+
"github_issue_label": "destination-databricks-lakehouse",
|
9
|
+
"icon": "icon.svg",
|
10
|
+
"license": "MIT",
|
11
|
+
"release_stage": "alpha",
|
12
|
+
"support_level": "community",
|
13
|
+
"tags": ["language:ruby", "outhad"]
|
14
|
+
}
|
15
|
+
}
|
@@ -0,0 +1,44 @@
|
|
1
|
+
{
|
2
|
+
"documentation_url": "https://docs.squared.ai/guides/destinations/retl-destinations/analytics/databricks_lakehouse",
|
3
|
+
"stream_type": "static",
|
4
|
+
"connection_specification": {
|
5
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
6
|
+
"title": "Databricks Datawarehouse",
|
7
|
+
"type": "object",
|
8
|
+
"required": ["host", "api_token", "warehouse_id", "catalog", "schema"],
|
9
|
+
"properties": {
|
10
|
+
"host": {
|
11
|
+
"description": "The databrick lakehouse host domain.",
|
12
|
+
"type": "string",
|
13
|
+
"title": "Host",
|
14
|
+
"order": 0
|
15
|
+
},
|
16
|
+
"api_token": {
|
17
|
+
"description": "The databrick lakehouse api token.",
|
18
|
+
"type": "string",
|
19
|
+
"outhad_secret": true,
|
20
|
+
"title": "API Token",
|
21
|
+
"order": 1
|
22
|
+
},"warehouse_id": {
|
23
|
+
"description": "The databrick lakehouse warehouse ID.",
|
24
|
+
"type": "string",
|
25
|
+
"title": "Warehouse ID",
|
26
|
+
"order": 2
|
27
|
+
},
|
28
|
+
"catalog": {
|
29
|
+
"description": "The name of the catalog",
|
30
|
+
"default": "hive_metastore",
|
31
|
+
"type": "string",
|
32
|
+
"title": "Databricks catalog",
|
33
|
+
"order": 3
|
34
|
+
},
|
35
|
+
"schema": {
|
36
|
+
"description": "The default schema tables are written.",
|
37
|
+
"default": "default",
|
38
|
+
"type": "string",
|
39
|
+
"title": "Database schema",
|
40
|
+
"order": 4
|
41
|
+
}
|
42
|
+
}
|
43
|
+
}
|
44
|
+
}
|
@@ -0,0 +1,65 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
2
|
+
<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
3
|
+
|
4
|
+
<svg
|
5
|
+
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
6
|
+
xmlns:cc="http://creativecommons.org/ns#"
|
7
|
+
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
8
|
+
xmlns:svg="http://www.w3.org/2000/svg"
|
9
|
+
xmlns="http://www.w3.org/2000/svg"
|
10
|
+
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
11
|
+
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
12
|
+
version="1.1"
|
13
|
+
id="Layer_1"
|
14
|
+
x="0px"
|
15
|
+
y="0px"
|
16
|
+
viewBox="0 0 64 64"
|
17
|
+
enable-background="new 0 0 640 96"
|
18
|
+
xml:space="preserve"
|
19
|
+
sodipodi:docname="databricks-icon.svg"
|
20
|
+
width="64"
|
21
|
+
height="64"
|
22
|
+
inkscape:version="0.92.4 (5da689c313, 2019-01-14)"><metadata
|
23
|
+
id="metadata45"><rdf:RDF><cc:Work
|
24
|
+
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
|
25
|
+
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
|
26
|
+
id="defs43" /><sodipodi:namedview
|
27
|
+
pagecolor="#ffffff"
|
28
|
+
bordercolor="#666666"
|
29
|
+
borderopacity="1"
|
30
|
+
objecttolerance="10"
|
31
|
+
gridtolerance="10"
|
32
|
+
guidetolerance="10"
|
33
|
+
inkscape:pageopacity="0"
|
34
|
+
inkscape:pageshadow="2"
|
35
|
+
inkscape:window-width="1920"
|
36
|
+
inkscape:window-height="1001"
|
37
|
+
id="namedview41"
|
38
|
+
showgrid="false"
|
39
|
+
inkscape:zoom="2.996365"
|
40
|
+
inkscape:cx="53.009829"
|
41
|
+
inkscape:cy="48"
|
42
|
+
inkscape:window-x="-9"
|
43
|
+
inkscape:window-y="-9"
|
44
|
+
inkscape:window-maximized="1"
|
45
|
+
inkscape:current-layer="Layer_1" />
|
46
|
+
|
47
|
+
|
48
|
+
|
49
|
+
<g
|
50
|
+
id="g50"
|
51
|
+
transform="matrix(0.75294118,0,0,0.75294118,1.0541175,18.823529)"><path
|
52
|
+
style="fill:#db1905"
|
53
|
+
inkscape:connector-curvature="0"
|
54
|
+
id="path2"
|
55
|
+
d="M 0,24.8 V 38.5 L 41.1,60 82.2,38.5 v -13.7 0 L 67.7,17.4 82.2,9.8 v -13.6 0 0 -0.1 L 82.1,-3.8 41.1,-25 0.1,-3.9 H 0 V 9.8 L 14.5,17.4 0,24.8" /><polygon
|
56
|
+
transform="translate(0,-36)"
|
57
|
+
style="fill:#ff5224"
|
58
|
+
id="polygon4"
|
59
|
+
points="0,60.8 41.1,82.3 82.2,60.8 67.7,53.4 41.1,67.3 14.5,53.4 " /><polygon
|
60
|
+
transform="translate(0,-36)"
|
61
|
+
style="fill:#ff5224"
|
62
|
+
id="polygon6"
|
63
|
+
points="82.2,32.2 41.1,53.7 0,32.2 41.1,11 " /></g>
|
64
|
+
|
65
|
+
</svg>
|