ember-graphql-adapter v1.1.5
Ember Data GraphQL Adapter
A Ember CLI adapter for using GraphQL with Ember Data.
Installation
ember install ember-graphql-adapter
Usage
Create your adapter first
// app/adapters/post.js
import GraphQLAdapter from 'ember-graphql-adapter';
export default GraphQLAdapter.extend({
endpoint: 'http://localhost:3000/graph'
});Now define your serializer
// app/serializers/post.js
import { Serializer } from 'ember-graphql-adapter';
export default Serializer.extend({});And you're done!
Features
- Queries and mutations are automatically generated for you
- Field aliases are supported
- Belongs to relationships are fully supported
- Has many relationships are fully supported
- Async relationships and request coalescing is supported with
coalesceFindRequests: true
Rails Example
By using the fantastic graphql gem, you can expose your relational database as a GraphQL endpoint.
We start by creating a new type
# app/models/graph/post_type.rb
module Graph
PostType = GraphQL::ObjectType.define do
name "Post"
description "A post"
field :id, types.ID
field :name, types.String
end
endThen we create the query type
# app/models/graph/query_type.rb
module Graph
QueryType = GraphQL::ObjectType.define do
name "Query"
description "The query root of this schema"
field :post, PostType do
argument :id, !types.ID, "The ID of the post"
resolve -> (_object, arguments, _context) do
Post.find(arguments[:id])
end
end
end
endAfter that, it's time for the mutation type
# app/models/graph/mutation_type.rb
module Graph
MutationType = GraphQL::ObjectType.define do
name "Mutation"
description "Mutations"
field :postCreate, PostType do
argument :name, !types.String, "The post name"
resolve -> (_object, arguments, _context) do
Post.create(name: arguments[:name])
end
end
end
endNow, we can build the whole schema
# app/models/graph/schema.rb
module Graph
Schema = GraphQL::Schema.define do
query Graph::QueryType
mutation Graph::MutationType
end
endIn the controller we just delegate to the GraphQL schema
# app/controllers/graph_controller.rb
class GraphController < ApplicationController
def execute
render json: ::Graph::Schema.execute(
params.fetch("query"),
context: {} # you can pass the current_user here
)
end
endFinally, we just expose the GraphQL endpoint in the route
# config/routes.rb
get 'graph', to: 'graph#execute'And that's it!
Developing
Installation
git clone https://github.com/alphasights/ember-graphql-adapter.gityarn install
Running
yarn start
Running Tests
yarn run ember test -- --server
Building
yarn build
4 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago