mirror of
https://github.com/we-promise/sure.git
synced 2026-06-04 10:19:03 +00:00
refactor(imports): focus Sure preflight scope (#1833)
This commit is contained in:
@@ -35,14 +35,14 @@ class Api::V1::ImportsController < Api::V1::BaseController
|
||||
|
||||
rescue StandardError => e
|
||||
Rails.logger.error "ImportsController#index error: #{e.message}"
|
||||
render json: { error: "internal_server_error", message: e.message }, status: :internal_server_error
|
||||
render json: { error: "internal_server_error", message: "An unexpected error occurred." }, status: :internal_server_error
|
||||
end
|
||||
|
||||
def show
|
||||
render :show
|
||||
rescue StandardError => e
|
||||
Rails.logger.error "ImportsController#show error: #{e.message}"
|
||||
render json: { error: "internal_server_error", message: e.message }, status: :internal_server_error
|
||||
render json: { error: "internal_server_error", message: "An unexpected error occurred." }, status: :internal_server_error
|
||||
end
|
||||
|
||||
def rows
|
||||
@@ -58,7 +58,7 @@ class Api::V1::ImportsController < Api::V1::BaseController
|
||||
render :rows
|
||||
rescue StandardError => e
|
||||
Rails.logger.error "ImportsController#rows error: #{e.message}"
|
||||
render json: { error: "internal_server_error", message: e.message }, status: :internal_server_error
|
||||
render json: { error: "internal_server_error", message: "An unexpected error occurred." }, status: :internal_server_error
|
||||
end
|
||||
|
||||
def create
|
||||
@@ -133,7 +133,7 @@ class Api::V1::ImportsController < Api::V1::BaseController
|
||||
|
||||
rescue StandardError => e
|
||||
Rails.logger.error "ImportsController#create error: #{e.message}"
|
||||
render json: { error: "internal_server_error", message: e.message }, status: :internal_server_error
|
||||
render json: { error: "internal_server_error", message: "An unexpected error occurred." }, status: :internal_server_error
|
||||
end
|
||||
|
||||
def preflight
|
||||
@@ -156,7 +156,7 @@ class Api::V1::ImportsController < Api::V1::BaseController
|
||||
|
||||
render json: {
|
||||
error: "internal_server_error",
|
||||
message: "Error: #{e.message}"
|
||||
message: "Import preflight could not be completed."
|
||||
}, status: :internal_server_error
|
||||
end
|
||||
|
||||
@@ -242,7 +242,7 @@ class Api::V1::ImportsController < Api::V1::BaseController
|
||||
end
|
||||
|
||||
begin
|
||||
@import.publish_later if @import.publishable? && params[:publish] == "true"
|
||||
@import.publish_later if params[:publish] == "true"
|
||||
rescue Import::MaxRowCountExceededError
|
||||
render json: {
|
||||
error: "max_row_count_exceeded",
|
||||
@@ -250,6 +250,22 @@ class Api::V1::ImportsController < Api::V1::BaseController
|
||||
import_id: @import.id
|
||||
}, status: :unprocessable_entity
|
||||
return
|
||||
rescue SureImport::PreflightError
|
||||
render json: {
|
||||
error: "preflight_failed",
|
||||
message: "Import was uploaded but did not pass Sure NDJSON preflight.",
|
||||
errors: sure_import_error_lines,
|
||||
import_id: @import.id
|
||||
}, status: :unprocessable_entity
|
||||
return
|
||||
rescue SureImport::NotPublishableError => e
|
||||
Rails.logger.warn "Sure import not publishable for import #{@import.id}: #{e.message}"
|
||||
render json: {
|
||||
error: "not_publishable",
|
||||
message: "Import was uploaded but has no publishable records.",
|
||||
import_id: @import.id
|
||||
}, status: :unprocessable_entity
|
||||
return
|
||||
rescue StandardError => e
|
||||
Rails.logger.error "Sure import publish failed for import #{@import.id}: #{e.message}"
|
||||
restore_pending_sure_import_after_publish_failure
|
||||
@@ -284,6 +300,8 @@ class Api::V1::ImportsController < Api::V1::BaseController
|
||||
@import.update_column(:status, "pending") if @import&.persisted? && @import.importing?
|
||||
end
|
||||
|
||||
def sure_import_error_lines = @import.error.to_s.lines.map(&:strip).reject(&:blank?)
|
||||
|
||||
def clean_up_failed_sure_import(import)
|
||||
return unless import
|
||||
|
||||
|
||||
Reference in New Issue
Block a user