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}`); });