Exasol (Non-Microsoft Publisher) (#1301)

* submission

* readme changes

* Apply suggestions from PR code review

* Apply suggestion from PR code review #2

* link directly to user guide
This commit is contained in:
Pieterjan Spoelders 2022-03-01 01:40:28 +01:00 коммит произвёл GitHub
Родитель 9cbda965cc
Коммит ba13d05057
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
3 изменённых файлов: 598 добавлений и 0 удалений

Просмотреть файл

@ -0,0 +1,63 @@
# Exasol - The analytics database connector
Exasol is an analytics-focused parallelized relational database management system (RDBMS).
Our superfast data analytics platform gives you the power, flexibility and scalability to meet the demands of your long-term data strategy.
Connect to an Exasol database to create, read, update and delete data.
## Publisher: Exasol AG
## Prerequisites
You will need the following to proceed:
* A Microsoft Power Apps or Power Automate plan
* An Exasol database
* Exasol REST API set up, internet facing
## Supported Operations
The connector supports the following actions:
### `GetTables`
Returns a list of the tables visible to the database user.
### `GetRows`
Returns the rows from a table (based on filter conditions).
### `InsertRow`
Insert a row into a table.
### `UpdateRows`
Update row(s) within a table.
### `DeleteRows`
Delete row(s) within a table.
### `ExecuteQuery`
Run a custom query to fetch data, for more advanced scenarios.
### `ExecuteNonQuery`
Run a custom command, for more advanced scenarios.
## Obtaining Credentials
Currently the connector uses an API Key as the default authentication method.
The API key(s) can be set in the Exasol REST API which you're also required to set up to use this connector.
## Getting Started
You should first set up the Exasol REST API (see: https://github.com/exasol/exasol-rest-api).
The connector itself takes 2 parameters when creating a new connection:
`Host`: Where your REST API is hosted (this can be an IP address or DNS name).
`API Key`: This is one of the authentication keys you've configured to gain access to the REST API.
Note: You can still edit these 2 values afterwards.
Please see the user guide for more detailed instructions and a full tutorial [here](https://github.com/exasol/power-apps-connector/blob/main/doc/user_guide/user_guide.md).
## Known Issues and Limitations
Using a on-premises data gateway is currently not supported.
## Deployment Instructions
Please follow [these instructions](https://docs.microsoft.com/en-us/connectors/custom-connectors/paconn-cli) to deploy this connector as a custom connector within Microsoft Power Automate and Power Apps.
## Further support and documentation
Questions and issues can be filed [here](https://github.com/exasol/power-apps-connector/issues).

Просмотреть файл

@ -0,0 +1,490 @@
{
"swagger": "2.0",
"info": {
"description": "Exasol is an analytics-focused parallelized relational database management system (RDBMS). Connect to an Exasol database to create,read, update and delete data.",
"title": "Exasol",
"contact": {
"name": "Exasol",
"url": "https://github.com/exasol/power-apps-connector/issues",
"email": "integrationteam@exasol.com"
},
"license": {
"name": "MIT License",
"url": "https://github.com/exasol/power-apps-connector/blob/main/LICENSE"
},
"version": "0.1.0"
},
"host": "exasol.com",
"basePath": "/api/v1",
"x-ms-connector-metadata": [
{
"propertyName": "Website",
"propertyValue": "https://www.exasol.com/"
},
{
"propertyName": "Privacy policy",
"propertyValue": "https://www.exasol.com/privacy-policy"
},
{
"propertyName": "Categories",
"propertyValue": "Data;Business Intelligence"
}
],
"schemes": [
"https"
],
"consumes": [],
"produces": [],
"paths": {
"/query/{query}": {
"get": {
"description": "Provide a query and get a result set",
"produces": [
"application/json"
],
"summary": "Query the Exasol database",
"parameters": [
{
"type": "string",
"description": "SELECT query",
"name": "query",
"in": "path",
"required": true,
"x-ms-summary": "SELECT query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/exasol_rest_api.APIBaseResponse"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/exasol_rest_api.APIBaseResponse"
}
}
},
"operationId": "ExecuteQuery"
}
},
"/row": {
"post": {
"description": "Insert a single row into an Exasol table",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"summary": "Insert row to a table",
"parameters": [
{
"description": "Request body",
"name": "request-body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/exasol_rest_api.InsertRowRequest"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/exasol_rest_api.APIBaseResponse"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/exasol_rest_api.APIBaseResponse"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/exasol_rest_api.APIBaseResponse"
}
}
},
"operationId": "InsertRow"
}
},
"/rows": {
"get": {
"description": "Get zero or more rows from a table providing a WHERE condition",
"produces": [
"application/json"
],
"summary": "Get rows from a table based on a condition",
"parameters": [
{
"type": "string",
"description": "Exasol schema name",
"name": "schemaName",
"in": "query",
"required": true,
"x-ms-summary": "Exasol schema name"
},
{
"type": "string",
"description": "Exasol table name",
"name": "tableName",
"in": "query",
"required": true,
"x-ms-summary": "Exasol table name"
},
{
"type": "string",
"description": "Exasol column name for WHERE clause",
"name": "columnName",
"in": "query",
"x-ms-summary": "Exasol column name for WHERE clause"
},
{
"type": "string",
"description": "Comparison predicate for WHERE clause",
"name": "comparisonPredicate",
"in": "query",
"x-ms-summary": "Comparison predicate for WHERE clause"
},
{
"type": "string",
"description": "Value of the specified Exasol column",
"name": "value",
"in": "query",
"x-ms-summary": "Value of the specified Exasol column"
},
{
"type": "string",
"description": "Type of the value: string, bool, int or float",
"name": "valueType",
"in": "query",
"x-ms-summary": "Type of the value: string, bool, int or float"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/exasol_rest_api.APIBaseResponse"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/exasol_rest_api.APIBaseResponse"
}
}
},
"operationId": "GetRows"
},
"delete": {
"description": "Delete zero or more rows from a table providing a WHERE condition",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"summary": "Delete rows from a table based on a condition",
"parameters": [
{
"description": "Request body",
"name": "request-body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/exasol_rest_api.RowsRequest"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/exasol_rest_api.APIBaseResponse"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/exasol_rest_api.APIBaseResponse"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/exasol_rest_api.APIBaseResponse"
}
}
},
"operationId": "DeleteRows"
},
"put": {
"description": "Update zero or more row in a table based on a condition",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"summary": "Update rows in a table based on a condition",
"parameters": [
{
"description": "Request body",
"name": "request-body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/exasol_rest_api.UpdateRowsRequest"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/exasol_rest_api.APIBaseResponse"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/exasol_rest_api.APIBaseResponse"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/exasol_rest_api.APIBaseResponse"
}
}
},
"operationId": "UpdateRows"
}
},
"/statement": {
"post": {
"description": "Execute a statement without a result set",
"produces": [
"application/json"
],
"summary": "Execute a statement on the Exasol database",
"parameters": [
{
"description": "Request body",
"name": "request-body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/exasol_rest_api.ExecuteStatementRequest"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/exasol_rest_api.APIBaseResponse"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/exasol_rest_api.APIBaseResponse"
}
}
},
"operationId": "ExecuteNonQuery"
}
},
"/tables": {
"get": {
"description": "Get a list of all available tables",
"produces": [
"application/json"
],
"summary": "Get tables that are available for the user",
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/exasol_rest_api.GetTablesResponse"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/exasol_rest_api.APIBaseResponse"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/exasol_rest_api.APIBaseResponse"
}
}
},
"operationId": "GetTables"
}
}
},
"definitions": {
"exasol_rest_api.APIBaseResponse": {
"type": "object",
"properties": {
"exception": {
"type": "string"
},
"status": {
"type": "string"
}
}
},
"exasol_rest_api.Condition": {
"type": "object",
"properties": {
"comparisonPredicate": {
"type": "string"
},
"value": {
"$ref": "#/definitions/exasol_rest_api.Value"
}
}
},
"exasol_rest_api.ExecuteStatementRequest": {
"type": "object",
"properties": {
"sqlStatement": {
"type": "string"
}
}
},
"exasol_rest_api.GetTablesResponse": {
"type": "object",
"properties": {
"exception": {
"type": "string"
},
"status": {
"type": "string"
},
"tablesList": {
"type": "array",
"items": {
"$ref": "#/definitions/exasol_rest_api.Table"
}
}
}
},
"exasol_rest_api.InsertRowRequest": {
"type": "object",
"properties": {
"row": {
"type": "array",
"items": {
"$ref": "#/definitions/exasol_rest_api.Value"
}
},
"schemaName": {
"type": "string"
},
"tableName": {
"type": "string"
}
}
},
"exasol_rest_api.RowsRequest": {
"type": "object",
"properties": {
"condition": {
"$ref": "#/definitions/exasol_rest_api.Condition"
},
"schemaName": {
"type": "string"
},
"tableName": {
"type": "string"
}
}
},
"exasol_rest_api.Table": {
"type": "object",
"properties": {
"schemaName": {
"type": "string"
},
"tableName": {
"type": "string"
}
}
},
"exasol_rest_api.UpdateRowsRequest": {
"type": "object",
"properties": {
"condition": {
"$ref": "#/definitions/exasol_rest_api.Condition"
},
"row": {
"type": "array",
"items": {
"$ref": "#/definitions/exasol_rest_api.Value"
}
},
"schemaName": {
"type": "string"
},
"tableName": {
"type": "string"
}
}
},
"exasol_rest_api.Value": {
"type": "object",
"properties": {
"columnName": {
"type": "string"
},
"value": {}
}
}
},
"parameters": {},
"responses": {},
"securityDefinitions": {
"API Key": {
"type": "apiKey",
"in": "header",
"name": "Authorization"
}
},
"security": [
{
"API Key": []
}
],
"tags": []
}

Просмотреть файл

@ -0,0 +1,45 @@
{
"properties": {
"connectionParameters": {
"api_key": {
"type": "securestring",
"uiDefinition": {
"displayName": "API Key",
"description": "The API Key for this API",
"tooltip": "Provide your API Key",
"constraints": {
"tabIndex": 2,
"clearText": false,
"required": "true"
}
}
},
"api": {
"type": "string",
"uiDefinition": {
"displayName": "Host",
"description": "Host (ip address or host name)",
"tooltip": "Provide Host name or IP address",
"constraints": {
"tabIndex": 1,
"clearText": false,
"required": "true"
}
}
}
},
"iconBrandColor": "#2F5AAF",
"capabilities": [],
"publisher": "Exasol AG",
"stackOwner": "Exasol AG",
"policyTemplateInstances": [
{
"templateId": "dynamichosturl",
"title": "host url",
"parameters": {
"x-ms-apimTemplateParameter.urlTemplate": "https://@connectionParameters('api')/api/v1"
}
}
]
}
}