def as_json {id: @article.id, title: @article.title, thumbnail_url: @article.thumbnail_url} end end get "/articles" do Article.all.map {|a| ArticleEntity.new(a) }.to_json end get "/articles/:id" do ArticleEntity.new(Article.find(params[:id]).to_json end
end class ArticleDetailEntity < ArticleCommonEntity; def as_json super.merge(thumbnail_url: @article.thumbnail_url) end end get "/articles" do Article.all.map {|a| ArticleListEntity.new(a) }.to_json end get "/articles/:id" do ArticleDetailEntity.new(Article.find(params[:id]).to_json end
false field :title, String, null: false field :thumbnail_url, String, null: false end class QueryType < Types::BaseObject field :articles, [ArticleType], null: true field :article, ArticleType, null: true do argument :id, ID, required: true end def articles; Article.all; end def article(id:); Article.find(id); end end class AppSchema < GraphQL::Schema query QueryType end post "/graphql" do AppSchema.execute( Params[:query], Params[:variables] ).to_json end