All checks were successful
Branch - test - Build and Push Backend API Docker Image / build-and-push (push) Successful in 25s
69 lines
2.2 KiB
C#
69 lines
2.2 KiB
C#
// src/Webshop.Infrastructure/Repositories/ProductRepository.cs
|
|
using Microsoft.EntityFrameworkCore;
|
|
using Webshop.Domain.Entities;
|
|
using Webshop.Domain.Interfaces;
|
|
using Webshop.Infrastructure.Data;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace Webshop.Infrastructure.Repositories
|
|
{
|
|
public class ProductRepository : IProductRepository // Implementiert das korrigierte Interface
|
|
{
|
|
private readonly ApplicationDbContext _context;
|
|
|
|
public ProductRepository(ApplicationDbContext context)
|
|
{
|
|
_context = context;
|
|
}
|
|
|
|
public async Task<IEnumerable<Product>> GetAllProductsAsync()
|
|
{
|
|
return await _context.Products.ToListAsync();
|
|
}
|
|
|
|
public async Task<Product?> GetProductByIdAsync(Guid id)
|
|
{
|
|
return await _context.Products.FindAsync(id);
|
|
}
|
|
|
|
public async Task<Product?> GetBySlugAsync(string slug)
|
|
{
|
|
return await _context.Products.FirstOrDefaultAsync(p => p.Slug == slug && p.IsActive);
|
|
}
|
|
|
|
// --- NEUE METHODE ---
|
|
public async Task<Product?> GetProductByIdForUpdateAsync(Guid id)
|
|
{
|
|
return await _context.Products
|
|
.Include(p => p.Images)
|
|
.Include(p => p.Productcategories)
|
|
.FirstOrDefaultAsync(p => p.Id == id);
|
|
}
|
|
|
|
public async Task AddProductAsync(Product product)
|
|
{
|
|
await _context.Products.AddAsync(product);
|
|
await _context.SaveChangesAsync();
|
|
}
|
|
|
|
// --- KORRIGIERTE UPDATE-METHODE (OHNE PARAMETER) ---
|
|
public async Task UpdateProductAsync(Product product)
|
|
{
|
|
// Sagen Sie EF explizit, was es tun soll. Das ist der robusteste Weg.
|
|
_context.Products.Update(product);
|
|
await _context.SaveChangesAsync();
|
|
}
|
|
|
|
public async Task DeleteProductAsync(Guid id)
|
|
{
|
|
var product = await GetProductByIdAsync(id);
|
|
if (product != null)
|
|
{
|
|
_context.Products.Remove(product);
|
|
await _context.SaveChangesAsync();
|
|
}
|
|
}
|
|
}
|
|
} |