Source: backend/models/documentModels.js

/**
 * @fileoverview Enthält Funktionen zur Verwaltung von Dokumenten.
 * Diese Datei ermöglicht das Umbenennen von Dokumenten in der Datenbank.
 * 
 * @author Ilyass
 * @module documentModels
 */

const File = require('../../database/File.js'); // Sequelize Modell `File`

/**
 * Benennt ein Dokument in der Datenbank um.
 *
 * @async
 * @function renameDocumentById
 * @param {number} documentId - Die ID des zu umbenennenden Dokuments.
 * @param {string} newFilename - Der neue Dateiname für das Dokument.
 * @returns {Promise<Object>} Das aktualisierte Dokument als JSON-Objekt.
 * @throws {Error} Wenn das Dokument nicht gefunden oder nicht umbenannt werden konnte.
 * @example
 * const updatedDoc = await renameDocumentById(123, "newfile.txt");
 * console.log(updatedDoc);
 */
const renameDocumentById = async (documentId, newFilename) => {
    try {
        // Update der Datei mit der neuen Datei-Bezeichnung
        const [affectedRows, updatedFiles] = await File.update(
            { file_name: newFilename }, // Neue Datei-Bezeichnung
            {
                where: { file_id: documentId }, // Bedingung: file_id muss übereinstimmen
                returning: true // Gebe die aktualisierten Zeilen zurück
            }
        );

        // Überprüfen, ob eine Datei aktualisiert wurde
        if (affectedRows === 0) {
            throw new Error('Dokument nicht gefunden oder konnte nicht umbenannt werden');
        }

        // Rückgabe der aktualisierten Datei (erste im Array)
        return updatedFiles[0].toJSON();
    } catch (error) {
        console.error('Fehler beim Umbenennen des Dokuments:', error);
        throw error;
    }
};

module.exports = { renameDocumentById };