namespace FinControl.Infrastructure.Repositories; using Microsoft.EntityFrameworkCore; using FinControl.Domain.Entities; using FinControl.Domain.Repositories; using FinControl.Infrastructure.Persistence; public class UserRepository : IUserRepository { private readonly FinControlContext _context; public UserRepository(FinControlContext context) { _context = context; } public async Task GetByIdAsync(Guid id) => await _context.Users .Include(u => u.Accounts) .Include(u => u.Categories) .Include(u => u.Goals) .FirstOrDefaultAsync(u => u.Id == id); public async Task GetByEmailAsync(string email) => await _context.Users.FirstOrDefaultAsync(u => u.Email == email); public async Task> GetAllAsync() => await _context.Users .Include(u => u.Accounts) .Include(u => u.Categories) .Include(u => u.Goals) .ToListAsync(); public async Task AddAsync(User user) { await _context.Users.AddAsync(user); await _context.SaveChangesAsync(); } public async Task UpdateAsync(User user) { _context.Users.Update(user); await _context.SaveChangesAsync(); } public async Task DeleteAsync(Guid id) { var user = await _context.Users.FindAsync(id); if (user != null) { _context.Users.Remove(user); await _context.SaveChangesAsync(); } } }