WIP: feature/Définition-des-entités-métier-et-interfaces #14

Closed
Blyssco wants to merge 7 commits from feature/Définition-des-entités-métier-et-interfaces into develop
12 changed files with 94 additions and 14 deletions
Showing only changes of commit fce43e31ce - Show all commits

View File

@ -0,0 +1,9 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net9.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>

9
Domain/Domain.csproj Normal file
View File

@ -0,0 +1,9 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net9.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>

18
Domain/Entities/Spell.cs Normal file
View File

@ -0,0 +1,18 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

Peux-tu vérifier si ces imports sont vraiment nécessaires ? En général, on évite les imports inutiles pour garder le code propre

Peux-tu vérifier si ces imports sont vraiment nécessaires ? En général, on évite les imports inutiles pour garder le code propre

Corrigé, je ne nettoie pas assez mes pr avant de les nettoyer, c'est noté

Corrigé, je ne nettoie pas assez mes pr avant de les nettoyer, c'est noté
namespace Domain.Entities
{
public class Spell
{
public Guid Id { get; set; }
Review

Penses-tu qu'il soit souhaitable qu'un code externe puisse modifier l'Id d'un Spell après sa création l'entité ne devrais pas etre private?

Penses-tu qu'il soit souhaitable qu'un code externe puisse modifier l'Id d'un Spell après sa création l'entité ne devrais pas etre private?
Review

Ce que je retiens de ce commentaire, faire attention à ce qui doit etre accessible en dehors de la classe ou non, en l'occurence, un id devrait etre accessible uniquement en get étant donné qu'il est unique et propre à l'entité, c'est noté

Ce que je retiens de ce commentaire, faire attention à ce qui doit etre accessible en dehors de la classe ou non, en l'occurence, un id devrait etre accessible uniquement en get étant donné qu'il est unique et propre à l'entité, c'est noté
public required string Name { get; set; }
public required string Type { get; set; }
public required string Description { get; set; }
public required string Creator { get; set; }

Tu veux garder l'entieretée de l'objet User en en memoire pendant ton utilisation de cette entité? Une simple reference ne serait pas mieux?

Tu veux garder l'entieretée de l'objet User en en memoire pendant ton utilisation de cette entité? Une simple reference ne serait pas mieux?

Donc ici je n'avais pas prévu de one to many, un mage avec plusieurs sorts, simplement des sorts avec un nom de créateur, suite à ta remarque je viens d'apprendre donc qu'il vaut mieux faire une référence à un objet plutôt que de mettre ( public Creator? creator {Get; set;} ) je vais rajouter ceci à la pr.

Donc ici je n'avais pas prévu de one to many, un mage avec plusieurs sorts, simplement des sorts avec un nom de créateur, suite à ta remarque je viens d'apprendre donc qu'il vaut mieux faire une référence à un objet plutôt que de mettre ( public Creator? creator {Get; set;} ) je vais rajouter ceci à la pr.
public required DateTime CreationDate { get; set; }
}
}

View File

@ -0,0 +1,20 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Domain.Filters
{
public class SpellFilter
{
public Guid? Id { get; set; }
public string? Name { get; set; }
public string? Type { get; set; }
public string? Description { get; set; }
public string? Creator { get; set; }
public DateTime? FromDate { get; set; }
public DateTime? ToDate { get; set; }
}
}

View File

@ -0,0 +1,20 @@
using Domain.Entities;
using Domain.Filters;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Domain.Repositories
{
public interface ISpellRepository
{
Task<ICollection<Spell>> GetAll();
Task<Spell> GetSpellById(Guid id);
Task<ICollection<Spell>> GetFilteredSpells(SpellFilter spellfilter);
Task<Spell> UpdateSpell(Spell spell);
Review

Pourquoi passer un spell entier quand on gagner de la memoire en ne passant que l'id du spell, et des parametres optionnel pour ce qui doit etre modifier?

Pourquoi passer un spell entier quand on gagner de la memoire en ne passant que l'id du spell, et des parametres optionnel pour ce qui doit etre modifier?
Review

Afin de fix ceci, je vais créer une classe de style DTO (on peut avoir des dto coté domaine ?) qui elle va gérer les update avec des nullable

Afin de fix ceci, je vais créer une classe de style DTO (on peut avoir des dto coté domaine ?) qui elle va gérer les update avec des nullable
Task<string> DeleteSpell(Spell spell);

Pourquoi le retour est il un string? Pourquoi pas un boolean? Y'a til plus d'information necessaire au retour que effacer ou non effacer?

Qu'en est il de la gestion d'erreur? Pourquoi passer un spell entier quand on gagner de la memoire en ne passant que l'id du spell?

Pourquoi le retour est il un string? Pourquoi pas un boolean? Y'a til plus d'information necessaire au retour que effacer ou non effacer? Qu'en est il de la gestion d'erreur? Pourquoi passer un spell entier quand on gagner de la memoire en ne passant que l'id du spell?

Retour modifié vers un booléen, Concernant la gestion d'erreur elle se fera coté application et API sauf contre indication ?

Retour modifié vers un booléen, Concernant la gestion d'erreur elle se fera coté application et API sauf contre indication ?
Task<Spell> CreateSpell(Spell spell);
}
}

View File

@ -0,0 +1,9 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net9.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>

View File

@ -7,9 +7,6 @@
</PropertyGroup>
<ItemGroup>
<Folder Include="DTOs\" />
<Folder Include="Interfaces\" />
<Folder Include="Services\" />
</ItemGroup>
</Project>

View File

@ -7,11 +7,6 @@
</PropertyGroup>
<ItemGroup>
<Folder Include="Entities\" />
<Folder Include="Exceptions\" />
<Folder Include="DomainEvents\" />
<Folder Include="ValueObjects\" />
<Folder Include="Repositories\" />
</ItemGroup>
</Project>

View File

@ -7,8 +7,6 @@
</PropertyGroup>
<ItemGroup>
<Folder Include="Data\" />
<Folder Include="Repositories\" />
</ItemGroup>
</Project>

View File

@ -7,8 +7,6 @@
</PropertyGroup>
<ItemGroup>
<Folder Include="IntegrationTests\" />
<Folder Include="UnitTests\" />
</ItemGroup>
</Project>

View File

@ -11,8 +11,6 @@
</ItemGroup>
<ItemGroup>
<Folder Include="Controllers\" />
<Folder Include="Middlewares\" />
</ItemGroup>
</Project>

9
Tests/Tests.csproj Normal file
View File

@ -0,0 +1,9 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net9.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>