class OpenAPIRest::QueryResponse

Rest Query Response

Attributes

errors[R]
query_builder[R]

Public Class Methods

new(query_builder) click to toggle source
# File lib/openapi_rest/query_response.rb, line 14
def initialize(query_builder)
  @query_builder = query_builder
  @errors = []
end

Public Instance Methods

create_resource() click to toggle source
# File lib/openapi_rest/query_response.rb, line 19
def create_resource
  @operation = :post

  api_params = OpenAPIRest::ApiParameters.new(api_model: @query_builder.api_model,
                                              params: @query_builder.params,
                                              openapi_path: @query_builder.openapi_path)
  unless api_params.valid?
    @errors = api_params.validation_errors
    return
  end

  create_params = api_params.allowed_params.merge!(@query_builder.query)
  @model = @query_builder.raw_model.new(create_params)

  return if @model.valid? && @model.save

  build_errors
end
delete_resource() click to toggle source
# File lib/openapi_rest/query_response.rb, line 57
def delete_resource
  @operation = :delete
  @model = @query_builder.raw_model
  return if !@model.nil? && @model.destroy

  build_errors
end
errors?() click to toggle source
# File lib/openapi_rest/query_response.rb, line 77
def errors?
  !@errors.empty?
end
results() click to toggle source
# File lib/openapi_rest/query_response.rb, line 73
def results
  @model ||= @query_builder.raw_model
end
results?() click to toggle source
# File lib/openapi_rest/query_response.rb, line 65
def results?
  if single?
    !results.nil?
  else
    results.count > 0
  end
end
update_resource() click to toggle source
# File lib/openapi_rest/query_response.rb, line 38
def update_resource
  @operation = :patch

  api_params = OpenAPIRest::ApiParameters.new(api_model: @query_builder.api_model,
                                              params: @query_builder.params,
                                              openapi_path: @query_builder.openapi_path)

  unless api_params.valid?
    @errors = api_params.validation_errors
    return
  end

  @model = @query_builder.raw_model

  return if !@model.nil? && @model.update(api_params.allowed_params)

  build_errors
end

Private Instance Methods

build_errors() click to toggle source
# File lib/openapi_rest/query_response.rb, line 83
def build_errors
  return if @model.nil?

  @errors = @model.errors.keys.map { |k| { k => @model.errors[k].first } }
end