Source: config/migrations/20260619-objectbase-fulltext-index.js

/**
 * Migration: Add FULLTEXT index on ObjectBase.FullTextIndex
 *
 * ObjectBase hat das Feld `FullTextIndex`, aber bisher keinen FULLTEXT-Index darauf.
 * Dadurch versagen MATCH...AGAINST Queries mit "Can't find FULLTEXT index matching the column list".
 *
 * Diese Migration:
 *   1. Setzt system_versioning_alter_history = KEEP (ObjectBase ist system-versioned)
 *   2. Erstellt einen FULLTEXT-Index auf `FullTextIndex`
 */

export const id = '20260619-objectbase-fulltext-index';

export const name = 'Add FULLTEXT index on ObjectBase.FullTextIndex';

/**
 * @param {{ query: Function }} api
 */
export const migrate = async ({ query }) => {
    // Prüfen ob der Index bereits existiert (idempotent)
    const existing = await query(`
        SELECT INDEX_NAME FROM information_schema.STATISTICS
        WHERE TABLE_SCHEMA = (SELECT DATABASE())
          AND TABLE_NAME = 'ObjectBase'
          AND INDEX_NAME = 'idx_ft_fulltext'
    `, []);
    if (existing.length > 0) {
        console.log('  Index idx_ft_fulltext exists already, skipping');
        return;
    }

    // Erforderlich für ALTER an system-versioned Tabellen
    await query(`SET @@session.system_versioning_alter_history = KEEP`, []);

    await query(`
        ALTER TABLE ObjectBase
        ADD FULLTEXT INDEX idx_ft_fulltext (FullTextIndex)
    `, []);
};