このコミットが含まれているのは:
2026-07-16 01:19:36 +09:00
コミット 3d88fdecb1
12個のファイルの変更534行の追加484行の削除
+101 -101
ファイルの表示
@@ -22,15 +22,15 @@ const buildResetSnapshot = (row: PostImportRow) => ({
export const processableImportRows = (rows: PostImportRow[]): PostImportRow[] =>
rows.filter (row => {
if (row.importStatus === 'created')
return false
if (row.importStatus === 'skipped')
return false
if (row.importStatus === 'failed')
return false
if (hasValidationErrors (row))
return false
return row.importStatus == null || row.importStatus === 'pending'
if (row.importStatus === 'created')
return false
if (row.importStatus === 'skipped')
return false
if (row.importStatus === 'failed')
return false
if (hasValidationErrors (row))
return false
return row.importStatus == null || row.importStatus === 'pending'
})
export const creatableImportRows = (rows: PostImportRow[]): PostImportRow[] =>
@@ -40,31 +40,31 @@ export const creatableImportRows = (rows: PostImportRow[]): PostImportRow[] =>
export const reviewSummaryCounts = (rows: PostImportRow[]) => ({
total: rows.length,
submittable: rows.filter (row =>
creatableImportRows ([row]).length > 0
&& !(hasValidationErrors (row))).length,
creatableImportRows ([row]).length > 0
&& !(hasValidationErrors (row))).length,
skipPlanned: rows.filter (row =>
processableImportRows ([row]).length > 0
&& hasSkipReason (row)).length })
processableImportRows ([row]).length > 0
&& hasSkipReason (row)).length })
export const resultSummaryCounts = (rows: PostImportRow[]) =>
rows.reduce (
(counts, row) => {
if (row.importStatus === 'created')
{
++counts.created
return counts
}
if (row.importStatus === 'skipped')
{
++counts.skipped
return counts
}
if (row.importStatus === 'failed')
++counts.failed
return counts
},
{ created: 0, skipped: 0, failed: 0 })
(counts, row) => {
if (row.importStatus === 'created')
{
++counts.created
return counts
}
if (row.importStatus === 'skipped')
{
++counts.skipped
return counts
}
if (row.importStatus === 'failed')
++counts.failed
return counts
},
{ created: 0, skipped: 0, failed: 0 })
export const mergeValidatedImportRows = (
@@ -73,46 +73,46 @@ export const mergeValidatedImportRows = (
): PostImportRow[] => {
const validatedMap = new Map (validated.map (row => [row.sourceRow, row]))
return current.map (previous => {
if (
previous.importStatus === 'created'
|| previous.importStatus === 'skipped'
|| previous.importStatus === 'failed')
return previous
if (
previous.importStatus === 'created'
|| previous.importStatus === 'skipped'
|| previous.importStatus === 'failed')
return previous
const row = validatedMap.get (previous.sourceRow)
if (row == null)
return previous
const row = validatedMap.get (previous.sourceRow)
if (row == null)
return previous
const fieldWarnings =
Object.keys (row.fieldWarnings).length > 0 || row.metadataUrl !== previous.metadataUrl
? { ...row.fieldWarnings }
: { ...previous.fieldWarnings }
for (const [field, origin] of Object.entries (row.provenance))
{
if (origin === 'manual')
delete fieldWarnings[field]
}
const fieldWarnings =
Object.keys (row.fieldWarnings).length > 0 || row.metadataUrl !== previous.metadataUrl
? { ...row.fieldWarnings }
: { ...previous.fieldWarnings }
for (const [field, origin] of Object.entries (row.provenance))
{
if (origin === 'manual')
delete fieldWarnings[field]
}
return {
...previous,
url: row.url,
attributes: row.attributes,
provenance: row.provenance,
tagSources: row.tagSources,
skipReason: row.skipReason,
existingPostId: row.existingPostId,
fieldWarnings,
baseWarnings:
row.baseWarnings.length > 0 || row.metadataUrl !== previous.metadataUrl
? row.baseWarnings
: previous.baseWarnings,
validationErrors: row.validationErrors,
status: row.status,
metadataUrl: row.metadataUrl,
resetSnapshot:
row.metadataUrl !== previous.metadataUrl
? buildResetSnapshot (row)
: previous.resetSnapshot }
return {
...previous,
url: row.url,
attributes: row.attributes,
provenance: row.provenance,
tagSources: row.tagSources,
skipReason: row.skipReason,
existingPostId: row.existingPostId,
fieldWarnings,
baseWarnings:
row.baseWarnings.length > 0 || row.metadataUrl !== previous.metadataUrl
? row.baseWarnings
: previous.baseWarnings,
validationErrors: row.validationErrors,
status: row.status,
metadataUrl: row.metadataUrl,
resetSnapshot:
row.metadataUrl !== previous.metadataUrl
? buildResetSnapshot (row)
: previous.resetSnapshot }
})
}
@@ -123,37 +123,37 @@ export const mergeImportResults = (
): PostImportRow[] => {
const resultMap = new Map (results.map (row => [row.sourceRow, row]))
return rows.map (row => {
const result = resultMap.get (row.sourceRow)
if (result == null)
return row
const result = resultMap.get (row.sourceRow)
if (result == null)
return row
switch (result.status)
{
case 'created':
return {
...row,
importStatus: 'created',
skipReason: undefined,
createdPostId: result.post.id,
existingPostId: undefined,
importErrors: result.errors }
case 'skipped':
return {
...row,
importStatus: 'skipped',
skipReason: 'existing',
createdPostId: undefined,
existingPostId: result.existingPostId,
importErrors: result.errors }
case 'failed':
return {
...row,
importStatus: 'failed',
skipReason: undefined,
createdPostId: undefined,
existingPostId: undefined,
importErrors: result.errors }
}
switch (result.status)
{
case 'created':
return {
...row,
importStatus: 'created',
skipReason: undefined,
createdPostId: result.post.id,
existingPostId: undefined,
importErrors: result.errors }
case 'skipped':
return {
...row,
importStatus: 'skipped',
skipReason: 'existing',
createdPostId: undefined,
existingPostId: result.existingPostId,
importErrors: result.errors }
case 'failed':
return {
...row,
importStatus: 'failed',
skipReason: undefined,
createdPostId: undefined,
existingPostId: undefined,
importErrors: result.errors }
}
})
}
@@ -163,11 +163,11 @@ export const retryImportRow = (
sourceRow: number,
): PostImportRow[] =>
rows.map (row =>
row.sourceRow === sourceRow && row.importStatus === 'failed'
? { ...row, importStatus: 'pending', importErrors: undefined }
: row)
row.sourceRow === sourceRow && row.importStatus === 'failed'
? { ...row, importStatus: 'pending', importErrors: undefined }
: row)
export const initialisePreviewRows = (rows: PostImportRow[]): PostImportRow[] =>
rows.map (row => ({
...row,
resetSnapshot: buildResetSnapshot (row) }))
...row,
resetSnapshot: buildResetSnapshot (row) }))