• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

alphasights/ember-graphql-adapter: GraphQL adapter for Ember Data

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称(OpenSource Name):

alphasights/ember-graphql-adapter

开源软件地址(OpenSource Url):

https://github.com/alphasights/ember-graphql-adapter

开源编程语言(OpenSource Language):

JavaScript 97.7%

开源软件介绍(OpenSource Introduction):

Ember Data GraphQL Adapter

Npm Version Code Climate Circle CI Ember Observer Score Greenkeeper badge

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
end

Then 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
end

After 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
end

Now, 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
end

In 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
end

Finally, 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.git
  • yarn install

Running

  • yarn start

Running Tests

  • yarn run ember test -- --server

Building

  • yarn build



鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
fiyazbinhasan/GraphQLCore: Learn how to implement scalable APIs with GraphQL and ...发布时间:2022-06-22
下一篇:
Alexloof/Next-GraphQL-Blog: 发布时间:2022-06-22
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap