У меня есть следующая логика c, которая кажется очень вонючей, мне интересно, кто-нибудь сталкивался с таким кодом? или если кто-то знает, какой оптимальный шаблон (ы) следовать?
const upsertAdmin = async (email, password, ownership, messages) => {
let user = await User.findOne({email});
if(!user) {
if(!password) {
messages.push('Admin was not created, password is required');
} else {
user = new User({
name: email,
email,
password,
permissions: [ownership],
});
messages.push('Admin user created');
await user.save();
}
} else {
messages.push('Admin user found');
let shouldSave = false;
if(password) {
user.password = password;
messages.push('Admin password updated');
shouldSave = true;
}
if(user.permissions.indexOf(ownership) === -1) {
user.permissions.push(ownership);
messages.push('Admin ownership added');
shouldSave = true;
} else {
messages.push('Admin already has ownership');
}
if(shouldSave)
await user.save();
}
return user;
};