{"id":15192378,"url":"https://github.com/airsequel/airgql","last_synced_at":"2025-10-14T07:08:55.146Z","repository":{"id":243409491,"uuid":"795052975","full_name":"Airsequel/AirGQL","owner":"Airsequel","description":"Automatically generate a GraphQL API for any SQLite database","archived":false,"fork":false,"pushed_at":"2025-05-21T18:36:10.000Z","size":387,"stargazers_count":24,"open_issues_count":22,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-03T19:54:07.545Z","etag":null,"topics":["airsequel","api","automatic","automatic-api","generator","gql","graphql","graphql-api","haskell","instant","schema","servant","server","sql","sqlite"],"latest_commit_sha":null,"homepage":"https://docs.airsequel.com/graphql-api","language":"Haskell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Airsequel.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":["Airsequel"]}},"created_at":"2024-05-02T13:45:08.000Z","updated_at":"2025-07-27T19:11:06.000Z","dependencies_parsed_at":"2024-06-08T17:57:40.387Z","dependency_job_id":"1db05b84-13f7-4b3b-bd25-d4d064936fb5","html_url":"https://github.com/Airsequel/AirGQL","commit_stats":null,"previous_names":["airsequel/airgql"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Airsequel/AirGQL","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Airsequel%2FAirGQL","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Airsequel%2FAirGQL/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Airsequel%2FAirGQL/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Airsequel%2FAirGQL/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Airsequel","download_url":"https://codeload.github.com/Airsequel/AirGQL/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Airsequel%2FAirGQL/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279018206,"owners_count":26086303,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-14T02:00:06.444Z","response_time":60,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["airsequel","api","automatic","automatic-api","generator","gql","graphql","graphql-api","haskell","instant","schema","servant","server","sql","sqlite"],"created_at":"2024-09-27T21:22:57.890Z","updated_at":"2025-10-14T07:08:55.101Z","avatar_url":"https://github.com/Airsequel.png","language":"Haskell","readme":"# AirGQL\n\nAutomatically generate a GraphQL API for an SQLite database.\n\n\u003cimg\n  alt=\"Diagram of SQL to GraphQL conversion\"\n  src=\"./images/sql_to_graphql.png\"\n  style=\"width: 60%;\"\n/\u003e\n\n## How It Works\n\nIt analyses the database schema\nand builds the corresponding GraphQL introspection and data resolvers.\n\nThe generated API supports all basic CRUD operations and\neven complex queries and mutations including filters and pagination.\n\nIt is designed to be either used a Haskell library\nfor integrating GraphQL support into existing servers\nor as a standalone CLI app for quickly spinning up a backend.\n\nAirGQL is the core component of [Airsequel](https://www.airsequel.com/),\nwhich provides a complete solution for building web applications\non top of SQLite databases.\n\n\n## Installation\n\n### CLI Tool\n\nYou can install the CLI app using\n[Stack](https://docs.haskellstack.org/en/stable/):\n\n```sh\ngit clone https://github.com/Airsequel/AirGQL\ncd AirGQL\nmake install\n```\n\n\n### Library\n\nYou can also use AirGQL in your Haskell project\nby adding the [Hackage package](https://hackage.haskell.org/package/airgql)\nas a dependency to your `package.yaml` or your `*.cabal` file:\n\n```yaml\ndependencies:\n  - airgql\n  - …\n```\n\nAlso set the `lib-only` flag in your `stack.yaml` file\nto avoid irrelevant errors:\n\n```yaml\nflags:\n  airgql:\n    lib-only: true\n```\n\n\n## Usage\n\n### CLI App\n\nRun following command to start a GraphQL API server\nfor an existing SQLite database:\n\n```sh\nstack run -- serve tests/example.sqlite\n```\n\nThen you can query the API like this:\n\n```sh\nhttp POST http://localhost:4189/graphql \\\n  query='query {\n    songs(limit: 2) {\n      id\n      title\n    }\n  }'\n```\n\nIt also supports mutations:\n\n```sh\nhttp POST http://localhost:4189/graphql \\\n  query='mutation {\n    insert_songs(objects: [{ title: \"New Song\" }]) {\n      returning {\n        id\n        title\n      }\n    }\n  }'\n```\n\nCheck out the documentation at\n[docs.airsequel.com/graphql-api](https://docs.airsequel.com/graphql-api)\nfor more details on how to use all of its GraphQL features.\n\n\n### Library\n\nCheck out the code in [app/Main.hs](./app/Main.hs) file for an example\nof how to build a simple [Servant](https://www.servant.dev/) server\nleveraging AirGQL.\n","funding_links":["https://github.com/sponsors/Airsequel"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fairsequel%2Fairgql","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fairsequel%2Fairgql","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fairsequel%2Fairgql/lists"}