68 lines
2.3 KiB
JavaScript
68 lines
2.3 KiB
JavaScript
import { sequelize } from '../utils/sequelize.js';
|
|
|
|
export async function createTriggers() {
|
|
const createTriggerFunction = `
|
|
CREATE OR REPLACE FUNCTION create_user_param_visibility_trigger()
|
|
RETURNS TRIGGER AS $$
|
|
BEGIN
|
|
-- Check if UserParamVisibility already exists for this UserParam
|
|
IF NOT EXISTS (
|
|
SELECT 1 FROM community.user_param_visibility
|
|
WHERE param_id = NEW.id
|
|
) THEN
|
|
-- Insert the default visibility (Invisible)
|
|
INSERT INTO community.user_param_visibility (param_id, visibility)
|
|
VALUES (NEW.id, (
|
|
SELECT id FROM type.user_param_visibility WHERE description = 'Invisible'
|
|
));
|
|
END IF;
|
|
RETURN NEW;
|
|
END;
|
|
$$ LANGUAGE plpgsql;
|
|
`;
|
|
|
|
const createInsertTrigger = `
|
|
CREATE OR REPLACE TRIGGER trigger_create_user_param_visibility
|
|
AFTER INSERT ON community.user_param
|
|
FOR EACH ROW
|
|
EXECUTE FUNCTION create_user_param_visibility_trigger();
|
|
`;
|
|
|
|
const createUpdateTrigger = `
|
|
CREATE OR REPLACE TRIGGER trigger_update_user_param_visibility
|
|
AFTER UPDATE ON community.user_param
|
|
FOR EACH ROW
|
|
EXECUTE FUNCTION create_user_param_visibility_trigger();
|
|
`;
|
|
|
|
const createDiaryHistoryTriggerFunction = `
|
|
CREATE OR REPLACE FUNCTION insert_diary_history()
|
|
RETURNS TRIGGER AS $$
|
|
BEGIN
|
|
INSERT INTO community.diary_history (diaryId, userId, oldText, oldCreatedAt, oldUpdatedAt)
|
|
VALUES (OLD.id, OLD.userId, OLD.text, OLD.createdAt, OLD.updatedAt);
|
|
RETURN NEW;
|
|
END;
|
|
$$ LANGUAGE plpgsql;
|
|
`;
|
|
|
|
const createDiaryHistoryTrigger = `
|
|
CREATE OR REPLACE TRIGGER diary_update_trigger
|
|
BEFORE UPDATE ON community.diary
|
|
FOR EACH ROW
|
|
EXECUTE FUNCTION insert_diary_history();
|
|
`;
|
|
|
|
try {
|
|
await sequelize.query(createTriggerFunction);
|
|
await sequelize.query(createInsertTrigger);
|
|
await sequelize.query(createUpdateTrigger);
|
|
await sequelize.query(createDiaryHistoryTriggerFunction);
|
|
await sequelize.query(createDiaryHistoryTrigger);
|
|
|
|
console.log('Triggers created successfully');
|
|
} catch (error) {
|
|
console.error('Error creating triggers:', error);
|
|
}
|
|
}
|