Erster Aufbau Forum
This commit is contained in:
48
backend/utils/initializeForum.js
Normal file
48
backend/utils/initializeForum.js
Normal file
@@ -0,0 +1,48 @@
|
||||
import Forum from '../models/forum/forum.js';
|
||||
import ForumPermission from '../models/forum/forum_permission.js';
|
||||
import ForumForumPermission from '../models/forum/forum_forum_permission.js';
|
||||
|
||||
const initializeForum = async () => {
|
||||
const permissions = [
|
||||
{ name: 'all', value: null },
|
||||
{ name: 'user', value: null },
|
||||
{ name: 'admin', value: null },
|
||||
{ name: 'age', value: '14' },
|
||||
{ name: 'teammember', value: null }
|
||||
];
|
||||
const forums = [
|
||||
{ name: 'Intern', permissions: ['admin', 'teammember'] },
|
||||
{ name: 'Flirt', permissions: ['age'] },
|
||||
{ name: 'Falukant', permissions: ['all'] },
|
||||
{ name: 'Politik', permissions: ['all'] },
|
||||
{ name: 'Schule', permissions: ['all'] }
|
||||
];
|
||||
const permissionMap = {};
|
||||
for (const perm of permissions) {
|
||||
const [permission] = await ForumPermission.findOrCreate({
|
||||
where: { name: perm.name },
|
||||
defaults: { name: perm.name, value: perm.value }
|
||||
});
|
||||
permissionMap[perm.name] = permission.id;
|
||||
}
|
||||
for (const forum of forums) {
|
||||
try {
|
||||
const [createdForum] = await Forum.findOrCreate({
|
||||
where: { name: forum.name },
|
||||
defaults: { name: forum.name }
|
||||
});
|
||||
for (const permissionName of forum.permissions) {
|
||||
const permissionId = permissionMap[permissionName];
|
||||
await ForumForumPermission.findOrCreate({
|
||||
where: { forumId: createdForum.id, permissionId: permissionId },
|
||||
defaults: { forumId: createdForum.id, permissionId: permissionId },
|
||||
});
|
||||
}
|
||||
console.log(`Forum '${forum.name}' erfolgreich erstellt oder aktualisiert.`);
|
||||
} catch (error) {
|
||||
console.error(`Fehler beim Erstellen des Forums '${forum.name}': ${error.message}`);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
export default initializeForum;
|
||||
@@ -16,6 +16,7 @@ const createSchemas = async () => {
|
||||
await sequelize.query('CREATE SCHEMA IF NOT EXISTS logs');
|
||||
await sequelize.query('CREATE SCHEMA IF NOT EXISTS type');
|
||||
await sequelize.query('CREATE SCHEMA IF NOT EXISTS service');
|
||||
await sequelize.query('CREATE SCHEMA IF NOT EXISTS forum');
|
||||
};
|
||||
|
||||
const initializeDatabase = async () => {
|
||||
@@ -25,8 +26,8 @@ const initializeDatabase = async () => {
|
||||
};
|
||||
|
||||
const syncModels = async (models) => {
|
||||
for (const model of Object.values(models)) {
|
||||
await model.sync({ alter: true });
|
||||
for (const model of Object.values(models)) {
|
||||
await model.sync({ alter: true, force: false });
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
// syncDatabase.js
|
||||
|
||||
import { initializeDatabase, syncModels } from './sequelize.js';
|
||||
import initializeTypes from './initializeTypes.js';
|
||||
import initializeSettings from './initializeSettings.js';
|
||||
@@ -6,18 +8,38 @@ import initializeImageTypes from './initializeImageTypes.js';
|
||||
import setupAssociations from '../models/associations.js';
|
||||
import models from '../models/index.js';
|
||||
import { createTriggers } from '../models/trigger.js';
|
||||
import initializeForum from './initializeForum.js';
|
||||
|
||||
const syncDatabase = async () => {
|
||||
try {
|
||||
await initializeDatabase();
|
||||
await syncModels(models);
|
||||
setupAssociations();
|
||||
createTriggers();
|
||||
console.log("Initializing database schemas...");
|
||||
await initializeDatabase(); // Stellt sicher, dass alle Schemas erstellt sind
|
||||
|
||||
await initializeSettings();
|
||||
await initializeTypes();
|
||||
await initializeUserRights();
|
||||
await initializeImageTypes();
|
||||
console.log("Synchronizing models...");
|
||||
await syncModels(models); // Modelle synchronisieren
|
||||
|
||||
console.log("Setting up associations...");
|
||||
setupAssociations(); // Assoziationen definieren
|
||||
|
||||
console.log("Creating triggers...");
|
||||
await createTriggers(); // Trigger erstellen
|
||||
|
||||
console.log("Initializing settings...");
|
||||
await initializeSettings(); // Einstellungsdaten initialisieren
|
||||
|
||||
console.log("Initializing types...");
|
||||
await initializeTypes(); // Typen initialisieren
|
||||
|
||||
console.log("Initializing user rights...");
|
||||
await initializeUserRights(); // Benutzerrechte initialisieren
|
||||
|
||||
console.log("Initializing image types...");
|
||||
await initializeImageTypes(); // Bildtypen initialisieren
|
||||
|
||||
console.log("Initializing forums...");
|
||||
await initializeForum(); // Foren initialisieren
|
||||
|
||||
console.log('Database synchronization complete.');
|
||||
} catch (error) {
|
||||
console.error('Unable to synchronize the database:', error);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user