Your IP : 216.73.217.30


Current Path : /var/www/recommendations/www/routes/
Upload File :
Current File : /var/www/recommendations/www/routes/insertRelatedTitle.js

const express = require('express');
const router = express.Router();

const { Op } = require('sequelize');
const RelatedTitle = require('../model/RelatedTitle');
const { checkAuth } = require('../library/checkAuth.js');

router.post('/', checkAuth, async (req, res) => {
    const data = req.body;

    const fieldsRequired = ['sku', 'user', 'title'];

    if (!Array.isArray(data)) {
        return res.status(400).json({ message: 'The request body should be an array of records' });
    }

    try {
        const uniquePairs = [...new Set(data.map(record => JSON.stringify({ sku: record.sku, user: record.user })))];
        await RelatedTitle.destroy({
            where: {
                [Op.or]: uniquePairs.map(pair => JSON.parse(pair))
            }
        });
        const promises = data.map(async (record) => {
            console.log(record);
            const fieldsInserted = Object.keys(record);
            const fieldsExtra = fieldsInserted.filter(field => !fieldsRequired.includes(field));
            if (fieldsExtra.length > 0) {
                throw new Error('The record contains invalid extra fields: ' + fieldsExtra.join(', '));
            }

            await RelatedTitle.create(record);
        });
        await Promise.all(promises);

        return res.status(201).json({ message: 'Data saved successfully' });
    } catch (error) {
        console.error('Error entering data: ' + error);
        return res.status(500).json({ message: 'Server error' });
    }
});

module.exports = router;