import System from '../System.js';
import RemovedItemsRepository from '../repositories/removed-items.repository.js';

/**
 * Model class for tracking deleted items for sync purposes.
 * Provides the main entry point for recording deletions.
 */
export default class RemovedItem {
    /**
     * Records a deleted item for sync tracking.
     * Must be called BEFORE the actual deletion from the source table.
     *
     * @param userId - The unique identifier of the user.
     * @param bookId - The book ID (null for series items).
     * @param tableName - The name of the table from which the item is deleted.
     * @param entityId - The UUID of the deleted entity.
     * @param deletedAt - The timestamp of deletion (from UI via System.timeStampInSeconds()).
     * @param lang - The language for error messages ('fr' or 'en'). Defaults to 'fr'.
     * @returns True if the record was inserted successfully.
     */
    public static deleteTracker(
        userId: string,
        bookId: string | null,
        tableName: string,
        entityId: string,
        deletedAt: number,
        lang: 'fr' | 'en' = 'fr'
    ): boolean {
        const removalId: string = System.createUniqueId();

        return RemovedItemsRepository.insert(
            removalId,
            tableName,
            entityId,
            bookId,
            userId,
            deletedAt,
            lang
        );
    }
}
