loopback-graphql-relay
Version:
Add Relay based Apollo Server or GraphQL queries on your Loopback server
98 lines (76 loc) • 3.96 kB
Markdown
### Status 🎊
[](https://badge.fury.io/js/loopback-graphql-relay) [](https://travis-ci.org/BlueEastCode/loopback-graphql-relay) [](https://www.bithound.io/github/BlueEastCode/loopback-graphql-relay) [](https://www.bithound.io/github/BlueEastCode/loopback-graphql-relay/develop/dependencies/npm) [](https://www.bithound.io/github/BlueEastCode/loopback-graphql-relay/develop/dependencies/npm) [](https://www.bithound.io/github/BlueEastCode/loopback-graphql-relay) [](https://snyk.io/test/npm/loopback-graphql-relay)
# Relay GraphQL Server for Loopback (Apollo Server)
Combine the powers of [ApolloStack](http://www.apollostack.com/) GraphQL with the backend of Loopback to automatically generate GraphQL endpoints based on Loopback Schema.

## Caution ⚠️
This is a work in progress. Until version 1.0 endpoint API may change.
## Queries 💥
- Relay Specification: `node` query to fetch single entity by ID
- `viewer` query to fetch all models for a viewer
- Filter support for `where` and `order` filters on queries
- Support for relations and querying related data
- Relay Connections support for listed data
- Relay Pagination (`first`, `last`, `before`, `after`)
- Remote methods integration
## Mutations 🚀
- Nested and clean schema structure
- Maps all `post`, `put`, `patch` and `delete` methods to mutations
- Remote methods integration
## Subscriptions ⚡️
- `create`, `update` and `remove` events of all shared models.
## Other Features 🎉
### Loopback Types
- [x] Any
- [x] Array
- [x] Boolean
- [ ] Buffer
- [x] Date
- [x] GeoPoint
- [x] Null
- [x] Number
- [x] Object
- [x] String
### Loopback Relations
- [x] BelongsTo
- [x] HasOne
- [x] HasMany
- [ ] HasManyThrough
- [x] HasAndBelongsToMany
- [ ] Polymorphic
- [x] EmbedsOne
- [x] EmbedsMany
- [x] ReferencesMany
### Misc
- Accepts AccessToken for authenticated API calls
### Todo
- [ ] File uploads
## Usage 💻
```sh
npm install loopback-graphql-relay
```
Add the loopback-graphql-relay component to the `server/component-config.json`:
```
"loopback-graphql-relay": {
"path": "/graphql",
"graphiqlPath": "/graphiql",
"subscriptionServer": {
"disable": false,
"port": 5000,
"options": {},
"socketOptions": {}
},
"viewer": {
"AccessTokenModel": "CustomAccessToken",
"relation": "user",
"UserModel": "Account"
}
}
```
Requests will be posted to `path` path. (Default: `/graphql`);
Graphiql is available on `graphiqlPath` path. (Default: `/graphiql`);
Apollo's Subscription Server can be customised by passing `subscriptionServer` configuration. More information can be found at [SubscriptionServer Docs](https://github.com/apollographql/subscriptions-transport-ws#subscriptionserver).
## Inspiration 🙌
This repository originally started as a fork of the [loopback-graphql](https://github.com/Tallyb/loopback-graphql) project by [Tallyb](https://github.com/Tallyb). But due to considerable change in the way query end points are created, this repository is maitained as an independant project.
## Roadmap 🛣
[See here the Github project](https://github.com/BlueEastCode/loopback-graphql-relay/projects)