diff --git a/mail-service/src/controllers/subscriberController.js b/mail-service/src/controllers/subscriberController.js index c1e4a51..af5bdee 100644 --- a/mail-service/src/controllers/subscriberController.js +++ b/mail-service/src/controllers/subscriberController.js @@ -3,8 +3,28 @@ import { Subscriber } from '../models/index.js'; export default { async create(req, res) { try { - const subscriber = await Subscriber.create(req.body); - res.status(201).json(subscriber); + const { email, ...subscriberData } = req.body; + + if (!email) { + return res.status(400).json({ error: 'Email is required' }); + } + + // Проверяем, существует ли подписчик с таким email + let subscriber = await Subscriber.findOne({ where: { email } }); + + if (subscriber) { + // Если подписчик существует, обновляем его + await subscriber.update({ + ...subscriberData, + // Если статус не передан, оставляем текущий + status: subscriberData.status || subscriber.status + }); + res.json({ message: 'Subscriber updated', subscriber }); + } else { + // Если подписчика нет, создаем нового + subscriber = await Subscriber.create(req.body); + res.status(201).json({ message: 'Subscriber created', subscriber }); + } } catch (err) { res.status(400).json({ error: err.message }); }