convert type of date in the csv to int before parsing date

This commit is contained in:
Hongbo Wu
2023-08-15 18:44:30 +08:00
parent 8ee591943f
commit 9ee87e2e52
5 changed files with 21 additions and 7 deletions

View File

@ -35,7 +35,8 @@ const parseState = (state: string): ArticleSavingRequestStatus => {
}
const parseDate = (date: string): Date => {
const parsedDate = new Date(date)
// date is unix timestamp in milliseconds
const parsedDate = new Date(parseInt(date, 10))
if (isNaN(parsedDate.getTime())) {
throw new Error('invalid date')
}

View File

@ -199,7 +199,9 @@ const urlHandler = async (
'csv-importer',
ctx.taskId,
state,
labels && labels.length > 0 ? labels : undefined
labels && labels.length > 0 ? labels : undefined,
savedAt,
publishedAt
)
if (!result) {
return Promise.reject('Failed to import url')

View File

@ -56,18 +56,24 @@ describe('Test csv importer', () => {
url: URL
state?: ArticleSavingRequestStatus
labels?: string[]
savedAt?: Date
publishedAt?: Date
}[] = []
const stream = fs.createReadStream('./test/csv/data/complex.csv')
stub.urlHandler = (
ctx: ImportContext,
url,
state,
labels
labels,
savedAt,
publishedAt
): Promise<void> => {
results.push({
url,
state,
labels,
savedAt,
publishedAt,
})
return Promise.resolve()
}
@ -80,16 +86,22 @@ describe('Test csv importer', () => {
url: new URL('https://omnivore.app'),
state: 'ARCHIVED',
labels: ['test'],
savedAt: undefined,
publishedAt: undefined,
},
{
url: new URL('https://google.com'),
state: 'SUCCEEDED',
labels: ['test', 'development'],
state: undefined,
savedAt: undefined,
publishedAt: undefined,
},
{
url: new URL('https://test.com'),
state: 'SUCCEEDED',
labels: ['test', 'development'],
savedAt: new Date(1692093633000),
publishedAt: new Date(1692093633000),
},
])
})

View File

@ -1,4 +1,4 @@
url,state,labels,saved_at,published_at
"https://omnivore.app",ARCHIVED,"[""test""]",,
"https://google.com",SUCCEEDED,"[""test"",""development""]",,
https://test.com,SUCCEEDED,"[test, development]",,
"https://google.com",,"[""test"",""development""]",,
https://test.com,SUCCEEDED,"[test, development]",1692093633000,1692093633000

1 url state labels saved_at published_at
2 https://omnivore.app ARCHIVED ["test"]
3 https://google.com SUCCEEDED ["test","development"]
4 https://test.com SUCCEEDED [test, development] 1692093633000 1692093633000

View File

@ -52,7 +52,6 @@ export default function ImportUploader(): JSX.Element {
// validate csv file
try {
const csvData = await validateCsvFile(file)
console.log(csvData.data)
if (csvData.inValidData.length > 0) {
setErrorMessage(csvData.inValidData[0].message)
setUploadState('none')