'use strict';

module.exports = {
    up: async (queryInterface, Sequelize) => {
        // Aktiviere die pgcrypto Erweiterung, die die digest() Funktion bereitstellt
        await queryInterface.sequelize.query(`
            CREATE EXTENSION IF NOT EXISTS pgcrypto;
        `);

        await queryInterface.sequelize.query(`
            CREATE OR REPLACE FUNCTION community.update_hashed_id() RETURNS TRIGGER AS $$
            BEGIN
                NEW.hashed_id = encode(digest(NEW.id::text, 'sha256'), 'hex');
                RETURN NEW;
            END;
            $$ LANGUAGE plpgsql;
        `);

        await queryInterface.sequelize.query(`
            CREATE TRIGGER update_hashed_id_trigger
            BEFORE INSERT OR UPDATE ON community.user
            FOR EACH ROW EXECUTE FUNCTION community.update_hashed_id();
        `);
    },

    down: async (queryInterface, Sequelize) => {
        await queryInterface.sequelize.query(`
            DROP TRIGGER IF EXISTS update_hashed_id_trigger ON community.user;
        `);

        await queryInterface.sequelize.query(`
            DROP FUNCTION IF EXISTS community.update_hashed_id();
        `);
    }
};
