Project-Image-Uploader/backend/src/routes/migration.js
2025-10-15 21:33:00 +02:00

75 lines
2.2 KiB
JavaScript

const express = require('express');
const { Router } = require('express');
const MigrationService = require('../services/MigrationService');
const dbManager = require('../database/DatabaseManager');
const router = Router();
// Migration Status abrufen
router.get('/migration/status', async (req, res) => {
try {
const status = await MigrationService.getMigrationStatus();
res.json(status);
} catch (error) {
console.error('Fehler beim Abrufen des Migrationsstatus:', error);
res.status(500).json({
error: 'Internal server error',
message: 'Fehler beim Abrufen des Migrationsstatus',
details: error.message
});
}
});
// Manuelle Migration starten
router.post('/migration/migrate', async (req, res) => {
try {
const result = await MigrationService.migrateJsonToSqlite();
res.json(result);
} catch (error) {
console.error('Fehler bei der Migration:', error);
res.status(500).json({
error: 'Migration failed',
message: 'Fehler bei der Migration',
details: error.message
});
}
});
// Rollback zu JSON (Notfall)
router.post('/migration/rollback', async (req, res) => {
try {
const result = await MigrationService.rollbackToJson();
res.json(result);
} catch (error) {
console.error('Fehler beim Rollback:', error);
res.status(500).json({
error: 'Rollback failed',
message: 'Fehler beim Rollback',
details: error.message
});
}
});
// Datenbank Health Check
router.get('/migration/health', async (req, res) => {
try {
const isHealthy = await dbManager.healthCheck();
res.json({
database: {
healthy: isHealthy,
status: isHealthy ? 'OK' : 'ERROR'
}
});
} catch (error) {
console.error('Health Check fehlgeschlagen:', error);
res.status(500).json({
database: {
healthy: false,
status: 'ERROR',
error: error.message
}
});
}
});
module.exports = router;