Como ficaria a findOrcreate com a separação de Controller e Services, poderiam me dar um exemplo pratico, Obrigado!
Como ficaria a findOrcreate com a separação de Controller e Services, poderiam me dar um exemplo pratico, Obrigado!
Oi, Giuliano, tudo bem?
Desculpe a demora em te responder!
Para utilizar o método findOrCreate
do Sequelize com a separação de Controller e Services, podemos seguir o seguinte exemplo prático:
No Controller, chamamos o método findOrCreate
do seu Service, passando os parâmetros necessários. Por exemplo:
const userService = require('../services/userService');
async function createUser(req, res) {
const { name, email } = req.body;
try {
const user = await userService.findOrCreate(name, email);
return res.status(201).json(user);
} catch (err) {
return res.status(500).json({ error: 'Internal server error' });
}
}
Já no Service, implementaremos o método findOrCreate
da seguinte forma:
const { User } = require('../models');
async function findOrCreate(name, email) {
const [user, created] = await User.findOrCreate({
where: { email },
defaults: { name },
});
return { user, created };
}
module.exports = { findOrCreate };
Dessa forma, o método findOrCreate
do seu Service irá buscar um usuário pelo e-mail e, caso não encontre, irá criar um novo usuário com o nome informado.
Espero ter ajudado. Caso tenha dúvidas, estarei à disposição. Abraços e bons estudos!