Implement generic repo pattern and unitofwork

This commit is contained in:
2023-10-30 20:56:37 +01:00
parent 9b8c5412f8
commit d3d2b4b989
11 changed files with 205 additions and 180 deletions

View File

@@ -1,5 +1,5 @@
using GerbilManagerWebAPI.Models;
using GerbilManagerWebAPI.Repositories;
using GerbilManagerWebAPI.DAL;
using GerbilManagerWebAPI.Dtos;
using GerbilManagerWebAPI.Converter;
@@ -13,20 +13,18 @@ namespace GerbilManagerWebAPI.Controllers
[Route("breeders")]
public class BreederController : ControllerBase
{
private readonly IGerbilRepository gerbilrepository;
private readonly IBreederRepository repository;
private readonly ILitterRepository litterRepository;
private readonly UnitOfWork unitOfWork;
public BreederController(IBreederRepository repo)
public BreederController(UnitOfWork unitOfWork)
{
this.repository = repo;
this.unitOfWork = unitOfWork;
}
//GET /gerbils
[HttpGet]
public IEnumerable<BreederDto> GetBreeders()
{
var items = repository.GetBreeders().Select( breeder => breeder.AsDto());
var items = unitOfWork.BreederRepository.Get().Select( breeder => breeder.AsDto());
return items;
}
@@ -34,7 +32,7 @@ namespace GerbilManagerWebAPI.Controllers
[HttpGet("{id}")]
public ActionResult<BreederDto> GetBreeder(Guid id)
{
var item = repository.GetBreeder(id).AsDto();
var item = unitOfWork.BreederRepository.GetByID(id).AsDto();
if(item is null)
{
@@ -51,7 +49,7 @@ namespace GerbilManagerWebAPI.Controllers
Name = dto.Name,
};
this.repository.CreateBreeder(breeder);
this.unitOfWork.BreederRepository.Insert(breeder);
return CreatedAtAction(nameof(GetBreeder), new { id = breeder.Id}, breeder.AsDto());
}
@@ -59,7 +57,7 @@ namespace GerbilManagerWebAPI.Controllers
[HttpPut("{id}")]
public ActionResult UpdateBreeder(Guid id, UpdateBreederDto breederDto)
{
var existingItem = repository.GetBreeder(id);
var existingItem = unitOfWork.BreederRepository.GetByID(id);
if(existingItem is null)
{
return NotFound();
@@ -69,21 +67,21 @@ namespace GerbilManagerWebAPI.Controllers
Name = breederDto.Name
};
repository.UpdateBreeder(updatedBreeder);
unitOfWork.BreederRepository.Update(updatedBreeder);
return NoContent();
}
[HttpDelete("{id}")]
public ActionResult DeleteBreeder(Guid id)
{
var existingLitter = repository.GetBreeder(id);
var existingLitter = unitOfWork.BreederRepository.GetByID(id);
if(existingLitter is null)
{
return NotFound();
}
repository.DeleteBreeder(existingLitter);
unitOfWork.BreederRepository.Delete(existingLitter);
return NoContent();
}