using Microsoft.EntityFrameworkCore; namespace ImageBoardServerApp.Data.Repository; public static class CommentsRepository { public static async Task> getCommentsAsync() { await using var db = new AppDBContext(); return await db.Comments.ToListAsync(); } public static async Task> getCommentsByBoardAsync(string board) { await using var db = new AppDBContext(); return await db.Comments .Where(comment => comment.Board.Equals(board)) .Include(comment => comment.Image) .ToListAsync(); } public static async Task getCommentByIdAsync(int postId) { await using var db = new AppDBContext(); return await db.Comments .Where(comment => comment.CommentID == postId) .Include(comment => comment.Image) .Include(comment => comment.Post) .Include(comment => comment.User) .Include(comment => comment.Report) .FirstOrDefaultAsync(); } public static async Task getCommentByGETAsync(string board, int get) { await using var db = new AppDBContext(); return await db.Comments .Where(comment => comment.GET == get) .Where(comment => comment.Board == board) .Include(comment => comment.Image) .Include(comment => comment.Post) .Include(comment => comment.User) .Include(comment => comment.Report) .FirstOrDefaultAsync(); } /*public static async Task getPostByIdAsync(int postId) { await using var db = new AppDBContext(); return await db.Posts .Where(post => post.PostID == postId) .Include(post => post.Image) .Include(post => post.Comments) .FirstOrDefaultAsync(); //return await db.Posts.FirstOrDefaultAsync(post => post.PostID == postId); }*/ public static async Task createCommentAsync(CommentData commentData) { await using var db = new AppDBContext(); await db.Comments.AddAsync(commentData); if (await db.SaveChangesAsync() >= 1) { Console.WriteLine($"Created comment with ID: {commentData.PostID}"); return commentData.PostID; } return -1; } public static async Task updateCommentAsync(CommentData commentToUpdate) { await using var db = new AppDBContext(); db.Comments.Update(commentToUpdate); return await db.SaveChangesAsync() >= 1; } public static async Task deleteCommentAsync(int postId) { await using var db = new AppDBContext(); CommentData commentToDelete = await getCommentByIdAsync(postId); if (commentToDelete.Report != null) db.Remove(commentToDelete.Report); db.Remove(commentToDelete); return await db.SaveChangesAsync() >= 1; } }