evodata/app/controllers/api/v1/check_reports_controller.rb

37 lines
1.2 KiB
Ruby
Raw Normal View History

2022-01-27 17:42:47 +01:00
class Api::V1::CheckReportsController < Api::V1::BaseController
# POST /check-reports or /check-reports.json
def create
@check_report = CheckReport.new(check_report_params)
if @check_report.checks.empty?
2023-02-26 15:09:08 +01:00
render json: {message: "At least 1 check must be present"}, status: :unprocessable_entity
2022-01-27 17:42:47 +01:00
else
checks_params = @check_report.checks.map { |check|
2023-02-26 15:09:08 +01:00
{
hostname: @check_report.hostname,
date: @check_report.date,
name: check.fetch("name", ""),
description: check.fetch("description", "")
}
2022-01-27 17:42:47 +01:00
}
checks = Check.create(checks_params)
persisted = checks.count(&:persisted?)
invalid = checks.count(&:invalid?)
if checks.all?(&:persisted?)
2023-02-26 15:09:08 +01:00
render json: {message: "#{persisted} checks created"}, status: :created
2022-01-27 17:42:47 +01:00
else
2023-02-26 15:09:08 +01:00
render json: {message: "error while creating checks : #{persisted} persisted, #{invalid} invalid"}, status: :unprocessable_entity
2022-01-27 17:42:47 +01:00
end
end
end
private
# Only allow a list of trusted parameters through.
def check_report_params
params.require(:check_report).permit(:hostname, :date, {checks: [:name, :description]})
end
2023-02-26 15:09:08 +01:00
end