30 lines
776 B
Crystal
30 lines
776 B
Crystal
module App::Lib
|
|
abstract class BaseController
|
|
def map_changeset_errors(errors)
|
|
errors.reduce({} of String => Array(String)) do |memo, error|
|
|
memo[error[:field]] = memo[error[:field]]? || [] of String
|
|
memo[error[:field]] << error[:message]
|
|
memo
|
|
end
|
|
end
|
|
|
|
def parse_body(env, fields)
|
|
json_params = env.params.json.to_h
|
|
missing_fields = [] of String
|
|
|
|
fields.each do |field|
|
|
unless json_params.has_key?(field)
|
|
missing_fields << field
|
|
end
|
|
end
|
|
|
|
unless missing_fields.empty?
|
|
error_message = missing_fields.map { |field| "#{field}: Required field" }.join(", ")
|
|
raise App::BadRequestException.new(env, error_message)
|
|
end
|
|
|
|
json_params
|
|
end
|
|
end
|
|
end
|