feat: Einführung von Umgebungsvariablen und Startskripten für die Backend-Anwendung
- Hinzufügen eines zentralen Skripts zum Laden von Umgebungsvariablen aus einer .env-Datei. - Implementierung von Start- und Entwicklungs-Skripten in der package.json für eine vereinfachte Ausführung der Anwendung. - Bereinigung und Entfernung nicht mehr benötigter Minigame-Modelle und -Services zur Verbesserung der Codebasis. - Anpassungen an den Datenbankmodellen zur Unterstützung von neuen Assoziationen und zur Verbesserung der Lesbarkeit.
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
import { Sequelize } from 'sequelize';
|
||||
import { Sequelize, DataTypes } from 'sequelize';
|
||||
import dotenv from 'dotenv';
|
||||
|
||||
dotenv.config();
|
||||
@@ -8,8 +8,7 @@ const sequelize = new Sequelize(process.env.DB_NAME, process.env.DB_USER, proces
|
||||
dialect: 'postgres',
|
||||
define: {
|
||||
timestamps: false,
|
||||
underscored: true, // WICHTIG: Alle Datenbankfelder im snake_case Format
|
||||
freezeTableName: true // Verhindert Pluralisierung der Tabellennamen
|
||||
underscored: true // WICHTIG: Alle Datenbankfelder im snake_case Format
|
||||
},
|
||||
});
|
||||
|
||||
@@ -285,18 +284,23 @@ const findModelForTable = (schemaName, tableName, models) => {
|
||||
|
||||
// Hilfsfunktion: Konvertiert Sequelize-Datentyp zu PostgreSQL-Datentyp
|
||||
const getExpectedDataType = (attribute) => {
|
||||
if (!attribute || !attribute.type) return 'text';
|
||||
const type = attribute.type;
|
||||
|
||||
if (type instanceof sequelize.DataTypes.INTEGER) return 'integer';
|
||||
if (type instanceof sequelize.DataTypes.STRING) return 'character varying';
|
||||
if (type instanceof sequelize.DataTypes.TEXT) return 'text';
|
||||
if (type instanceof sequelize.DataTypes.BOOLEAN) return 'boolean';
|
||||
if (type instanceof sequelize.DataTypes.DATE) return 'timestamp without time zone';
|
||||
if (type instanceof sequelize.DataTypes.JSON) return 'json';
|
||||
if (type instanceof sequelize.DataTypes.DECIMAL) return 'numeric';
|
||||
|
||||
// Fallback
|
||||
return 'text';
|
||||
|
||||
// Direktklassentypen in Sequelize sind Funktionen/Klassen; "instanceof" funktioniert bei Wrappern wie DataTypes.INTEGER() nicht immer.
|
||||
// Deshalb vergleichen wir über den .key wenn verfügbar.
|
||||
const key = type.key || type.constructor?.key;
|
||||
switch (key) {
|
||||
case 'INTEGER': return 'integer';
|
||||
case 'STRING': return 'character varying';
|
||||
case 'TEXT': return 'text';
|
||||
case 'BOOLEAN': return 'boolean';
|
||||
case 'DATE': return 'timestamp without time zone';
|
||||
case 'JSON': return 'json';
|
||||
case 'DECIMAL': return 'numeric';
|
||||
default:
|
||||
return 'text';
|
||||
}
|
||||
};
|
||||
|
||||
// Hilfsfunktion: Konvertiert Sequelize-Default zu PostgreSQL-Default
|
||||
|
||||
Reference in New Issue
Block a user