Änderungen: - Integration des Taxi-Minispiels mit neuen Routen und Komponenten im Backend und Frontend. - Erstellung von Modellen und Datenbank-Schemas für das Taxi-Spiel, einschließlich TaxiGameState, TaxiLevelStats und TaxiMap. - Erweiterung der Navigationsstruktur und der Benutzeroberfläche, um das Taxi-Spiel und die zugehörigen Tools zu unterstützen. - Aktualisierung der Übersetzungen für das Taxi-Minispiel in Deutsch und Englisch. Diese Anpassungen erweitern die Funktionalität der Anwendung um ein neues Minispiel und verbessern die Benutzererfahrung durch neue Features und Inhalte.
143 lines
5.1 KiB
JavaScript
143 lines
5.1 KiB
JavaScript
// syncDatabase.js
|
|
|
|
import { initializeDatabase, syncModelsWithUpdates, syncModelsAlways } from './sequelize.js';
|
|
import initializeTypes from './initializeTypes.js';
|
|
import initializeSettings from './initializeSettings.js';
|
|
import initializeUserRights from './initializeUserRights.js';
|
|
import initializeImageTypes from './initializeImageTypes.js';
|
|
import initializeFalukant from './initializeFalukant.js';
|
|
import setupAssociations from '../models/associations.js';
|
|
import models from '../models/index.js';
|
|
import { createTriggers } from '../models/trigger.js';
|
|
import initializeForum from './initializeForum.js';
|
|
import initializeChat from './initializeChat.js';
|
|
import initializeMatch3Data from './initializeMatch3.js';
|
|
import updateExistingMatch3Levels from './updateExistingMatch3Levels.js';
|
|
import initializeTaxi from './initializeTaxi.js';
|
|
|
|
// Normale Synchronisation (nur bei STAGE=dev Schema-Updates)
|
|
const syncDatabase = async () => {
|
|
try {
|
|
// Zeige den aktuellen Stage an
|
|
const currentStage = process.env.STAGE || 'nicht gesetzt';
|
|
console.log(`🚀 Starte Datenbank-Synchronisation (Stage: ${currentStage})`);
|
|
|
|
if (currentStage !== 'dev') {
|
|
console.log('⚠️ WARNUNG: Automatische Schema-Updates sind deaktiviert');
|
|
console.log('💡 Setze STAGE=dev in der .env Datei für automatische Schema-Updates');
|
|
console.log('🔒 Produktionsmodus: Nur normale Synchronisation ohne Schema-Änderungen');
|
|
} else {
|
|
console.log('✅ Entwicklungsmodus aktiv - Schema-Updates sind aktiviert');
|
|
}
|
|
|
|
console.log("Initializing database schemas...");
|
|
await initializeDatabase();
|
|
|
|
console.log("Synchronizing models...");
|
|
await syncModelsWithUpdates(models);
|
|
|
|
console.log("Setting up associations...");
|
|
setupAssociations();
|
|
|
|
console.log("Initializing settings...");
|
|
await initializeSettings();
|
|
|
|
console.log("Initializing types...");
|
|
await initializeTypes();
|
|
|
|
console.log("Initializing user rights...");
|
|
await initializeUserRights();
|
|
|
|
console.log("Initializing image types...");
|
|
await initializeImageTypes();
|
|
|
|
console.log("Initializing forums...");
|
|
await initializeForum();
|
|
|
|
console.log("Initializing Falukant...");
|
|
await initializeFalukant();
|
|
|
|
console.log("Creating triggers...");
|
|
await createTriggers();
|
|
|
|
console.log("Initializing chat...");
|
|
await initializeChat();
|
|
|
|
// Match3-Initialisierung NACH der Model-Synchronisation
|
|
console.log("Initializing Match3...");
|
|
await initializeMatch3Data();
|
|
|
|
// Match3-Levels aktualisieren NACH der Initialisierung
|
|
console.log("Updating existing Match3 levels...");
|
|
await updateExistingMatch3Levels();
|
|
|
|
console.log("Initializing Taxi...");
|
|
await initializeTaxi();
|
|
|
|
console.log('Database synchronization complete.');
|
|
} catch (error) {
|
|
console.error('Unable to synchronize the database:', error);
|
|
}
|
|
};
|
|
|
|
// Deployment-Synchronisation (immer Schema-Updates)
|
|
const syncDatabaseForDeployment = async () => {
|
|
try {
|
|
// Zeige den aktuellen Stage an
|
|
const currentStage = process.env.STAGE || 'nicht gesetzt';
|
|
console.log(`🚀 Starte Datenbank-Synchronisation für Deployment (Stage: ${currentStage})`);
|
|
console.log('✅ Deployment-Modus: Schema-Updates sind immer aktiviert');
|
|
|
|
console.log("Initializing database schemas...");
|
|
await initializeDatabase();
|
|
|
|
console.log("Synchronizing models with schema updates...");
|
|
await syncModelsAlways(models);
|
|
|
|
console.log("Setting up associations...");
|
|
setupAssociations();
|
|
|
|
console.log("Initializing settings...");
|
|
await initializeSettings();
|
|
|
|
console.log("Initializing types...");
|
|
await initializeTypes();
|
|
|
|
console.log("Initializing user rights...");
|
|
await initializeUserRights();
|
|
|
|
console.log("Initializing image types...");
|
|
await initializeImageTypes();
|
|
|
|
console.log("Initializing forums...");
|
|
await initializeForum();
|
|
|
|
console.log("Initializing Falukant...");
|
|
await initializeFalukant();
|
|
|
|
console.log("Creating triggers...");
|
|
await createTriggers();
|
|
|
|
console.log("Initializing chat...");
|
|
await initializeChat();
|
|
|
|
// Match3-Initialisierung NACH der Model-Synchronisation UND nach der Erstellung aller Tabellen
|
|
console.log("Initializing Match3...");
|
|
await initializeMatch3Data();
|
|
|
|
// Match3-Levels aktualisieren NACH der Initialisierung
|
|
console.log("Updating existing Match3 levels...");
|
|
await updateExistingMatch3Levels();
|
|
|
|
console.log("Initializing Taxi...");
|
|
await initializeTaxi();
|
|
|
|
console.log('Database synchronization for deployment complete.');
|
|
} catch (error) {
|
|
console.error('Unable to synchronize the database for deployment:', error);
|
|
throw error; // Fehler weiterwerfen
|
|
}
|
|
};
|
|
|
|
export { syncDatabase, syncDatabaseForDeployment };
|