/**
* Converts user data formats for dry-run scenarios.
*
* @param {object} userData - The user data to convert.
* @param {string} targetFormat - The desired target format ('json', 'csv', 'flat').
* @returns {any} - The converted data, or null if the format is invalid.
*/
function convertUserData(userData, targetFormat) {
if (!userData || typeof userData !== 'object') {
console.warn("Invalid user data provided.");
return null;
}
switch (targetFormat.toLowerCase()) {
case 'json':
// Already JSON, no conversion needed.
return userData;
case 'csv':
// Convert to CSV format.
if (!Array.isArray(userData)) {
console.warn("User data must be an array for CSV conversion.");
return null;
}
if (userData.length === 0) return "";
const headers = Object.keys(userData[0]);
const csvRows = [headers.join(',')];
for (const row of userData) {
const values = headers.map(header => row[header] || ''); // Handle missing values
csvRows.push(values.join(','));
}
return csvRows.join('\n');
case 'flat':
// Flatten the object into a single string.
let flattenedString = '';
for (const key in userData) {
if (userData.hasOwnProperty(key)) {
flattenedString += `${key}: ${userData[key]} | `;
}
}
return flattenedString.slice(0, -3); // Remove trailing " | "
default:
console.warn("Invalid target format. Supported formats: json, csv, flat");
return null;
}
}
Add your comment