Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/exasol/extension-manager-interface
Interface for extensions for the extension-manager
https://github.com/exasol/extension-manager-interface
administration-tools-and-libraries exasol-integration
Last synced: about 1 month ago
JSON representation
Interface for extensions for the extension-manager
- Host: GitHub
- URL: https://github.com/exasol/extension-manager-interface
- Owner: exasol
- License: mit
- Created: 2022-04-27T07:05:26.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-05-22T07:17:34.000Z (7 months ago)
- Last Synced: 2024-05-22T15:38:14.095Z (7 months ago)
- Topics: administration-tools-and-libraries, exasol-integration
- Language: TypeScript
- Homepage:
- Size: 346 KB
- Stars: 1
- Watchers: 8
- Forks: 0
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Extension Manager Interface
[![Build Status](https://github.com/exasol/extension-manager-interface/actions/workflows/ci-build.yml/badge.svg)](https://github.com/exasol/extension-manager-interface/actions/workflows/ci-build.yml)
[![npm version](https://badge.fury.io/js/@exasol%2Fextension-manager-interface.svg)](https://badge.fury.io/js/@exasol%2Fextension-manager-interface)[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=%40exasol%2Fextension-manager-interface&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=%40exasol%2Fextension-manager-interface)
This is the interface definition for Exasol extensions that can be installed by the [Exasol extension-manager](https://github.com/exasol/extension-manager/).
## Creating New Extensions
This section describes how to create a new extension.
### Base Extension Types
You have the following options for creating a new extensions:
#### Generic Interface
The generic extension interface is defined in [src/api.ts](src/api.ts). It is the most flexible option but requires implementing all extension methods from scratch.
Example: [row-level-security-lua](https://github.com/exasol/row-level-security-lua/blob/main/extension/src/extension.ts)
#### Java `SCRIPT` Base
The base extension interface for Java `SCRIPT` based extension is defined in [src/base/index.ts](src/base/index.ts). It is useful for extensions that only consist of one or multiple Java `SCRIPT` UDFs and don't use instances.
Example: [cloud-storage-extension](https://github.com/exasol/cloud-storage-extension/blob/main/extension/src/extension.ts)
#### Java `VIRTUAL SCHEMA` Base
The base extension interface for Java `VIRTUAL SCHEMA`s is defined in [src/base-vs/index.ts](src/base-vs/index.ts). It is useful for JDBC or document based Virtual Schemas that are based on Java UDFs.
Examples:
* JDBC based: [oracle-virtual-schema](https://github.com/exasol/oracle-virtual-schema/blob/main/extension/src/extension.ts)
* Document based: [s3-document-files-virtual-schema](https://github.com/exasol/s3-document-files-virtual-schema/blob/main/extension/src/extension.ts)## Testing Extensions
Create unit tests for new extensions with Jest. In your test call the function `testJavaVirtualSchemaBaseExtension()` to also run shared unit tests:
```ts
import { testJavaVirtualSchemaBaseExtension } from '@exasol/extension-manager-interface/dist/base-vs-test/vsTestBase';
import { createExtension } from "./extension";// ...
testJavaVirtualSchemaBaseExtension(createExtension);
```These shared tests verify the following criteria:
* Parameter IDs don't contain a dot `.`
* Parameter IDs are unique
* The extension contains at least one version## Additional Information
* [Changelog](doc/changes/changelog.md)
* [Guide for developing an extension for Extension Manager](https://github.com/exasol/extension-manager/blob/main/doc/extension_developer_guide.md)
* [Developer Guide](doc/developer_guide/developer_guide.md)
* [Dependencies](dependencies.md)