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 deleteCommentFromUser(UserData u) { await using var db = new AppDBContext(); var l = db.Users .Where(x => x.UserID == u.UserID); foreach (var e in l) db.Remove(e); } 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; } }