Falukant production, family and administration enhancements
This commit is contained in:
@@ -193,6 +193,7 @@ export async function createTriggers() {
|
||||
await sequelize.query(createKnowledgeTriggerMethod);
|
||||
await sequelize.query(createKnowledgeTrigger);
|
||||
await sequelize.query(updateMoney);
|
||||
await initializeCharacterTraitTrigger();
|
||||
|
||||
console.log('Triggers created successfully');
|
||||
} catch (error) {
|
||||
@@ -200,3 +201,53 @@ export async function createTriggers() {
|
||||
}
|
||||
}
|
||||
|
||||
export const initializeCharacterTraitTrigger = async () => {
|
||||
try {
|
||||
const triggerCheckQuery = `
|
||||
SELECT tgname
|
||||
FROM pg_trigger
|
||||
WHERE tgname = 'trigger_assign_traits';
|
||||
`;
|
||||
const [existingTrigger] = await sequelize.query(triggerCheckQuery, { type: sequelize.QueryTypes.SELECT });
|
||||
if (!existingTrigger) {
|
||||
console.log('⚡ Erstelle den Trigger für zufällige Traits...');
|
||||
const createTriggerFunctionQuery = `
|
||||
CREATE OR REPLACE FUNCTION falukant_data.assign_random_traits()
|
||||
RETURNS TRIGGER AS $$
|
||||
DECLARE
|
||||
trait_ids INTEGER[];
|
||||
i INTEGER;
|
||||
BEGIN
|
||||
-- Zufällig 5 Trait-IDs auswählen
|
||||
SELECT ARRAY(
|
||||
SELECT id FROM falukant_type.character_trait
|
||||
ORDER BY RANDOM()
|
||||
LIMIT 5
|
||||
) INTO trait_ids;
|
||||
|
||||
-- Die 5 Traits dem neuen Charakter zuweisen
|
||||
FOR i IN 1..array_length(trait_ids, 1) LOOP
|
||||
INSERT INTO falukant_data.falukant_character_trait (character_id, trait_id)
|
||||
VALUES (NEW.id, trait_ids[i]);
|
||||
END LOOP;
|
||||
|
||||
RETURN NEW;
|
||||
END;
|
||||
$$ LANGUAGE plpgsql;
|
||||
`;
|
||||
const createTriggerQuery = `
|
||||
CREATE TRIGGER trigger_assign_traits
|
||||
AFTER INSERT ON falukant_data.character
|
||||
FOR EACH ROW EXECUTE FUNCTION falukant_data.assign_random_traits();
|
||||
`;
|
||||
await sequelize.query(createTriggerFunctionQuery);
|
||||
await sequelize.query(createTriggerQuery);
|
||||
console.log('✅ Trigger erfolgreich erstellt.');
|
||||
} else {
|
||||
console.log('🔹 Trigger existiert bereits. Keine Aktion erforderlich.');
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('❌ Fehler beim Erstellen des Triggers:', error);
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user