# https://github.com/jaydenseric/apollo-upload-client
# sends params[:operations] on multipart submission
# fix query and variables before the #execute

# params["variables.file"] is a regular ActionDispatch::Http::UploadedFile object
def execute
  context = {
    # Query context goes here, for example:
    # current_user: current_user,
  }

  if params[:operations].present?
    operations = ensure_hash(params[:operations])
    variables = {
      "input" => operations[:variables].
                  merge({"file" => params["variables.file"]})
    }
    query     = operations[:query]
  else
    variables = ensure_hash(params[:variables])
    query     = params[:query]
  end

  result = YourRailsAppSchema.execute(query, variables: variables, context: context)
  render json: result
end