import Article from '../models/article.js'; const articleService = { async createArticle(articleData) { try { const article = new Article(articleData); await article.save(); return article; } catch (err) { throw err; } }, async findAllArticle() { try { const articles = await Article .find({}) .populate('author') .populate('likes'); return articles; } catch (err) { throw err; } }, async findArticleById(articleId) { try { const article = await Article .findById(articleId) .populate('author') .populate('comments.author') .populate('likes'); return article; } catch (err) { throw err; } }, async findArticlesByAuthor(authorId) { try { const articles = await Article .find({ author: authorId }) .populate('author') .populate('likes'); return articles; } catch (err) { throw err; } }, async deleteArticle(articleId) { try { const article = await Article.findByIdAndDelete(articleId); return article; } catch (err) { throw err; } }, async createComment(articleId, commentData) { try { const article = await Article.findById(articleId); article.comments.push(commentData); await article.save(); return article.populate('author'); } catch (err) { throw err; } }, async deleteComment(articleId, commentId) { try { const article = await Article.findById(articleId); article.comments.pull({ _id: commentId }); await article.save(); return article.populate('author'); } catch (err) { throw err; } }, async setLike(articleId, userId) { try { const article = await Article.findById(articleId); if(article.likes.includes(userId)) { article.likes.pull({ _id: userId }); } else { article.likes.push(userId); } await article.save(); return article; } catch (err) { throw err; } }, }; export default articleService;