mirror of
https://github.com/we-promise/sure.git
synced 2026-05-12 23:25:00 +00:00
feat(api): expose import status details (#1599)
* feat(api): expose import status details * fix(api): reuse import status validation counts * fix(api): cache Sure import status reads * fix(imports): invalidate cached Sure import blobs * docs(api): split import status schemas * fix(api): refine import status detail contract
This commit is contained in:
22
app/views/api/v1/imports/_status_detail.json.jbuilder
Normal file
22
app/views/api/v1/imports/_status_detail.json.jbuilder
Normal file
@@ -0,0 +1,22 @@
|
||||
uploaded = local_assigns[:uploaded]
|
||||
uploaded = import.uploaded? if uploaded.nil?
|
||||
configured = local_assigns[:configured]
|
||||
configured = import.configured_for_status_detail? if configured.nil?
|
||||
|
||||
json.uploaded uploaded
|
||||
json.configured configured
|
||||
json.terminal import.complete? || import.failed? || import.revert_failed?
|
||||
|
||||
if include_validation_stats
|
||||
valid_rows_count = local_assigns.fetch(:valid_rows_count)
|
||||
invalid_rows_count = local_assigns.fetch(:invalid_rows_count)
|
||||
|
||||
cleaned = local_assigns[:cleaned]
|
||||
publishable = local_assigns[:publishable]
|
||||
cleaned = import.cleaned_from_validation_stats?(invalid_rows_count: invalid_rows_count) if cleaned.nil?
|
||||
publishable = import.publishable_from_validation_stats?(invalid_rows_count: invalid_rows_count) if publishable.nil?
|
||||
|
||||
json.cleaned cleaned
|
||||
json.publishable publishable
|
||||
json.revertable import.revertable?
|
||||
end
|
||||
@@ -8,6 +8,9 @@ json.data do
|
||||
json.account_id import.account_id
|
||||
json.rows_count import.rows_count
|
||||
json.error import.error if import.error.present?
|
||||
json.status_detail do
|
||||
json.partial! "status_detail", import: import, include_validation_stats: false
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -1,3 +1,10 @@
|
||||
rows = @import.rows.to_a
|
||||
valid_rows_count = rows.count(&:valid?)
|
||||
invalid_rows_count = rows.length - valid_rows_count
|
||||
cleaned = @import.cleaned_from_validation_stats?(invalid_rows_count: invalid_rows_count)
|
||||
publishable = @import.publishable_from_validation_stats?(invalid_rows_count: invalid_rows_count)
|
||||
mapping_counts = @import.mapping_status_counts
|
||||
|
||||
json.data do
|
||||
json.id @import.id
|
||||
json.type @import.type
|
||||
@@ -6,6 +13,15 @@ json.data do
|
||||
json.updated_at @import.updated_at
|
||||
json.account_id @import.account_id
|
||||
json.error @import.error if @import.error.present?
|
||||
json.status_detail do
|
||||
json.partial! "status_detail",
|
||||
import: @import,
|
||||
include_validation_stats: true,
|
||||
valid_rows_count: valid_rows_count,
|
||||
invalid_rows_count: invalid_rows_count,
|
||||
cleaned: cleaned,
|
||||
publishable: publishable
|
||||
end
|
||||
|
||||
json.configuration do
|
||||
json.date_col_label @import.date_col_label
|
||||
@@ -22,7 +38,10 @@ json.data do
|
||||
|
||||
json.stats do
|
||||
json.rows_count @import.rows_count
|
||||
json.valid_rows_count @import.rows.select(&:valid?).count if @import.rows.loaded?
|
||||
json.valid_rows_count valid_rows_count
|
||||
json.invalid_rows_count invalid_rows_count
|
||||
json.mappings_count mapping_counts[:mappings_count]
|
||||
json.unassigned_mappings_count mapping_counts[:unassigned_mappings_count]
|
||||
end
|
||||
|
||||
# Only show a subset of rows for preview if needed, or link to a separate rows endpoint
|
||||
|
||||
Reference in New Issue
Block a user