Skip to content

Commit

Permalink
Add documentation for core package (#22)
Browse files Browse the repository at this point in the history
* Add documentation

* Add example code

* Fix query

* Add example docu and changed completion trigger

* Added a test for completions
  • Loading branch information
Lotes committed Jun 6, 2023
1 parent 2b7efa7 commit 4ef46ad
Show file tree
Hide file tree
Showing 5 changed files with 709 additions and 2 deletions.
4 changes: 3 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# Langium/SQL

This project is going to provide a language server for SQL dialects.
This project provides a language server for SQL dialects.

Go to the [core package](./packages/langium-sql/README.md) for better documentation.
62 changes: 62 additions & 0 deletions packages/langium-sql/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
# Langium/SQL

This project provides a language server for SQL dialects.

## Features

* **Schema-driven**: Add a set of table definitions to spread out the world for your SELECT queries.
The table definitions can be located in a different file of the same workspace. You can keep definitions and queries separated.
* **Code completion**: Press Ctrl + Space keys to trigger the completion directly. You will get suggestions for the current context.
* **Syntax highlighting**: to distinguish what are keywords, identifiers, numeric literals and for a better perception of the SQL syntax.
* **Symbol search**: Use Cmd or Ctrl + mouse click on a column name to find the definition of it or explore the places where a column is used.
* **Fast feedback** about contextual correctness: Whether referenced columns exist or types on certain operators are matching.
* **Super-set approach**: Any piece of any dialect that is missing can be added to the main grammar and be protected from other dialects using validations.
* **Highly customizable**: Any behavior or aspect that is missing for your specific use case can be easily overwritten.

![](docs/langium_sql.svg)

## Demo

We prepared a showcase on the Langium project website. You can find it [here](https://langium.org/showcase/sql/).

The given schema describes an airport database. It contains tables for airports, airlines, flights, and passengers. The queries are written in the MySQL dialect.

## Getting started

### Installation

```sh
npm install langium-sql
```

or

```sh
yarn add langium-sql
```

## Example usage

Here is a minimal example of how to use the Langium/SQL language server in your project.

```ts
import { parseHelper, createTestServices } from "../test-utils";
import { join } from "path";
import { MySqlDialectTypes } from "../../src/dialects/mysql/data-types";

const services = createTestServices(MySqlDialectTypes);
const parse = await parseHelper(services.Sql, join('path', 'to', 'schemas.sql'));
const document = await parse("SELECT * FROM my_table;");

console.log(document.parseResult.value);
```

See more examples in the [Langium test folder](test/).

### Learn more

Look at the [announcing blog post](https://www.typefox.io/blog/langium-sql) or the [Langium documentation](https://github.com/langium/langium#documentation) to get familiar with the project structure.

## License

[MIT](../../LICENSE)
Loading

0 comments on commit 4ef46ad

Please sign in to comment.