You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

52 lines
1.6 KiB

const fs = require('fs')
const path = require('path')
const XLSX = require('xlsx')
const { parse } = require('csv-parse/sync')
const { insertNiveau } = require('../Models/Niveau')
async function importNiveau(filePath) {
const fileExtension = path.extname(filePath).toLowerCase()
// Determine the file type and parse accordingly
let records
if (fileExtension === '.xlsx') {
// Read and parse XLSX file
const workbook = XLSX.readFile(filePath)
const worksheet = workbook.Sheets[workbook.SheetNames[0]] // Assuming data is in the first sheet
records = XLSX.utils.sheet_to_json(worksheet, { defval: '' })
} else if (fileExtension === '.csv') {
// Read and parse CSV file
const fileContent = fs.readFileSync(filePath, 'utf8')
records = parse(fileContent, {
columns: true,
skip_empty_lines: true
})
} else {
console.error('Unsupported file format. Only .xlsx and .csv are allowed.')
return
}
try {
// Get the first column key dynamically
const firstColumnKey = Object.keys(records[0])[0]
console.log(`Detected first column key: ${firstColumnKey}`)
for (const row of records) {
const firstColumnValue = row[firstColumnKey] || 'null pour le moment'
// Insert into the database
await insertNiveau(firstColumnValue)
console.log(`Inserted value from first column: '${firstColumnValue}'`)
}
console.log(
`First column values successfully imported from ${fileExtension.toUpperCase()} file`
)
return { success: 'success' }
} catch (error) {
console.error('Error inserting record:', error)
}
}
module.exports = {
importNiveau
}