Introduce dtos

This commit is contained in:
2023-10-16 22:37:49 +02:00
parent 707bfae2e3
commit fc98f99eda
9 changed files with 107 additions and 7 deletions

View File

@@ -1,6 +1,9 @@
using GerbilManager.Models;
using GerbilManager.Repositories;
using GerbilManager.Dtos;
using Microsoft.AspNetCore.Mvc;
using GerbilManager.Converter;
namespace GerbilManager.Controllers
{
@@ -17,17 +20,17 @@ namespace GerbilManager.Controllers
//GET /gerbils
[HttpGet]
public IEnumerable<Gerbil> GetGerbils()
public IEnumerable<GerbilDto> GetGerbils()
{
var items = repository.GetGerbils();
var items = repository.GetGerbils().Select( gerbil => gerbil.AsDto());
return items;
}
//GET /gerbils
[HttpGet("{id}")]
public ActionResult<Gerbil> GetGerbil(Guid id)
public ActionResult<GerbilDto> GetGerbil(Guid id)
{
var item = repository.GetGerbil(id);
var item = repository.GetGerbil(id).AsDto();
if(item is null)
{

View File

@@ -0,0 +1,17 @@
using GerbilManager.Dtos;
using GerbilManager.Models;
namespace GerbilManager.Converter
{
public static class BreederConverterExtension
{
public static BreederDto AsDto(this Breeder breeder)
{
return new BreederDto{
Id = breeder.Id,
Name = breeder.Name
};
}
}
}

View File

@@ -0,0 +1,19 @@
using GerbilManager.Dtos;
using GerbilManager.Models;
namespace GerbilManager.Converter
{
public static class GerbilConverterExtension
{
public static GerbilDto AsDto(this Gerbil gerbil)
{
return new GerbilDto{
Breeder = gerbil.Breeder.AsDto(),
Gender = (GenderDto) ((int) gerbil.Gender),
Name = gerbil.Name,
Litter = gerbil.Litter.AsDto()
};
}
}
}

View File

@@ -0,0 +1,21 @@
using GerbilManager.Dtos;
using GerbilManager.Models;
namespace GerbilManager.Converter
{
public static class LitterConverterExtension
{
public static LitterDto AsDto(this Litter litter)
{
return new LitterDto{
Id = litter.Id,
Date = litter.Date,
Father = litter.Father.AsDto(),
Mother = litter.Mother.AsDto(),
Name = litter.Name,
Strength = litter.Strength
};
}
}
}

8
Dtos/BreederDto.cs Normal file
View File

@@ -0,0 +1,8 @@
namespace GerbilManager.Dtos
{
public record BreederDto
{
public Guid Id { get; init; }
public string Name { get; init; }
}
}

9
Dtos/GenderDto.cs Normal file
View File

@@ -0,0 +1,9 @@
namespace GerbilManager.Dtos
{
public enum GenderDto
{
unknown = 0,
male = 1,
female = 2
}
}

11
Dtos/GerbilDto.cs Normal file
View File

@@ -0,0 +1,11 @@
namespace GerbilManager.Dtos
{
public record GerbilDto
{
public Guid Id { get; init; }
public string Name { get; init; }
public GenderDto Gender { get; init; }
public LitterDto Litter { get; init; }
public BreederDto Breeder { get; init; }
}
}

12
Dtos/LitterDto.cs Normal file
View File

@@ -0,0 +1,12 @@
namespace GerbilManager.Dtos
{
public record LitterDto
{
public Guid Id { get; init; }
public string Name { get; init; }
public DateTime Date { get; init; }
public int Strength { get; init; }
public GerbilDto Father { get; init; }
public GerbilDto Mother { get; init; }
}
}

View File

@@ -2,8 +2,8 @@ namespace GerbilManager.Models
{
public enum Gender
{
unknown,
male,
female
unknown = 0,
male = 1,
female = 2
}
}