const express = require('express');
const path = require('path');
const fs = require('fs');
const sharp = require('sharp');

const app = express();
const PORT = process.env.PORT || 3000;

// Функция для автоматической конвертации изображений
async function convertImages() {
    const imgDir = path.join(__dirname, 'public', 'img');
    
    // Проверяем, существует ли папка img
    if (!fs.existsSync(imgDir)) {
        console.log('Папка img не найдена, пропускаем конвертацию.');
        return;
    }

    const files = fs.readdirSync(imgDir);

    for (const file of files) {
        const filePath = path.join(imgDir, file);
        const ext = path.extname(file).toLowerCase();
        
        // Проверяем, является ли файл JPG или PNG
        if (ext === '.jpg' || ext === '.jpeg' || ext === '.png') {
            const fileNameNoExt = path.parse(file).name;
            const webpPath = path.join(imgDir, `${fileNameNoExt}.webp`);

            // Проверяем, существует ли уже файл .webp для этого изображения
            if (!fs.existsSync(webpPath)) {
                try {
                    await sharp(filePath)
                        .webp({ quality: 85 }) // Качество 85 — золотая середина
                        .toFile(webpPath);
                    console.log(`✅ Сконвертировано: ${file} -> ${fileNameNoExt}.webp`);
                } catch (err) {
                    console.error(`❌ Ошибка при конвертации ${file}:`, err);
                }
            }
        }
    }
}

// Раздача статических файлов из папки public
app.use(express.static(path.join(__dirname, 'public')));

app.get('/', (req, res) => {
    res.sendFile(path.join(__dirname, 'public', 'index.html'));
});

// Сначала конвертируем, потом запускаем сервер
convertImages().then(() => {
    app.listen(PORT, () => {
        console.log(`Сервер Hotel 777 запущен: http://localhost:${PORT}`);
    });
});