import { Sequelize } from 'sequelize'; import dotenv from 'dotenv'; dotenv.config(); const sequelize = new Sequelize(process.env.DB_NAME, process.env.DB_USER, process.env.DB_PASSWORD, { host: process.env.DB_HOST, dialect: 'postgres', define: { timestamps: false } }); const createSchemas = async () => { await sequelize.query('CREATE SCHEMA IF NOT EXISTS community'); await sequelize.query('CREATE SCHEMA IF NOT EXISTS logs'); await sequelize.query('CREATE SCHEMA IF NOT EXISTS type'); }; const initializeDatabase = async () => { await createSchemas(); const { default: models } = await import('../models/index.js'); await syncModels(models); }; const syncModels = async (models) => { // Stellen Sie sicher, dass alle Modelle vorhanden sind if (!models.SettingsType || !models.UserParamValue || !models.UserParamType || !models.UserRightType || !models.User || !models.UserParam || !models.Login || !models.UserRight) { throw new Error('Models are not properly loaded.'); } // Synchronisieren Sie die Modelle in der gewünschten Reihenfolge await models.SettingsType.sync({ alter: true }); await models.UserParamValue.sync({ alter: true }); await models.UserParamType.sync({ alter: true }); await models.UserRightType.sync({ alter: true }); await models.User.sync({ alter: true }); await models.UserParam.sync({ alter: true }); await models.Login.sync({ alter: true }); await models.UserRight.sync({ alter: true }); }; export { sequelize, initializeDatabase };