CentralBackend/controller/dev/DevManagementController.js

35 lines
1.3 KiB
JavaScript

const DevManagementService = require('../../services/dev/DevManagementService');
const { logger } = require('../../middleware/logger');
function previewSql(sql, max = 180) {
if (!sql) return '';
const s = String(sql).replace(/\s+/g, ' ').trim();
return s.length > max ? `${s.slice(0, max)}` : s;
}
exports.importSqlDump = async (req, res) => {
try {
if (!req.file || !req.file.buffer) {
return res.status(400).json({ success: false, error: 'SQL dump file is required' });
}
const sql = req.file.buffer.toString('utf8');
if (!sql.trim()) {
return res.status(400).json({ success: false, error: 'SQL dump file is empty' });
}
const start = Date.now();
const { rows, fields } = await DevManagementService.executeDump(sql);
const durationMs = Date.now() - start;
const isMulti = Array.isArray(fields) && fields.length > 0 && Array.isArray(fields[0]);
return res.json({
success: true,
data: { result: rows, isMulti: !!isMulti },
meta: { durationMs }
});
} catch (e) {
logger.error('[DevManagementController.importSqlDump] error', { msg: e?.message, sql: previewSql(req.file?.buffer?.toString('utf8')) });
return res.status(500).json({ success: false, error: e?.message || 'SQL execution failed' });
}
};