45 lines
1.5 KiB
JavaScript
45 lines
1.5 KiB
JavaScript
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 };
|