The DataLake GraphQL Wrapper provides a GraphQL API for presto/trino.
- Automatic endpoint generation via interactive cli
- Generates the interfaces and available endpoint fields based on the fetched database schema
- Generates the filter fields for all root fields
- Sorting
- Pagination
- Support for nested fields
- date/time transformation
- Written in TypeScript
- Easy to extend
- Using only Open Source Software
- It's free
git clone [email protected]:dbsystel/datalake-graphql-wrapper.git
cd datalake-graphql-wrapper
npm i
cp .env.example .env# Generate the index file to have all schemas available
npm run cli:index
# Start the dev server
npm run devTo get started, you have to update the .env file.
| Variable | Required | Description |
|---|---|---|
| ENGINE_TYPE | Yes | Changes the header variable to switch between presto and trino. The value will be used in the sql client. Valid values are: trino / presto |
| ENGINE_HOST | Yes | Presto/Trino coordinator hostname or address |
| ENGINE_PORT | Yes | Presto/Trino coordinator port |
| ENGINE_CATALOG | Yes | Presto/Trino catalog name |
| ENGINE_USERNAME | Yes | User which will be used to login |
| ENGINE_PASSWORD | Yes | Password for the user |
| ENGINE_SOURCE | No | Source name which will be used for the query. Default is nodejs-client |
# Start the interactive endpoint generation
npm run cli
# Generate only the index.ts with all generated schemata
npm run cli:index
The following args are available for npm run cli
| Arg | Description | Example |
|---|---|---|
--schema |
Sets the schema name and skips the cli prompt | npm run cli -- --schema<schemaname> |
| --table | Sets the table and skips the cli prompt. You can define multiple tables. Should be only used if you use --schema |
npm run cli -- --schema<schemaname> --table <table1_in_schema> --table <table2_in_schema> |
| --lint | Disable lint. Helpful if you want to run the code generator multiple times. ( e.g. for different schemas ) |
npm run cli -- --lint false |
| --index | Disable index file generation. Helpful if you want to run the code generator multiple times. ( e.g. for different schemas ) |
npm run cli -- --index false |
| --indexonly | Skips the questions for schema/table and generates only thesrc/schema/index.ts file based on the existing endpoints. ( helpful if you created your own endpoint) |
npm run cli -- --onlyindex true / Alias: npm run cli:index |
To start the code generator you have to run the following command.
npm run cliOr if you know the schema and tablename, you can also use this command:
npm run cli -- --schema <schemaname> --table <tablename>npm run cli:indexTo run the server in development mode:
npm run devOtherwise, use:
npm run startWe're using REUSE to ensure everything is compliant.
To install it locally, please ensure that you have python installed.
Run the following command to install it:
pip install -r requirements.txtTo run the linter:
reuse lint- Add tests
- More documentation
- Add/Create some HowTos
- Manual endpoint creation
- Authorization
- https://pothos-graphql.dev
- https://the-guild.dev/graphql/yoga-server
- https://github.com/tagomoris/presto-client-node
This project is licensed under Apache-2.0
See how to contribute
Trino is open source software licensed under the Apache License 2.0 and supported by the Trino Software Foundation.
Presto is a registered trademark of LF Projects, LLC.