1
Fork 0
mirror of https://github.com/Airsequel/AirGQL.git synced 2025-07-31 02:06:44 +03:00
[MIRROR] Automatically generate a GraphQL API for any SQLite database
Find a file
prescientmoon 58e3f0bb7b Add insertonly endpoint to airgql server
I removed the `readonlyGqlPostHandler` thingy from airgql,
as it seemed to be a slightly worse version of the existing more
general gql post handler. The one difference is that it was trying
to use the readonly db directory, although the token already protected
the queries to reading only, so this didn't matter. Moreover, the
writeonly endpoint was also using the readonly directory, which seemed
like a mistake (I removed that handler as well in favour of passing the
`writeonly` access mode to the existing handler).

I also fixed a TODO, making it so the readonly airsequel-cli handler
takes the edition into account.
2024-12-07 16:47:58 +01:00
app AirGQL: Clean up documentation, remove obsolete references to Airsequel 2024-05-03 08:39:25 +00:00
images AirGQL: Clean up documentation, remove obsolete references to Airsequel 2024-05-03 08:39:25 +00:00
source Add insertonly endpoint to airgql server 2024-12-07 16:47:58 +01:00
tests Implement insert-only tokens 2024-12-07 16:30:24 +01:00
.gitignore AirGQL: Clean up documentation, remove obsolete references to Airsequel 2024-05-03 08:39:25 +00:00
makefile AirGQL: Add make targets release & docs, set hash of first commit 2024-05-03 08:47:15 +00:00
package.yaml Fix (most) introspection airgql tests 2024-11-14 18:03:08 +01:00
readme.md Upgrade Stackage LTS version of AirGQL as well 2024-06-06 20:08:52 +00:00
Setup.hs AirGQL: Clean up documentation, remove obsolete references to Airsequel 2024-05-03 08:39:25 +00:00
stack-standalone.yaml Update stack resolver for airgql 2024-09-05 14:16:40 +02:00
stack-standalone.yaml.lock Lock Deno version in Dockerfile 2024-10-11 11:01:07 +00:00

AirGQL

Automatically generate a GraphQL API for an SQLite database.

Diagram of SQL to GraphQL conversion

How It Works

It analyses the database schema and builds the corresponding GraphQL introspection and data resolvers.

The generated API supports all basic CRUD operations and even complex queries and mutations including filters and pagination.

It is designed to be either used a Haskell library for integrating GraphQL support into existing servers or as a standalone CLI app for quickly spinning up a backend.

AirGQL is the core component of Airsequel, which provides a complete solution for building web applications on top of SQLite databases.

Installation

CLI Tool

You can install the CLI app using Stack:

git clone https://github.com/Airsequel/AirGQL
cd AirGQL
make install

Library

You can also use AirGQL in your Haskell project by adding the Hackage package as a dependency to your package.yaml or your *.cabal file:

dependencies:
  - airgql
  - 

Also set the lib-only flag in your stack.yaml file to avoid irrelevant errors:

flags:
  airgql:
    lib-only: true

Usage

CLI App

Run following command to start a GraphQL API server for an existing SQLite database:

stack run -- serve tests/example.sqlite

Then you can query the API like this:

http POST http://localhost:4189/graphql \
  query='query {
    songs(limit: 2) {
      id
      title
    }
  }'

It also supports mutations:

http POST http://localhost:4189/graphql \
  query='mutation {
    insert_songs(objects: [{ title: "New Song" }]) {
      returning {
        id
        title
      }
    }
  }'

Check out the documentation at docs.airsequel.com/graphql-api for more details on how to use all of its GraphQL features.

Library

Check out the code in app/Main.hs file for an example of how to build a simple Servant server leveraging AirGQL.