Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

View shrirambalakrishnan's full-sized avatar

Shriram shrirambalakrishnan

View GitHub Profile
Types::MovieType = GraphQL::ObjectType.define do
name 'Movie'
description 'Movie Details'
field :id, !types.ID
field :name, !types.String
field :genre, types.String
field :year, types.String
end
field :first_movie do
type Types::MovieType
description "Return the first movie"
resolve ->(obj, args, ctx) { Movie.first }
end
field :movies do
type types[Types::MovieType]
description "Return the first movie"
resolve ->(obj, args, ctx) { Movie.all }
end
Types::ActorType = GraphQL::ObjectType.define do
name 'Actor'
description 'Actor Details'
field :id, !types.ID
field :name, !types.String
field :gender, types.String
field :date_of_birth, types.String
end
Types::MovieType = GraphQL::ObjectType.define do
name 'Movie'
description 'Movie Details'
field :id, !types.ID
field :name, !types.String
field :genre, types.String
field :year, types.String
field :actors do
type types[Types::ActorType]
description "Actor"
field :create_movie,
description: "Create new movie",
function: Resolvers::CreateMovie.new
class Resolvers::CreateMovie < GraphQL::Function
# arguments passed as "args"
argument :name, !types.String
argument :year, types.String
argument :genre, types.String
# return type from the mutation
type Types::MovieType
# the mutation method
def call(_obj, args, _ctx)
movie_params = { name: args[:name], year: args[:year], genre: args[:genre] }
<ol class="movies-list">
<% @movies.each do |movie| %>
<li>
<div>
<span><%= movie.name %></span>
</div>
</li>
<% end %>
</ol>
class MoviesController < ApplicationController
def index
@movies = Movie.all
end
end
# app/channels/movies_channel.rb
class MoviesChannel < ApplicationCable::Channel
# Called when any consumer subscribes to this channel.
def subscribed
stream_from "movies"
end
end