require('dotenv').config();
const express = require('express');
const bodyParser = require('body-parser');
const sequelize = require('./db');
const { CommunityItem } = require('./models/item');
const path = require('path');

const app = express();

// Функция старта
const start = async () => {
    try {
      await sequelize.authenticate();
      console.log('Connection has been established successfully.');
      await sequelize.sync(); // Создание таблиц в базе данных
    } catch (error) {
      console.error('Unable to connect to the database:', error);
    }
  };
  start();
// Настройки
app.set('view engine', 'ejs');
app.set('views', path.join(__dirname, 'views'));

// Мидлвары
app.use(bodyParser.urlencoded({ extended: true }));
app.use(express.static(path.join(__dirname, 'public')));

// Главная страница с формой
app.get('/add-item', (req, res) => {
  res.render('addItem');
});

// API для добавления предметов в базу данных
app.post('/add-item', async (req, res) => {
  const {
    text_id,
    name,
    description,
    price,
    rarity,
    type,
    duration,
    canBeEquipped,
    img,
    dropChance,
    effectType,
    effectAmount
  } = req.body;

  // Формируем массив эффектов
  const effectData = effectType.map((type, index) => ({
    type,
    amount: parseInt(effectAmount[index]),
  }));

  try {
    await CommunityItem.create({
      text_id,
      name,
      description,
      effectData, // Массив эффектов
      price: parseInt(price),
      rarity: parseInt(rarity),
      type,
      duration: duration ? parseInt(duration) : null,
      canBeEquipped: canBeEquipped === 'on',
      img,
      dropChance: parseFloat(dropChance),
    });

    res.redirect('/add-item'); // Перенаправляем обратно на страницу добавления
  } catch (error) {
    console.error(error);
    res.status(500).send('Ошибка при добавлении предмета');
  }
});

// Запуск сервера
const PORT = process.env.PORT || 3002;
app.listen(PORT, () => {
  console.log(`Server is running on http://localhost:${PORT}`);
});
