Files

29 lines
1.0 KiB
JavaScript

// /components/dataImport/dataImportController.js
'use strict';
const catchAsync = require('../../utils/catchAsync');
const dataImportService = require('./dataImportService');
const AppError = require('../../utils/AppError');
const { successResponse } = require('../../utils/apiResponse');
exports.importJson = catchAsync(async (req, res) => {
let payload = req.body;
if (req.file?.buffer) {
try {
payload = JSON.parse(req.file.buffer.toString('utf8'));
} catch {
throw new AppError('VALIDATION_FAILED', null, 'Uploaded file is not valid JSON');
}
}
// Allow { data: { courses: [...] } } wrappers
if (payload?.data?.courses || payload?.data?.payments || payload?.data?.professors) payload = payload.data;
if (!payload?.courses && !payload?.payments && !payload?.professors) {
throw new AppError('VALIDATION_FAILED', null, 'Invalid import payload');
}
const result = await dataImportService.importData(payload);
return successResponse(res, 200, 'Data imported successfully', result);
});