implement FavoritRepository for managing favorite recipes

This commit is contained in:
franc
2025-04-08 14:25:21 +02:00
parent c7543f8a49
commit e438e8a114
2 changed files with 64 additions and 0 deletions
@@ -0,0 +1,49 @@
namespace Francesco.Recipes.World.Repositories.Favorit
{
using Francesco.Recipes.World.Data;
using Francesco.Recipes.World.Models.BackendModels.Recipe;
using Microsoft.EntityFrameworkCore;
public class FavoritRepository : IFavoritRepository
{
private readonly FrancescosRecipesWorldDbContext _context;
public FavoritRepository(FrancescosRecipesWorldDbContext context)
{
_context = context;
}
public async Task<IEnumerable<Recipe>> GetFavoriteRecipesAsync()
{
return await _context.Recipes
.Where(r => r.IsFavorite)
.ToListAsync();
}
public async Task<bool> IsFavoriteAsync(Guid recipeId)
{
return await _context.Recipes
.AnyAsync(r => r.Id == recipeId && r.IsFavorite);
}
public async Task AddFavoriteAsync(Guid recipeId)
{
var recipe = await _context.Recipes.FindAsync(recipeId);
if (recipe != null && !recipe.IsFavorite)
{
recipe.IsFavorite = true;
await _context.SaveChangesAsync();
}
}
public async Task RemoveFavoriteAsync(Guid recipeId)
{
var recipe = await _context.Recipes.FindAsync(recipeId);
if (recipe != null && recipe.IsFavorite)
{
recipe.IsFavorite = false;
await _context.SaveChangesAsync();
}
}
}
}
@@ -0,0 +1,15 @@
namespace Francesco.Recipes.World.Repositories.Favorit
{
using Francesco.Recipes.World.Models.BackendModels.Recipe;
public interface IFavoritRepository
{
Task<IEnumerable<Recipe>> GetFavoriteRecipesAsync();
Task<bool> IsFavoriteAsync(Guid recipeId);
Task AddFavoriteAsync(Guid recipeId);
Task RemoveFavoriteAsync(Guid recipeId);
}
}