Cleaned code

This commit is contained in:
2026-03-17 10:27:53 +01:00
parent 15075eb051
commit d202d1541d
55 changed files with 306 additions and 264 deletions

View File

@@ -7,21 +7,21 @@
<component name="ChangeListManager"> <component name="ChangeListManager">
<list default="true" id="4c0ad985-5b6e-4587-85a5-1b48273bdb1d" name="Changes" comment=""> <list default="true" id="4c0ad985-5b6e-4587-85a5-1b48273bdb1d" name="Changes" comment="">
<change beforePath="$PROJECT_DIR$/.idea/.idea.BookHive/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/.idea.BookHive/.idea/workspace.xml" afterDir="false" /> <change beforePath="$PROJECT_DIR$/.idea/.idea.BookHive/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/.idea.BookHive/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/BookHive/Endpoints/Reviews/CreateReviewEndpoint.cs" beforeDir="false" afterPath="$PROJECT_DIR$/BookHive/Endpoints/Reviews/CreateReviewEndpoint.cs" afterDir="false" /> <change beforePath="$PROJECT_DIR$/BookHive/MappingProfiles/EntityToDtoMappings.cs" beforeDir="false" afterPath="$PROJECT_DIR$/BookHive/MappingProfiles/EntityToDtoMappings.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/BookHive/Specifications/Authors/GetAuthorByIdSpec.cs" beforeDir="false" afterPath="$PROJECT_DIR$/BookHive/Specifications/Authors/GetAuthorByIdSpec.cs" afterDir="false" /> <change beforePath="$PROJECT_DIR$/BookHive/obj/BookHive.csproj.nuget.dgspec.json" beforeDir="false" afterPath="$PROJECT_DIR$/BookHive/obj/BookHive.csproj.nuget.dgspec.json" afterDir="false" />
<change beforePath="$PROJECT_DIR$/BookHive/Specifications/Books/GetBookByIdSpec.cs" beforeDir="false" afterPath="$PROJECT_DIR$/BookHive/Specifications/Books/GetBookByIdSpec.cs" afterDir="false" /> <change beforePath="$PROJECT_DIR$/BookHive/obj/BookHive.csproj.nuget.g.props" beforeDir="false" afterPath="$PROJECT_DIR$/BookHive/obj/BookHive.csproj.nuget.g.props" afterDir="false" />
<change beforePath="$PROJECT_DIR$/BookHive/Specifications/Members/GetMemberByIdSpec.cs" beforeDir="false" afterPath="$PROJECT_DIR$/BookHive/Specifications/Members/GetMemberByIdSpec.cs" afterDir="false" /> <change beforePath="$PROJECT_DIR$/BookHive/obj/BookHive.csproj.nuget.g.targets" beforeDir="false" afterPath="$PROJECT_DIR$/BookHive/obj/BookHive.csproj.nuget.g.targets" afterDir="false" />
<change beforePath="$PROJECT_DIR$/BookHive/Specifications/Reviews/GetReviewByBookIdSpec.cs" beforeDir="false" afterPath="$PROJECT_DIR$/BookHive/Specifications/Reviews/GetReviewByBookIdSpec.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/BookHive/bin/Debug/net10.0/BookHive.dll" beforeDir="false" afterPath="$PROJECT_DIR$/BookHive/bin/Debug/net10.0/BookHive.dll" afterDir="false" />
<change beforePath="$PROJECT_DIR$/BookHive/bin/Debug/net10.0/BookHive.pdb" beforeDir="false" afterPath="$PROJECT_DIR$/BookHive/bin/Debug/net10.0/BookHive.pdb" afterDir="false" />
<change beforePath="$PROJECT_DIR$/BookHive/obj/Debug/net10.0/BookHive.AssemblyInfo.cs" beforeDir="false" afterPath="$PROJECT_DIR$/BookHive/obj/Debug/net10.0/BookHive.AssemblyInfo.cs" afterDir="false" /> <change beforePath="$PROJECT_DIR$/BookHive/obj/Debug/net10.0/BookHive.AssemblyInfo.cs" beforeDir="false" afterPath="$PROJECT_DIR$/BookHive/obj/Debug/net10.0/BookHive.AssemblyInfo.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/BookHive/obj/Debug/net10.0/BookHive.AssemblyInfoInputs.cache" beforeDir="false" afterPath="$PROJECT_DIR$/BookHive/obj/Debug/net10.0/BookHive.AssemblyInfoInputs.cache" afterDir="false" /> <change beforePath="$PROJECT_DIR$/BookHive/obj/Debug/net10.0/BookHive.AssemblyInfoInputs.cache" beforeDir="false" afterPath="$PROJECT_DIR$/BookHive/obj/Debug/net10.0/BookHive.AssemblyInfoInputs.cache" afterDir="false" />
<change beforePath="$PROJECT_DIR$/BookHive/obj/Debug/net10.0/BookHive.dll" beforeDir="false" afterPath="$PROJECT_DIR$/BookHive/obj/Debug/net10.0/BookHive.dll" afterDir="false" /> <change beforePath="$PROJECT_DIR$/BookHive/obj/Debug/net10.0/BookHive.GeneratedMSBuildEditorConfig.editorconfig" beforeDir="false" afterPath="$PROJECT_DIR$/BookHive/obj/Debug/net10.0/BookHive.GeneratedMSBuildEditorConfig.editorconfig" afterDir="false" />
<change beforePath="$PROJECT_DIR$/BookHive/obj/Debug/net10.0/BookHive.pdb" beforeDir="false" afterPath="$PROJECT_DIR$/BookHive/obj/Debug/net10.0/BookHive.pdb" afterDir="false" /> <change beforePath="$PROJECT_DIR$/BookHive/obj/Debug/net10.0/BookHive.assets.cache" beforeDir="false" afterPath="$PROJECT_DIR$/BookHive/obj/Debug/net10.0/BookHive.assets.cache" afterDir="false" />
<change beforePath="$PROJECT_DIR$/BookHive/obj/Debug/net10.0/ref/BookHive.dll" beforeDir="false" afterPath="$PROJECT_DIR$/BookHive/obj/Debug/net10.0/ref/BookHive.dll" afterDir="false" /> <change beforePath="$PROJECT_DIR$/BookHive/obj/Debug/net10.0/BookHive.csproj.AssemblyReference.cache" beforeDir="false" afterPath="$PROJECT_DIR$/BookHive/obj/Debug/net10.0/BookHive.csproj.AssemblyReference.cache" afterDir="false" />
<change beforePath="$PROJECT_DIR$/BookHive/obj/Debug/net10.0/refint/BookHive.dll" beforeDir="false" afterPath="$PROJECT_DIR$/BookHive/obj/Debug/net10.0/refint/BookHive.dll" afterDir="false" /> <change beforePath="$PROJECT_DIR$/BookHive/obj/Debug/net10.0/SwaggerExportPathInitializer.g.cs" beforeDir="false" afterPath="$PROJECT_DIR$/BookHive/obj/Debug/net10.0/SwaggerExportPathInitializer.g.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/BookHive/obj/Debug/net10.0/rjsmcshtml.dswa.cache.json" beforeDir="false" afterPath="$PROJECT_DIR$/BookHive/obj/Debug/net10.0/rjsmcshtml.dswa.cache.json" afterDir="false" /> <change beforePath="$PROJECT_DIR$/BookHive/obj/project.assets.json" beforeDir="false" afterPath="$PROJECT_DIR$/BookHive/obj/project.assets.json" afterDir="false" />
<change beforePath="$PROJECT_DIR$/BookHive/obj/Debug/net10.0/rjsmrazor.dswa.cache.json" beforeDir="false" afterPath="$PROJECT_DIR$/BookHive/obj/Debug/net10.0/rjsmrazor.dswa.cache.json" afterDir="false" /> <change beforePath="$PROJECT_DIR$/BookHive/obj/project.nuget.cache" beforeDir="false" afterPath="$PROJECT_DIR$/BookHive/obj/project.nuget.cache" afterDir="false" />
<change beforePath="$PROJECT_DIR$/BookHive/obj/project.packagespec.json" beforeDir="false" afterPath="$PROJECT_DIR$/BookHive/obj/project.packagespec.json" afterDir="false" />
<change beforePath="$PROJECT_DIR$/BookHive/obj/rider.project.model.nuget.info" beforeDir="false" afterPath="$PROJECT_DIR$/BookHive/obj/rider.project.model.nuget.info" afterDir="false" />
<change beforePath="$PROJECT_DIR$/BookHive/obj/rider.project.restore.info" beforeDir="false" afterPath="$PROJECT_DIR$/BookHive/obj/rider.project.restore.info" afterDir="false" />
</list> </list>
<option name="SHOW_DIALOG" value="false" /> <option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" /> <option name="HIGHLIGHT_CONFLICTS" value="true" />
@@ -74,18 +74,18 @@
<option name="hideEmptyMiddlePackages" value="true" /> <option name="hideEmptyMiddlePackages" value="true" />
<option name="showLibraryContents" value="true" /> <option name="showLibraryContents" value="true" />
</component> </component>
<component name="PropertiesComponent"><![CDATA[{ <component name="PropertiesComponent">{
"keyToString": { &quot;keyToString&quot;: {
".NET Launch Settings Profile.BookHive: http.executor": "Run", &quot;.NET Launch Settings Profile.BookHive: http.executor&quot;: &quot;Run&quot;,
"ModuleVcsDetector.initialDetectionPerformed": "true", &quot;ModuleVcsDetector.initialDetectionPerformed&quot;: &quot;true&quot;,
"RunOnceActivity.ShowReadmeOnStart": "true", &quot;RunOnceActivity.ShowReadmeOnStart&quot;: &quot;true&quot;,
"RunOnceActivity.TerminalTabsStorage.copyFrom.TerminalArrangementManager.252": "true", &quot;RunOnceActivity.TerminalTabsStorage.copyFrom.TerminalArrangementManager.252&quot;: &quot;true&quot;,
"RunOnceActivity.git.unshallow": "true", &quot;RunOnceActivity.git.unshallow&quot;: &quot;true&quot;,
"RunOnceActivity.typescript.service.memoryLimit.init": "true", &quot;RunOnceActivity.typescript.service.memoryLimit.init&quot;: &quot;true&quot;,
"git-widget-placeholder": "master", &quot;git-widget-placeholder&quot;: &quot;master&quot;,
"vue.rearranger.settings.migration": "true" &quot;vue.rearranger.settings.migration&quot;: &quot;true&quot;
} }
}]]></component> }</component>
<component name="RunManager" selected=".NET Launch Settings Profile.BookHive: http"> <component name="RunManager" selected=".NET Launch Settings Profile.BookHive: http">
<configuration name="BookHive: http" type="LaunchSettings" factoryName=".NET Launch Settings Profile"> <configuration name="BookHive: http" type="LaunchSettings" factoryName=".NET Launch Settings Profile">
<option name="LAUNCH_PROFILE_PROJECT_FILE_PATH" value="$PROJECT_DIR$/BookHive/BookHive.csproj" /> <option name="LAUNCH_PROFILE_PROJECT_FILE_PATH" value="$PROJECT_DIR$/BookHive/BookHive.csproj" />
@@ -130,6 +130,7 @@
<workItem from="1773087846465" duration="527000" /> <workItem from="1773087846465" duration="527000" />
<workItem from="1773088517368" duration="6491000" /> <workItem from="1773088517368" duration="6491000" />
<workItem from="1773126764051" duration="11148000" /> <workItem from="1773126764051" duration="11148000" />
<workItem from="1773739163277" duration="475000" />
</task> </task>
<task id="LOCAL-00001" summary="first commit"> <task id="LOCAL-00001" summary="first commit">
<option name="closed" value="true" /> <option name="closed" value="true" />

View File

@@ -10,15 +10,15 @@ public class BookHiveDbContext : DbContext
public DbSet<Member> Members { get; set; } public DbSet<Member> Members { get; set; }
public DbSet<Loan> Loans { get; set; } public DbSet<Loan> Loans { get; set; }
public DbSet<Review> Reviews { get; set; } public DbSet<Review> Reviews { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{ {
string connectionString = string connectionString =
"Server=romaric-thibault.fr;" + // Serveur SQL "Server=romaric-thibault.fr;" + // Serveur SQL
"Database=mathys_BookHive;" + // Nom de la base "Database=mathys_BookHive;" + // Nom de la base
"User Id=mathys;" + // Utilisateur "User Id=mathys;" + // Utilisateur
"Password=Onto9-Cage-Afflicted;" + // Mot de passe "Password=Onto9-Cage-Afflicted;" + // Mot de passe
"TrustServerCertificate=true;"; // Accepte certificat auto-signé "TrustServerCertificate=true;"; // Accepte certificat auto-signé
optionsBuilder.UseSqlServer(connectionString); optionsBuilder.UseSqlServer(connectionString);
} }
@@ -26,20 +26,20 @@ public class BookHiveDbContext : DbContext
protected override void OnModelCreating(ModelBuilder modelBuilder) protected override void OnModelCreating(ModelBuilder modelBuilder)
{ {
base.OnModelCreating(modelBuilder); base.OnModelCreating(modelBuilder);
modelBuilder.Entity<Review>() modelBuilder.Entity<Review>()
.HasIndex(x => new { x.BookId, x.MemberId }) .HasIndex(x => new { x.BookId, x.MemberId })
.IsUnique(); .IsUnique();
modelBuilder.Entity<Author>().HasData( modelBuilder.Entity<Author>().HasData(
new Author new Author
{ {
Id = 1, Id = 1,
FirstName = "George", FirstName = "George",
LastName = "Orwell", LastName = "Orwell",
Biography = "Auteur britannique connu pour ses romans dystopiques.", Biography = "Auteur britannique connu pour ses romans dystopiques.",
BirthDate = new DateOnly(1903, 6, 25), BirthDate = new DateOnly(1903, 6, 25),
Nationality = "Britannique" Nationality = "Britannique"
}, },
new Author new Author
@@ -61,7 +61,7 @@ public class BookHiveDbContext : DbContext
Nationality = "Française" Nationality = "Française"
} }
); );
modelBuilder.Entity<Book>().HasData( modelBuilder.Entity<Book>().HasData(
new Book new Book
{ {
@@ -130,7 +130,7 @@ public class BookHiveDbContext : DbContext
AuthorId = 3 AuthorId = 3
} }
); );
modelBuilder.Entity<Member>().HasData( modelBuilder.Entity<Member>().HasData(
new Member new Member
{ {
@@ -169,7 +169,7 @@ public class BookHiveDbContext : DbContext
IsActive = true IsActive = true
} }
); );
modelBuilder.Entity<Loan>().HasData( modelBuilder.Entity<Loan>().HasData(
new Loan new Loan
{ {

View File

@@ -10,6 +10,6 @@ public class GetAuthorDetailsDto
public string? Biography { get; set; } public string? Biography { get; set; }
public DateOnly BirthDate { get; set; } public DateOnly BirthDate { get; set; }
public string? Nationality { get; set; } public string? Nationality { get; set; }
public List<GetBookDto>? Books { get; set; } public List<GetBookDto>? Books { get; set; }
} }

View File

@@ -4,7 +4,7 @@ public class CreateLoanDto
{ {
public int BookId { get; set; } public int BookId { get; set; }
public int MemberId { get; set; } public int MemberId { get; set; }
public DateOnly LoanDate { get; set; } public DateOnly LoanDate { get; set; }
public DateOnly DueDate { get; set; } public DateOnly DueDate { get; set; }
} }

View File

@@ -6,14 +6,14 @@ namespace BookHive.DTO.Loan;
public class GetLoanDto public class GetLoanDto
{ {
public int Id { get; set; } public int Id { get; set; }
public int BookId { get; set; } public int BookId { get; set; }
public int MemberId { get; set; } public int MemberId { get; set; }
public DateOnly LoanDate { get; set; } public DateOnly LoanDate { get; set; }
public DateOnly DueDate { get; set; } public DateOnly DueDate { get; set; }
public DateOnly? ReturnDate { get; set; } public DateOnly? ReturnDate { get; set; }
public GetBookDto? Book { get; set; } public GetBookDto? Book { get; set; }
public GetMemberDto? Member { get; set; } public GetMemberDto? Member { get; set; }
} }

View File

@@ -3,10 +3,10 @@ namespace BookHive.DTO.Loan;
public class UpdateLoanDto public class UpdateLoanDto
{ {
public int Id { get; set; } public int Id { get; set; }
public int BookId { get; set; } public int BookId { get; set; }
public int MemberId { get; set; } public int MemberId { get; set; }
public DateOnly LoanDate { get; set; } public DateOnly LoanDate { get; set; }
public DateOnly DueDate { get; set; } public DateOnly DueDate { get; set; }
public DateOnly? ReturnDate { get; set; } public DateOnly? ReturnDate { get; set; }

View File

@@ -6,5 +6,4 @@ public class CreateMemberDto
public string? FirstName { get; set; } public string? FirstName { get; set; }
public string? LastName { get; set; } public string? LastName { get; set; }
public DateOnly MembershipDate { get; set; } public DateOnly MembershipDate { get; set; }
} }

View File

@@ -2,10 +2,9 @@ namespace BookHive.DTO.Review;
public class CreateReviewDto public class CreateReviewDto
{ {
public int BookId { get; set; } public int BookId { get; set; }
public int MemberId { get; set; } public int MemberId { get; set; }
public int Rating { get; set; } public int Rating { get; set; }
public string? Comment { get; set; } public string? Comment { get; set; }
} }

View File

@@ -6,14 +6,14 @@ namespace BookHive.DTO.Review;
public class GetReviewDto public class GetReviewDto
{ {
public int Id { get; set; } public int Id { get; set; }
public int BookId { get; set; } public int BookId { get; set; }
public int MemberId { get; set; } public int MemberId { get; set; }
public int Rating { get; set; } public int Rating { get; set; }
public string? Comment { get; set; } public string? Comment { get; set; }
public DateTime CreatedAt { get; set; } public DateTime CreatedAt { get; set; }
public GetBookDto? Book { get; set; } public GetBookDto? Book { get; set; }
public GetMemberDto? Member { get; set; } public GetMemberDto? Member { get; set; }
} }

View File

@@ -3,10 +3,10 @@ namespace BookHive.DTO.Review;
public class UpdateReviewDto public class UpdateReviewDto
{ {
public int Id { get; set; } public int Id { get; set; }
public int BookId { get; set; } public int BookId { get; set; }
public int MemberId { get; set; } public int MemberId { get; set; }
public int Rating { get; set; } public int Rating { get; set; }
public string? Comment { get; set; } public string? Comment { get; set; }
} }

View File

@@ -17,7 +17,7 @@ public class DeleteAuthorEndpoint(AuthorRepository authorRepository) : Endpoint<
Delete("/authors/{@Id}", x => new { x.Id }); Delete("/authors/{@Id}", x => new { x.Id });
AllowAnonymous(); AllowAnonymous();
} }
public override async Task HandleAsync(DeleteAuthorRequest req, CancellationToken ct) public override async Task HandleAsync(DeleteAuthorRequest req, CancellationToken ct)
{ {
Author? author = await authorRepository.SingleOrDefaultAsync(new GetAuthorByIdSpec(req.Id), ct); Author? author = await authorRepository.SingleOrDefaultAsync(new GetAuthorByIdSpec(req.Id), ct);
@@ -30,11 +30,12 @@ public class DeleteAuthorEndpoint(AuthorRepository authorRepository) : Endpoint<
if (author.Books?.Count > 0) if (author.Books?.Count > 0)
{ {
await Send.StringAsync("L'auteur possède encore des livres",409, cancellation: ct); await Send.StringAsync("L'auteur possède encore des livres", 409, cancellation: ct);
return; return;
} }
await authorRepository.DeleteAsync(author, ct); await authorRepository.DeleteAsync(author, ct);
await Send.NoContentAsync(ct);; await Send.NoContentAsync(ct);
;
} }
} }

View File

@@ -11,7 +11,7 @@ public class GetAuthorsEndpoint(AuthorRepository authorRepository) : EndpointWit
Get("/authors/"); Get("/authors/");
AllowAnonymous(); AllowAnonymous();
} }
public override async Task HandleAsync(CancellationToken ct) public override async Task HandleAsync(CancellationToken ct)
{ {
await Send.OkAsync(await authorRepository.ProjectToListAsync<GetAuthorDto>(ct), ct); await Send.OkAsync(await authorRepository.ProjectToListAsync<GetAuthorDto>(ct), ct);

View File

@@ -22,7 +22,7 @@ public class UpdateAuthorEndpoint(AuthorRepository authorRepository, AutoMapper.
await Send.NotFoundAsync(ct); await Send.NotFoundAsync(ct);
return; return;
} }
mapper.Map(req, author); mapper.Map(req, author);
await authorRepository.SaveChangesAsync(ct); await authorRepository.SaveChangesAsync(ct);
await Send.NoContentAsync(ct); await Send.NoContentAsync(ct);

View File

@@ -22,9 +22,8 @@ public class CreateBookEndpoint(BookRepository bookRepository, AuthorRepository
await Send.NotFoundAsync(ct); await Send.NotFoundAsync(ct);
return; return;
} }
await bookRepository.AddAsync(mapper.Map<Book>(req), ct); await bookRepository.AddAsync(mapper.Map<Book>(req), ct);
await Send.NoContentAsync(ct); await Send.NoContentAsync(ct);
} }
} }

View File

@@ -11,7 +11,7 @@ public class GetBooksEndpoint(BookRepository bookRepository) : EndpointWithoutRe
Get("/books/"); Get("/books/");
AllowAnonymous(); AllowAnonymous();
} }
public override async Task HandleAsync(CancellationToken ct) public override async Task HandleAsync(CancellationToken ct)
{ {
await Send.OkAsync(await bookRepository.ProjectToListAsync<GetBookDto>(ct), ct); await Send.OkAsync(await bookRepository.ProjectToListAsync<GetBookDto>(ct), ct);

View File

@@ -22,7 +22,7 @@ public class UpdateBookEndpoit(BookRepository bookRepository, AutoMapper.IMapper
await Send.NotFoundAsync(ct); await Send.NotFoundAsync(ct);
return; return;
} }
mapper.Map(req, book); mapper.Map(req, book);
await bookRepository.SaveChangesAsync(ct); await bookRepository.SaveChangesAsync(ct);
await Send.NoContentAsync(ct); await Send.NoContentAsync(ct);

View File

@@ -8,7 +8,8 @@ using FastEndpoints;
namespace BookHive.Endpoints.Loans; namespace BookHive.Endpoints.Loans;
public class CreateLoanEndpoint(LoanRepository loanRepository, BookRepository bookRepository, MemberRepository memberRepository, AutoMapper.IMapper mapper) : Endpoint<CreateLoanDto> public class CreateLoanEndpoint(LoanRepository loanRepository, BookRepository bookRepository, MemberRepository memberRepository, AutoMapper.IMapper mapper)
: Endpoint<CreateLoanDto>
{ {
public override void Configure() public override void Configure()
{ {
@@ -24,7 +25,7 @@ public class CreateLoanEndpoint(LoanRepository loanRepository, BookRepository bo
await Send.NotFoundAsync(ct); await Send.NotFoundAsync(ct);
return; return;
} }
Member? member = await memberRepository.SingleOrDefaultAsync(new GetMemberByIdSpec(req.MemberId), ct); Member? member = await memberRepository.SingleOrDefaultAsync(new GetMemberByIdSpec(req.MemberId), ct);
if (member is null) if (member is null)
{ {
@@ -37,7 +38,7 @@ public class CreateLoanEndpoint(LoanRepository loanRepository, BookRepository bo
await Send.StringAsync("Le membre est désactivé", 400, cancellation: ct); await Send.StringAsync("Le membre est désactivé", 400, cancellation: ct);
return; return;
} }
Loan? loan = await loanRepository.FirstOrDefaultAsync(new GetAvailableBookByIdSpec(req.BookId), ct); Loan? loan = await loanRepository.FirstOrDefaultAsync(new GetAvailableBookByIdSpec(req.BookId), ct);
if (loan is not null) if (loan is not null)
{ {

View File

@@ -27,7 +27,7 @@ public class PatchReturnLoanEndpoint(LoanRepository loanRepository) : Endpoint<P
await Send.NotFoundAsync(ct); await Send.NotFoundAsync(ct);
return; return;
} }
loan?.ReturnDate = req.ReturnDate; loan?.ReturnDate = req.ReturnDate;
await loanRepository.SaveChangesAsync(ct); await loanRepository.SaveChangesAsync(ct);
await Send.NoContentAsync(ct); await Send.NoContentAsync(ct);

View File

@@ -11,7 +11,7 @@ public class GetMembersEndpoint(MemberRepository memberRepository) : EndpointWit
Get("/members/"); Get("/members/");
AllowAnonymous(); AllowAnonymous();
} }
public override async Task HandleAsync(CancellationToken ct) public override async Task HandleAsync(CancellationToken ct)
{ {
await Send.OkAsync(await memberRepository.ProjectToListAsync<GetMemberDto>(ct), ct); await Send.OkAsync(await memberRepository.ProjectToListAsync<GetMemberDto>(ct), ct);

View File

@@ -22,7 +22,7 @@ public class UpdateMemberEndpoint(MemberRepository memberRepository, AutoMapper.
await Send.NotFoundAsync(ct); await Send.NotFoundAsync(ct);
return; return;
} }
mapper.Map(req, member); mapper.Map(req, member);
await memberRepository.SaveChangesAsync(ct); await memberRepository.SaveChangesAsync(ct);
await Send.NoContentAsync(ct); await Send.NoContentAsync(ct);

View File

@@ -9,9 +9,9 @@ using FastEndpoints;
namespace BookHive.Endpoints.Reviews; namespace BookHive.Endpoints.Reviews;
public class CreateReviewEndpoint( public class CreateReviewEndpoint(
ReviewRepository reviewRepository, ReviewRepository reviewRepository,
MemberRepository memberRepository, MemberRepository memberRepository,
BookRepository bookRepository, BookRepository bookRepository,
AutoMapper.IMapper mapper) AutoMapper.IMapper mapper)
: Endpoint<CreateReviewDto> : Endpoint<CreateReviewDto>
{ {
@@ -29,14 +29,14 @@ public class CreateReviewEndpoint(
await Send.NotFoundAsync(ct); await Send.NotFoundAsync(ct);
return; return;
} }
Member? member = await memberRepository.SingleOrDefaultAsync(new GetMemberByIdSpec(req.MemberId), ct); Member? member = await memberRepository.SingleOrDefaultAsync(new GetMemberByIdSpec(req.MemberId), ct);
if (member is null) if (member is null)
{ {
await Send.NotFoundAsync(ct); await Send.NotFoundAsync(ct);
return; return;
} }
if (!member.IsActive) if (!member.IsActive)
{ {
await Send.StringAsync("Le membre est désactivé", 400, cancellation: ct); await Send.StringAsync("Le membre est désactivé", 400, cancellation: ct);
@@ -49,7 +49,7 @@ public class CreateReviewEndpoint(
await Send.StringAsync("Le membre a déjà posté un commentaire", 400, cancellation: ct); await Send.StringAsync("Le membre a déjà posté un commentaire", 400, cancellation: ct);
return; return;
} }
await reviewRepository.AddAsync(mapper.Map<Review>(req), ct); await reviewRepository.AddAsync(mapper.Map<Review>(req), ct);
await Send.NoContentAsync(ct); await Send.NoContentAsync(ct);
} }

View File

@@ -17,7 +17,7 @@ public class DeleteReviewEndpoint(ReviewRepository reviewRepository) : Endpoint<
Delete("/reviews/{@Id}", x => new { x.Id }); Delete("/reviews/{@Id}", x => new { x.Id });
AllowAnonymous(); AllowAnonymous();
} }
public override async Task HandleAsync(DeleteReviewsRequest req, CancellationToken ct) public override async Task HandleAsync(DeleteReviewsRequest req, CancellationToken ct)
{ {
Review? review = await reviewRepository.SingleOrDefaultAsync(new GetReviewByIdSpec(req.Id), ct); Review? review = await reviewRepository.SingleOrDefaultAsync(new GetReviewByIdSpec(req.Id), ct);
@@ -27,7 +27,7 @@ public class DeleteReviewEndpoint(ReviewRepository reviewRepository) : Endpoint<
await Send.NotFoundAsync(ct); await Send.NotFoundAsync(ct);
return; return;
} }
await reviewRepository.DeleteAsync(review, ct); await reviewRepository.DeleteAsync(review, ct);
await Send.NoContentAsync(ct); await Send.NoContentAsync(ct);
} }

View File

@@ -8,22 +8,22 @@ using BookHive.Models;
namespace BookHive.MappingProfiles; namespace BookHive.MappingProfiles;
public class DtoToEntityMappings : Profile public class DtoToEntityMappings : Profile
{ {
public DtoToEntityMappings() public DtoToEntityMappings()
{ {
CreateMap<CreateBookDto, Book>(); CreateMap<CreateBookDto, Book>();
CreateMap<UpdateBookDto, Book>(); CreateMap<UpdateBookDto, Book>();
CreateMap<CreateAuthorDto, Author>(); CreateMap<CreateAuthorDto, Author>();
CreateMap<UpdateAuthorDto, Author>(); CreateMap<UpdateAuthorDto, Author>();
CreateMap<CreateMemberDto, Member>(); CreateMap<CreateMemberDto, Member>();
CreateMap<UpdateMemberDto, Member>(); CreateMap<UpdateMemberDto, Member>();
CreateMap<CreateReviewDto, Review>(); CreateMap<CreateReviewDto, Review>();
CreateMap<UpdateReviewDto, Review>(); CreateMap<UpdateReviewDto, Review>();
CreateMap<CreateLoanDto, Loan>(); CreateMap<CreateLoanDto, Loan>();
CreateMap<UpdateLoanDto, Loan>(); CreateMap<UpdateLoanDto, Loan>();
} }

View File

@@ -14,21 +14,21 @@ public class EntityToDtoMappings : Profile
{ {
CreateMap<Book, GetBookDto>() CreateMap<Book, GetBookDto>()
.ForMember( .ForMember(
dest => dest.AuthorFullName, dest => dest.AuthorFullName,
opt => opt =>
opt.MapFrom(src => opt.MapFrom(src =>
src.Author!.FirstName + " " + src.Author.LastName) src.Author!.FirstName + " " + src.Author.LastName)
); );
CreateMap<Book, GetBookDetailsDto>(); CreateMap<Book, GetBookDetailsDto>();
CreateMap<Author, GetAuthorDto>(); CreateMap<Author, GetAuthorDto>();
CreateMap<Author, GetAuthorDetailsDto>(); CreateMap<Author, GetAuthorDetailsDto>();
CreateMap<Loan, GetLoanDto>(); CreateMap<Loan, GetLoanDto>();
CreateMap<Member, GetMemberDto>(); CreateMap<Member, GetMemberDto>();
CreateMap<Member, GetMemberDetailsDto>(); CreateMap<Member, GetMemberDetailsDto>();
CreateMap<Review, GetReviewDto>(); CreateMap<Review, GetReviewDto>();
} }
} }

View File

@@ -4,12 +4,12 @@ namespace BookHive.Models;
public class Author public class Author
{ {
[Key]public int Id { get; set; } [Key] public int Id { get; set; }
[Required, MaxLength(100)] public string? FirstName { get; set; } [Required, MaxLength(100)] public string? FirstName { get; set; }
[Required, MaxLength(100)] public string? LastName { get; set; } [Required, MaxLength(100)] public string? LastName { get; set; }
[MaxLength(2000)] public string? Biography { get; set; } [MaxLength(2000)] public string? Biography { get; set; }
[Required] public DateOnly BirthDate { get; set; } [Required] public DateOnly BirthDate { get; set; }
[Required, MaxLength(60)] public string? Nationality { get; set; } [Required, MaxLength(60)] public string? Nationality { get; set; }
public List<Book>? Books { get; set; } public List<Book>? Books { get; set; }
} }

View File

@@ -14,7 +14,7 @@ public class Book
public Author? Author { get; set; } public Author? Author { get; set; }
[Required] public int AuthorId { get; set; } [Required] public int AuthorId { get; set; }
public List<Loan>? Loans { get; set; } public List<Loan>? Loans { get; set; }
public List<Review>? Reviews { get; set; } public List<Review>? Reviews { get; set; }
} }

View File

@@ -5,13 +5,13 @@ namespace BookHive.Models;
public class Loan public class Loan
{ {
[Key] public int Id { get; set; } [Key] public int Id { get; set; }
public Book? Book { get; set; } public Book? Book { get; set; }
[Required] public int BookId { get; set; } [Required] public int BookId { get; set; }
public Member? Member { get; set; } public Member? Member { get; set; }
[Required] public int MemberId { get; set; } [Required] public int MemberId { get; set; }
[Required] public DateOnly LoanDate { get; set; } [Required] public DateOnly LoanDate { get; set; }
[Required] public DateOnly DueDate { get; set; } [Required] public DateOnly DueDate { get; set; }
public DateOnly? ReturnDate { get; set; } public DateOnly? ReturnDate { get; set; }

View File

@@ -9,8 +9,8 @@ public class Member
[Required, MaxLength(100)] public string? FirstName { get; set; } [Required, MaxLength(100)] public string? FirstName { get; set; }
[Required, MaxLength(100)] public string? LastName { get; set; } [Required, MaxLength(100)] public string? LastName { get; set; }
[Required] public DateOnly MembershipDate { get; set; } [Required] public DateOnly MembershipDate { get; set; }
[Required] public bool IsActive { get; set; } = true; [Required] public bool IsActive { get; set; } = true;
public List<Loan>? Loans { get; set; } public List<Loan>? Loans { get; set; }
public List<Review>? Reviews { get; set; } public List<Review>? Reviews { get; set; }
} }

View File

@@ -5,14 +5,14 @@ namespace BookHive.Models;
public class Review public class Review
{ {
[Key] public int Id { get; set; } [Key] public int Id { get; set; }
public Book? Book { get; set; } public Book? Book { get; set; }
[Required] public int BookId { get; set; } [Required] public int BookId { get; set; }
public Member? Member { get; set; } public Member? Member { get; set; }
[Required] public int MemberId { get; set; } [Required] public int MemberId { get; set; }
[Required] public int Rating { get; set; } [Required] public int Rating { get; set; }
[MaxLength(1000)] public string? Comment { get; set; } [MaxLength(1000)] public string? Comment { get; set; }
[Required] public DateTime? CreatedAt { get; set; } = DateTime.Now; [Required] public DateTime? CreatedAt { get; set; } = DateTime.Now;
} }

View File

@@ -15,7 +15,7 @@ public class CreateAuthorDtoValidator : Validator<CreateAuthorDto>
.WithMessage("First name cannot exceed 100 characters.") .WithMessage("First name cannot exceed 100 characters.")
.MinimumLength(2) .MinimumLength(2)
.WithMessage("First name must exceed 2 characters."); .WithMessage("First name must exceed 2 characters.");
RuleFor(x => x.LastName) RuleFor(x => x.LastName)
.NotEmpty() .NotEmpty()
.WithMessage("Last name is required.") .WithMessage("Last name is required.")
@@ -23,19 +23,19 @@ public class CreateAuthorDtoValidator : Validator<CreateAuthorDto>
.WithMessage("Last name cannot exceed 100 characters.") .WithMessage("Last name cannot exceed 100 characters.")
.MinimumLength(2) .MinimumLength(2)
.WithMessage("Last name must exceed 2 characters."); .WithMessage("Last name must exceed 2 characters.");
RuleFor(x => x.Biography) RuleFor(x => x.Biography)
.MaximumLength(2000) .MaximumLength(2000)
.WithMessage("Biography cannot exceed 2000 characters.") .WithMessage("Biography cannot exceed 2000 characters.")
.MinimumLength(2) .MinimumLength(2)
.WithMessage("Biography must exceed 2 characters."); .WithMessage("Biography must exceed 2 characters.");
RuleFor(x => x.BirthDate) RuleFor(x => x.BirthDate)
.NotEmpty() .NotEmpty()
.WithMessage("Birth date is required.") .WithMessage("Birth date is required.")
.LessThan(DateOnly.FromDateTime(DateTime.Now)) .LessThan(DateOnly.FromDateTime(DateTime.Now))
.WithMessage("Birth date cannot be in the future."); .WithMessage("Birth date cannot be in the future.");
RuleFor(x => x.Nationality) RuleFor(x => x.Nationality)
.NotEmpty() .NotEmpty()
.WithMessage("Nationality is required.") .WithMessage("Nationality is required.")

View File

@@ -15,7 +15,7 @@ public class GetAuthorDtoValidator : Validator<GetAuthorDto>
RuleFor(x => x.FirstName) RuleFor(x => x.FirstName)
.NotEmpty() .NotEmpty()
.WithMessage("First name is required"); .WithMessage("First name is required");
RuleFor(x => x.LastName) RuleFor(x => x.LastName)
.NotEmpty() .NotEmpty()
.WithMessage("Last name is required"); .WithMessage("Last name is required");

View File

@@ -11,7 +11,7 @@ public class UpdateAuthorDtoValidator : Validator<UpdateAuthorDto>
RuleFor(x => x.Id) RuleFor(x => x.Id)
.GreaterThan(0) .GreaterThan(0)
.WithMessage("Id is invalid."); .WithMessage("Id is invalid.");
RuleFor(x => x.FirstName) RuleFor(x => x.FirstName)
.NotEmpty() .NotEmpty()
.WithMessage("First name is required.") .WithMessage("First name is required.")
@@ -19,7 +19,7 @@ public class UpdateAuthorDtoValidator : Validator<UpdateAuthorDto>
.WithMessage("First name cannot exceed 100 characters.") .WithMessage("First name cannot exceed 100 characters.")
.MinimumLength(2) .MinimumLength(2)
.WithMessage("First name must exceed 2 characters."); .WithMessage("First name must exceed 2 characters.");
RuleFor(x => x.LastName) RuleFor(x => x.LastName)
.NotEmpty() .NotEmpty()
.WithMessage("Last name is required.") .WithMessage("Last name is required.")
@@ -27,19 +27,19 @@ public class UpdateAuthorDtoValidator : Validator<UpdateAuthorDto>
.WithMessage("Last name cannot exceed 100 characters.") .WithMessage("Last name cannot exceed 100 characters.")
.MinimumLength(2) .MinimumLength(2)
.WithMessage("Last name must exceed 2 characters."); .WithMessage("Last name must exceed 2 characters.");
RuleFor(x => x.Biography) RuleFor(x => x.Biography)
.MaximumLength(2000) .MaximumLength(2000)
.WithMessage("Biography cannot exceed 2000 characters.") .WithMessage("Biography cannot exceed 2000 characters.")
.MinimumLength(2) .MinimumLength(2)
.WithMessage("Biography must exceed 2 characters."); .WithMessage("Biography must exceed 2 characters.");
RuleFor(x => x.BirthDate) RuleFor(x => x.BirthDate)
.NotEmpty() .NotEmpty()
.WithMessage("Birth date is required.") .WithMessage("Birth date is required.")
.LessThan(DateOnly.FromDateTime(DateTime.Now)) .LessThan(DateOnly.FromDateTime(DateTime.Now))
.WithMessage("Birth date cannot be in the future."); .WithMessage("Birth date cannot be in the future.");
RuleFor(x => x.Nationality) RuleFor(x => x.Nationality)
.NotEmpty() .NotEmpty()
.WithMessage("Nationality is required.") .WithMessage("Nationality is required.")

View File

@@ -12,31 +12,31 @@ public class CreateBookDtoValidator : Validator<CreateBookDto>
.NotEmpty().WithMessage("Le titre est obligatoire.") .NotEmpty().WithMessage("Le titre est obligatoire.")
.MaximumLength(200) .MaximumLength(200)
.WithMessage("Le titre ne peut pas dépasser 200 caractères."); .WithMessage("Le titre ne peut pas dépasser 200 caractères.");
RuleFor(x => x.Isbn) RuleFor(x => x.Isbn)
.NotEmpty() .NotEmpty()
.WithMessage("LISBN est obligatoire.")! .WithMessage("LISBN est obligatoire.")!
.IsValidIsbn13(); .IsValidIsbn13();
RuleFor(x => x.PageCount) RuleFor(x => x.PageCount)
.GreaterThan(0) .GreaterThan(0)
.WithMessage("Le nombre de pages doit être supérieur à 0."); .WithMessage("Le nombre de pages doit être supérieur à 0.");
RuleFor(x => x.PublishedDate) RuleFor(x => x.PublishedDate)
.NotEmpty().WithMessage("La date de publication est obligatoire.") .NotEmpty().WithMessage("La date de publication est obligatoire.")
.Must(d => d <= DateOnly.FromDateTime(DateTime.Now)) .Must(d => d <= DateOnly.FromDateTime(DateTime.Now))
.WithMessage("La date de publication ne peut pas être dans le futur."); .WithMessage("La date de publication ne peut pas être dans le futur.");
RuleFor(x => x.Genre) RuleFor(x => x.Genre)
.NotEmpty() .NotEmpty()
.WithMessage("Le genre est obligatoire.") .WithMessage("Le genre est obligatoire.")
.MaximumLength(50) .MaximumLength(50)
.WithMessage("Le genre ne peut pas dépasser 50 caractères."); .WithMessage("Le genre ne peut pas dépasser 50 caractères.");
RuleFor(x => x.AuthorId) RuleFor(x => x.AuthorId)
.GreaterThan(0) .GreaterThan(0)
.WithMessage("Lidentifiant de lauteur est invalide."); .WithMessage("Lidentifiant de lauteur est invalide.");
When(x => x.Summary != null, () => When(x => x.Summary != null, () =>
{ {
RuleFor(x => x.Summary) RuleFor(x => x.Summary)

View File

@@ -15,12 +15,12 @@ public class GetBookDtoValidator : Validator<GetBookDto>
RuleFor(x => x.Title) RuleFor(x => x.Title)
.NotEmpty() .NotEmpty()
.WithMessage("Title is required"); .WithMessage("Title is required");
RuleFor(x => x.Isbn) RuleFor(x => x.Isbn)
.NotEmpty().WithMessage("LISBN est obligatoire.") .NotEmpty().WithMessage("LISBN est obligatoire.")
.Matches(@"^\d{13}$") .Matches(@"^\d{13}$")
.WithMessage("LISBN doit contenir exactement 13 chiffres."); .WithMessage("LISBN doit contenir exactement 13 chiffres.");
RuleFor(x => x.AuthorFullName) RuleFor(x => x.AuthorFullName)
.NotEmpty() .NotEmpty()
.WithMessage("AuthorFullName is required"); .WithMessage("AuthorFullName is required");

View File

@@ -11,36 +11,36 @@ public class UpdateBookDtoValidator : Validator<UpdateBookDto>
RuleFor(x => x.Id) RuleFor(x => x.Id)
.GreaterThan(0) .GreaterThan(0)
.WithMessage("Id is invalid."); .WithMessage("Id is invalid.");
RuleFor(x => x.Title) RuleFor(x => x.Title)
.NotEmpty().WithMessage("Le titre est obligatoire.") .NotEmpty().WithMessage("Le titre est obligatoire.")
.MaximumLength(200) .MaximumLength(200)
.WithMessage("Le titre ne peut pas dépasser 200 caractères."); .WithMessage("Le titre ne peut pas dépasser 200 caractères.");
RuleFor(x => x.Isbn) RuleFor(x => x.Isbn)
.NotEmpty().WithMessage("LISBN est obligatoire.") .NotEmpty().WithMessage("LISBN est obligatoire.")
.Matches(@"^\d{13}$") .Matches(@"^\d{13}$")
.WithMessage("LISBN doit contenir exactement 13 chiffres."); .WithMessage("LISBN doit contenir exactement 13 chiffres.");
RuleFor(x => x.PageCount) RuleFor(x => x.PageCount)
.GreaterThan(0) .GreaterThan(0)
.WithMessage("Le nombre de pages doit être supérieur à 0."); .WithMessage("Le nombre de pages doit être supérieur à 0.");
RuleFor(x => x.PublishedDate) RuleFor(x => x.PublishedDate)
.NotEmpty().WithMessage("La date de publication est obligatoire.") .NotEmpty().WithMessage("La date de publication est obligatoire.")
.Must(d => d <= DateOnly.FromDateTime(DateTime.Now)) .Must(d => d <= DateOnly.FromDateTime(DateTime.Now))
.WithMessage("La date de publication ne peut pas être dans le futur."); .WithMessage("La date de publication ne peut pas être dans le futur.");
RuleFor(x => x.Genre) RuleFor(x => x.Genre)
.NotEmpty() .NotEmpty()
.WithMessage("Le genre est obligatoire.") .WithMessage("Le genre est obligatoire.")
.MaximumLength(50) .MaximumLength(50)
.WithMessage("Le genre ne peut pas dépasser 50 caractères."); .WithMessage("Le genre ne peut pas dépasser 50 caractères.");
RuleFor(x => x.AuthorId) RuleFor(x => x.AuthorId)
.GreaterThan(0) .GreaterThan(0)
.WithMessage("Lidentifiant de lauteur est invalide."); .WithMessage("Lidentifiant de lauteur est invalide.");
When(x => x.Summary != null, () => When(x => x.Summary != null, () =>
{ {
RuleFor(x => x.Summary) RuleFor(x => x.Summary)

View File

@@ -20,6 +20,7 @@ public static class CustomValidators
var digit = isbn[i] - '0'; var digit = isbn[i] - '0';
sum += (i % 2 == 0) ? digit : digit * 3; sum += (i % 2 == 0) ? digit : digit * 3;
} }
var checkDigit = (10 - (sum % 10)) % 10; var checkDigit = (10 - (sum % 10)) % 10;
return checkDigit == (isbn[12] - '0'); return checkDigit == (isbn[12] - '0');
}) })

View File

@@ -11,15 +11,15 @@ public class CreateLoanDtoValidator : Validator<CreateLoanDto>
RuleFor(x => x.BookId) RuleFor(x => x.BookId)
.GreaterThan(0) .GreaterThan(0)
.WithMessage("Invalid book id."); .WithMessage("Invalid book id.");
RuleFor(x => x.MemberId) RuleFor(x => x.MemberId)
.GreaterThan(0) .GreaterThan(0)
.WithMessage("Invalid member id."); .WithMessage("Invalid member id.");
RuleFor(x => x.LoanDate) RuleFor(x => x.LoanDate)
.NotEmpty() .NotEmpty()
.WithMessage("Date is required."); .WithMessage("Date is required.");
RuleFor(x => x.DueDate) RuleFor(x => x.DueDate)
.NotEmpty() .NotEmpty()
.WithMessage("Due date is required.") .WithMessage("Due date is required.")
@@ -27,7 +27,7 @@ public class CreateLoanDtoValidator : Validator<CreateLoanDto>
.WithMessage("Due date must be in the future.") .WithMessage("Due date must be in the future.")
.Must((loan, dueDate) => dueDate <= loan.LoanDate.AddDays(30)) .Must((loan, dueDate) => dueDate <= loan.LoanDate.AddDays(30))
.WithMessage("Due date must be in the future."); .WithMessage("Due date must be in the future.");
RuleFor(x => x.DueDate) RuleFor(x => x.DueDate)
.Must((dto, dueDate) => .Must((dto, dueDate) =>
{ {

View File

@@ -11,19 +11,19 @@ public class UpdateLoanDtoValidator : Validator<UpdateLoanDto>
RuleFor(x => x.Id) RuleFor(x => x.Id)
.GreaterThan(0) .GreaterThan(0)
.WithMessage("Id is invalid."); .WithMessage("Id is invalid.");
RuleFor(x => x.BookId) RuleFor(x => x.BookId)
.GreaterThan(0) .GreaterThan(0)
.WithMessage("Invalid book id."); .WithMessage("Invalid book id.");
RuleFor(x => x.MemberId) RuleFor(x => x.MemberId)
.GreaterThan(0) .GreaterThan(0)
.WithMessage("Invalid member id."); .WithMessage("Invalid member id.");
RuleFor(x => x.LoanDate) RuleFor(x => x.LoanDate)
.NotEmpty() .NotEmpty()
.WithMessage("Date is required."); .WithMessage("Date is required.");
RuleFor(x => x.DueDate) RuleFor(x => x.DueDate)
.NotEmpty() .NotEmpty()
.WithMessage("Due date is required.") .WithMessage("Due date is required.")

View File

@@ -15,7 +15,7 @@ public class CreateMemberDtoValidator : Validator<CreateMemberDto>
.WithMessage("Email is invalid.") .WithMessage("Email is invalid.")
.MaximumLength(255) .MaximumLength(255)
.WithMessage("Email cannot be longer than 255 characters."); .WithMessage("Email cannot be longer than 255 characters.");
RuleFor(x => x.FirstName) RuleFor(x => x.FirstName)
.NotEmpty() .NotEmpty()
.WithMessage("First name is required.") .WithMessage("First name is required.")
@@ -23,7 +23,7 @@ public class CreateMemberDtoValidator : Validator<CreateMemberDto>
.WithMessage("First name cannot be longer than 100 characters.") .WithMessage("First name cannot be longer than 100 characters.")
.MinimumLength(2) .MinimumLength(2)
.WithMessage("First name cannot be shorter than 2 characters."); .WithMessage("First name cannot be shorter than 2 characters.");
RuleFor(x => x.LastName) RuleFor(x => x.LastName)
.NotEmpty() .NotEmpty()
.WithMessage("Last name is required.") .WithMessage("Last name is required.")
@@ -31,7 +31,7 @@ public class CreateMemberDtoValidator : Validator<CreateMemberDto>
.WithMessage("Last name cannot be longer than 100 characters.") .WithMessage("Last name cannot be longer than 100 characters.")
.MinimumLength(2) .MinimumLength(2)
.WithMessage("Last name cannot be shorter than 2 characters."); .WithMessage("Last name cannot be shorter than 2 characters.");
RuleFor(x => x.MembershipDate) RuleFor(x => x.MembershipDate)
.NotEmpty() .NotEmpty()
.WithMessage("Membership date is required.") .WithMessage("Membership date is required.")

View File

@@ -11,7 +11,7 @@ public class UpdateMemberDtoValidator : Validator<UpdateMemberDto>
RuleFor(x => x.Id) RuleFor(x => x.Id)
.GreaterThan(0) .GreaterThan(0)
.WithMessage("Id is invalid."); .WithMessage("Id is invalid.");
RuleFor(x => x.Email) RuleFor(x => x.Email)
.NotEmpty() .NotEmpty()
.WithMessage("Email is required.") .WithMessage("Email is required.")
@@ -19,7 +19,7 @@ public class UpdateMemberDtoValidator : Validator<UpdateMemberDto>
.WithMessage("Email is invalid.") .WithMessage("Email is invalid.")
.MaximumLength(255) .MaximumLength(255)
.WithMessage("Email cannot be longer than 255 characters."); .WithMessage("Email cannot be longer than 255 characters.");
RuleFor(x => x.FirstName) RuleFor(x => x.FirstName)
.NotEmpty() .NotEmpty()
.WithMessage("First name is required.") .WithMessage("First name is required.")
@@ -27,7 +27,7 @@ public class UpdateMemberDtoValidator : Validator<UpdateMemberDto>
.WithMessage("First name cannot be longer than 100 characters.") .WithMessage("First name cannot be longer than 100 characters.")
.MinimumLength(2) .MinimumLength(2)
.WithMessage("First name cannot be shorter than 2 characters."); .WithMessage("First name cannot be shorter than 2 characters.");
RuleFor(x => x.LastName) RuleFor(x => x.LastName)
.NotEmpty() .NotEmpty()
.WithMessage("Last name is required.") .WithMessage("Last name is required.")
@@ -35,7 +35,7 @@ public class UpdateMemberDtoValidator : Validator<UpdateMemberDto>
.WithMessage("Last name cannot be longer than 100 characters.") .WithMessage("Last name cannot be longer than 100 characters.")
.MinimumLength(2) .MinimumLength(2)
.WithMessage("Last name cannot be shorter than 2 characters."); .WithMessage("Last name cannot be shorter than 2 characters.");
RuleFor(x => x.MembershipDate) RuleFor(x => x.MembershipDate)
.NotEmpty() .NotEmpty()
.WithMessage("Membership date is required.") .WithMessage("Membership date is required.")

View File

@@ -11,11 +11,11 @@ public class CreateReviewDtoValidator : Validator<CreateReviewDto>
RuleFor(x => x.MemberId) RuleFor(x => x.MemberId)
.GreaterThan(0) .GreaterThan(0)
.WithMessage("Member id is invalid."); .WithMessage("Member id is invalid.");
RuleFor(x => x.BookId) RuleFor(x => x.BookId)
.GreaterThan(0) .GreaterThan(0)
.WithMessage("Book id is invalid."); .WithMessage("Book id is invalid.");
RuleFor(x => x.Rating) RuleFor(x => x.Rating)
.InclusiveBetween(1, 5) .InclusiveBetween(1, 5)
.WithMessage(x => $"La note {x.Rating} est invalide. Elle doit être comprise entre 1 et 5."); .WithMessage(x => $"La note {x.Rating} est invalide. Elle doit être comprise entre 1 et 5.");

View File

@@ -11,15 +11,15 @@ public class UpdateReviewDtoValidator : Validator<UpdateReviewDto>
RuleFor(x => x.Id) RuleFor(x => x.Id)
.GreaterThan(0) .GreaterThan(0)
.WithMessage("Id is invalid."); .WithMessage("Id is invalid.");
RuleFor(x => x.BookId) RuleFor(x => x.BookId)
.GreaterThan(0) .GreaterThan(0)
.WithMessage("Book id is invalid."); .WithMessage("Book id is invalid.");
RuleFor(x => x.MemberId) RuleFor(x => x.MemberId)
.GreaterThan(0) .GreaterThan(0)
.WithMessage("Member id is invalid."); .WithMessage("Member id is invalid.");
RuleFor(x => x.Rating) RuleFor(x => x.Rating)
.InclusiveBetween(1, 5) .InclusiveBetween(1, 5)
.WithMessage(x => $"La note {x.Rating} est invalide. Elle doit être comprise entre 1 et 5."); .WithMessage(x => $"La note {x.Rating} est invalide. Elle doit être comprise entre 1 et 5.");

View File

@@ -1,25 +1,32 @@
{ {
"format": 1, "format": 1,
"restore": { "restore": {
"/home/sanchezvem@stsio.lan/Documents/TP-Fluent/BookHive/BookHive.csproj": {} "C:\\Users\\mathy\\Documents\\TP-Fluent\\BookHive\\BookHive.csproj": {}
}, },
"projects": { "projects": {
"/home/sanchezvem@stsio.lan/Documents/TP-Fluent/BookHive/BookHive.csproj": { "C:\\Users\\mathy\\Documents\\TP-Fluent\\BookHive\\BookHive.csproj": {
"version": "1.0.0", "version": "1.0.0",
"restore": { "restore": {
"projectUniqueName": "/home/sanchezvem@stsio.lan/Documents/TP-Fluent/BookHive/BookHive.csproj", "projectUniqueName": "C:\\Users\\mathy\\Documents\\TP-Fluent\\BookHive\\BookHive.csproj",
"projectName": "BookHive", "projectName": "BookHive",
"projectPath": "/home/sanchezvem@stsio.lan/Documents/TP-Fluent/BookHive/BookHive.csproj", "projectPath": "C:\\Users\\mathy\\Documents\\TP-Fluent\\BookHive\\BookHive.csproj",
"packagesPath": "/home/sanchezvem@stsio.lan/.nuget/packages/", "packagesPath": "C:\\Users\\mathy\\.nuget\\packages\\",
"outputPath": "/home/sanchezvem@stsio.lan/Documents/TP-Fluent/BookHive/obj/", "outputPath": "C:\\Users\\mathy\\Documents\\TP-Fluent\\BookHive\\obj\\",
"projectStyle": "PackageReference", "projectStyle": "PackageReference",
"fallbackFolders": [
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
],
"configFilePaths": [ "configFilePaths": [
"/home/sanchezvem@stsio.lan/.nuget/NuGet/NuGet.Config" "C:\\Users\\mathy\\AppData\\Roaming\\NuGet\\NuGet.Config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
], ],
"originalTargetFrameworks": [ "originalTargetFrameworks": [
"net10.0" "net10.0"
], ],
"sources": { "sources": {
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
"C:\\Program Files\\dotnet\\library-packs": {},
"https://api.nuget.org/v3/index.json": {} "https://api.nuget.org/v3/index.json": {}
}, },
"frameworks": { "frameworks": {
@@ -110,7 +117,7 @@
"privateAssets": "all" "privateAssets": "all"
} }
}, },
"runtimeIdentifierGraphPath": "/home/sanchezvem@stsio.lan/.dotnet/sdk/10.0.103/PortableRuntimeIdentifierGraph.json", "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\10.0.104/PortableRuntimeIdentifierGraph.json",
"packagesToPrune": { "packagesToPrune": {
"Microsoft.AspNetCore": "(,10.0.32767]", "Microsoft.AspNetCore": "(,10.0.32767]",
"Microsoft.AspNetCore.Antiforgery": "(,10.0.32767]", "Microsoft.AspNetCore.Antiforgery": "(,10.0.32767]",

View File

@@ -4,20 +4,21 @@
<RestoreSuccess Condition=" '$(RestoreSuccess)' == '' ">True</RestoreSuccess> <RestoreSuccess Condition=" '$(RestoreSuccess)' == '' ">True</RestoreSuccess>
<RestoreTool Condition=" '$(RestoreTool)' == '' ">NuGet</RestoreTool> <RestoreTool Condition=" '$(RestoreTool)' == '' ">NuGet</RestoreTool>
<ProjectAssetsFile Condition=" '$(ProjectAssetsFile)' == '' ">$(MSBuildThisFileDirectory)project.assets.json</ProjectAssetsFile> <ProjectAssetsFile Condition=" '$(ProjectAssetsFile)' == '' ">$(MSBuildThisFileDirectory)project.assets.json</ProjectAssetsFile>
<NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">/home/sanchezvem@stsio.lan/.nuget/packages/</NuGetPackageRoot> <NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">$(UserProfile)\.nuget\packages\</NuGetPackageRoot>
<NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">/home/sanchezvem@stsio.lan/.nuget/packages/</NuGetPackageFolders> <NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">C:\Users\mathy\.nuget\packages\;C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages</NuGetPackageFolders>
<NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle> <NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle>
<NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">7.0.0</NuGetToolVersion> <NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">7.0.0</NuGetToolVersion>
</PropertyGroup> </PropertyGroup>
<ItemGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' "> <ItemGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<SourceRoot Include="/home/sanchezvem@stsio.lan/.nuget/packages/" /> <SourceRoot Include="C:\Users\mathy\.nuget\packages\" />
<SourceRoot Include="C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages\" />
</ItemGroup> </ItemGroup>
<ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' "> <ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<Import Project="$(NuGetPackageRoot)microsoft.entityframeworkcore/10.0.3/buildTransitive/net10.0/Microsoft.EntityFrameworkCore.props" Condition="Exists('$(NuGetPackageRoot)microsoft.entityframeworkcore/10.0.3/buildTransitive/net10.0/Microsoft.EntityFrameworkCore.props')" /> <Import Project="$(NuGetPackageRoot)microsoft.entityframeworkcore\10.0.3\buildTransitive\net10.0\Microsoft.EntityFrameworkCore.props" Condition="Exists('$(NuGetPackageRoot)microsoft.entityframeworkcore\10.0.3\buildTransitive\net10.0\Microsoft.EntityFrameworkCore.props')" />
<Import Project="$(NuGetPackageRoot)microsoft.codeanalysis.analyzers/3.11.0/buildTransitive/Microsoft.CodeAnalysis.Analyzers.props" Condition="Exists('$(NuGetPackageRoot)microsoft.codeanalysis.analyzers/3.11.0/buildTransitive/Microsoft.CodeAnalysis.Analyzers.props')" /> <Import Project="$(NuGetPackageRoot)microsoft.codeanalysis.analyzers\3.11.0\buildTransitive\Microsoft.CodeAnalysis.Analyzers.props" Condition="Exists('$(NuGetPackageRoot)microsoft.codeanalysis.analyzers\3.11.0\buildTransitive\Microsoft.CodeAnalysis.Analyzers.props')" />
<Import Project="$(NuGetPackageRoot)microsoft.entityframeworkcore.design/10.0.3/build/net10.0/Microsoft.EntityFrameworkCore.Design.props" Condition="Exists('$(NuGetPackageRoot)microsoft.entityframeworkcore.design/10.0.3/build/net10.0/Microsoft.EntityFrameworkCore.Design.props')" /> <Import Project="$(NuGetPackageRoot)microsoft.entityframeworkcore.design\10.0.3\build\net10.0\Microsoft.EntityFrameworkCore.Design.props" Condition="Exists('$(NuGetPackageRoot)microsoft.entityframeworkcore.design\10.0.3\build\net10.0\Microsoft.EntityFrameworkCore.Design.props')" />
</ImportGroup> </ImportGroup>
<PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' "> <PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<PkgMicrosoft_CodeAnalysis_Analyzers Condition=" '$(PkgMicrosoft_CodeAnalysis_Analyzers)' == '' ">/home/sanchezvem@stsio.lan/.nuget/packages/microsoft.codeanalysis.analyzers/3.11.0</PkgMicrosoft_CodeAnalysis_Analyzers> <PkgMicrosoft_CodeAnalysis_Analyzers Condition=" '$(PkgMicrosoft_CodeAnalysis_Analyzers)' == '' ">C:\Users\mathy\.nuget\packages\microsoft.codeanalysis.analyzers\3.11.0</PkgMicrosoft_CodeAnalysis_Analyzers>
</PropertyGroup> </PropertyGroup>
</Project> </Project>

View File

@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?> <?xml version="1.0" encoding="utf-8" standalone="no"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' "> <ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<Import Project="$(NuGetPackageRoot)mono.texttemplating/3.0.0/buildTransitive/Mono.TextTemplating.targets" Condition="Exists('$(NuGetPackageRoot)mono.texttemplating/3.0.0/buildTransitive/Mono.TextTemplating.targets')" /> <Import Project="$(NuGetPackageRoot)mono.texttemplating\3.0.0\buildTransitive\Mono.TextTemplating.targets" Condition="Exists('$(NuGetPackageRoot)mono.texttemplating\3.0.0\buildTransitive\Mono.TextTemplating.targets')" />
<Import Project="$(NuGetPackageRoot)microsoft.codeanalysis.analyzers/3.11.0/buildTransitive/Microsoft.CodeAnalysis.Analyzers.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.codeanalysis.analyzers/3.11.0/buildTransitive/Microsoft.CodeAnalysis.Analyzers.targets')" /> <Import Project="$(NuGetPackageRoot)microsoft.codeanalysis.analyzers\3.11.0\buildTransitive\Microsoft.CodeAnalysis.Analyzers.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.codeanalysis.analyzers\3.11.0\buildTransitive\Microsoft.CodeAnalysis.Analyzers.targets')" />
<Import Project="$(NuGetPackageRoot)microsoft.aspnetcore.openapi/10.0.3/build/Microsoft.AspNetCore.OpenApi.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.aspnetcore.openapi/10.0.3/build/Microsoft.AspNetCore.OpenApi.targets')" /> <Import Project="$(NuGetPackageRoot)microsoft.aspnetcore.openapi\10.0.3\build\Microsoft.AspNetCore.OpenApi.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.aspnetcore.openapi\10.0.3\build\Microsoft.AspNetCore.OpenApi.targets')" />
<Import Project="$(NuGetPackageRoot)fastendpoints.swagger/8.0.1/build/FastEndpoints.Swagger.targets" Condition="Exists('$(NuGetPackageRoot)fastendpoints.swagger/8.0.1/build/FastEndpoints.Swagger.targets')" /> <Import Project="$(NuGetPackageRoot)fastendpoints.swagger\8.0.1\build\FastEndpoints.Swagger.targets" Condition="Exists('$(NuGetPackageRoot)fastendpoints.swagger\8.0.1\build\FastEndpoints.Swagger.targets')" />
</ImportGroup> </ImportGroup>
</Project> </Project>

View File

@@ -13,7 +13,7 @@ using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("BookHive")] [assembly: System.Reflection.AssemblyCompanyAttribute("BookHive")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+5c3419abc08910adfc0bd0df1cef354d82ddee0d")] [assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+15075eb05115197d8976232cc5a0ee79283923cd")]
[assembly: System.Reflection.AssemblyProductAttribute("BookHive")] [assembly: System.Reflection.AssemblyProductAttribute("BookHive")]
[assembly: System.Reflection.AssemblyTitleAttribute("BookHive")] [assembly: System.Reflection.AssemblyTitleAttribute("BookHive")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]

View File

@@ -1 +1 @@
988bc7daa83de020c9e2c465f3bb5ccb6f6a9f622783496806f4024800fd6681 53e6d1c2e799bbd8fdfcffabfb064d1538e080d3694fab08932fa7f514027a3c

View File

@@ -19,13 +19,13 @@ build_property.TargetFrameworkIdentifier = .NETCoreApp
build_property.TargetFrameworkVersion = v10.0 build_property.TargetFrameworkVersion = v10.0
build_property.RootNamespace = BookHive build_property.RootNamespace = BookHive
build_property.RootNamespace = BookHive build_property.RootNamespace = BookHive
build_property.ProjectDir = /home/sanchezvem@stsio.lan/Documents/TP-Fluent/BookHive/ build_property.ProjectDir = C:\Users\mathy\Documents\TP-Fluent\BookHive\
build_property.EnableComHosting = build_property.EnableComHosting =
build_property.EnableGeneratedComInterfaceComImportInterop = build_property.EnableGeneratedComInterfaceComImportInterop =
build_property.RazorLangVersion = 9.0 build_property.RazorLangVersion = 9.0
build_property.SupportLocalizedComponentNames = build_property.SupportLocalizedComponentNames =
build_property.GenerateRazorMetadataSourceChecksumAttributes = build_property.GenerateRazorMetadataSourceChecksumAttributes =
build_property.MSBuildProjectDirectory = /home/sanchezvem@stsio.lan/Documents/TP-Fluent/BookHive build_property.MSBuildProjectDirectory = C:\Users\mathy\Documents\TP-Fluent\BookHive
build_property._RazorSourceGeneratorDebug = build_property._RazorSourceGeneratorDebug =
build_property.EffectiveAnalysisLevelStyle = 10.0 build_property.EffectiveAnalysisLevelStyle = 10.0
build_property.EnableCodeStyleSeverity = build_property.EnableCodeStyleSeverity =

View File

@@ -4160,24 +4160,32 @@
] ]
}, },
"packageFolders": { "packageFolders": {
"/home/sanchezvem@stsio.lan/.nuget/packages/": {} "C:\\Users\\mathy\\.nuget\\packages\\": {},
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages": {}
}, },
"project": { "project": {
"version": "1.0.0", "version": "1.0.0",
"restore": { "restore": {
"projectUniqueName": "/home/sanchezvem@stsio.lan/Documents/TP-Fluent/BookHive/BookHive.csproj", "projectUniqueName": "C:\\Users\\mathy\\Documents\\TP-Fluent\\BookHive\\BookHive.csproj",
"projectName": "BookHive", "projectName": "BookHive",
"projectPath": "/home/sanchezvem@stsio.lan/Documents/TP-Fluent/BookHive/BookHive.csproj", "projectPath": "C:\\Users\\mathy\\Documents\\TP-Fluent\\BookHive\\BookHive.csproj",
"packagesPath": "/home/sanchezvem@stsio.lan/.nuget/packages/", "packagesPath": "C:\\Users\\mathy\\.nuget\\packages\\",
"outputPath": "/home/sanchezvem@stsio.lan/Documents/TP-Fluent/BookHive/obj/", "outputPath": "C:\\Users\\mathy\\Documents\\TP-Fluent\\BookHive\\obj\\",
"projectStyle": "PackageReference", "projectStyle": "PackageReference",
"fallbackFolders": [
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
],
"configFilePaths": [ "configFilePaths": [
"/home/sanchezvem@stsio.lan/.nuget/NuGet/NuGet.Config" "C:\\Users\\mathy\\AppData\\Roaming\\NuGet\\NuGet.Config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
], ],
"originalTargetFrameworks": [ "originalTargetFrameworks": [
"net10.0" "net10.0"
], ],
"sources": { "sources": {
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
"C:\\Program Files\\dotnet\\library-packs": {},
"https://api.nuget.org/v3/index.json": {} "https://api.nuget.org/v3/index.json": {}
}, },
"frameworks": { "frameworks": {
@@ -4268,7 +4276,7 @@
"privateAssets": "all" "privateAssets": "all"
} }
}, },
"runtimeIdentifierGraphPath": "/home/sanchezvem@stsio.lan/.dotnet/sdk/10.0.103/PortableRuntimeIdentifierGraph.json", "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\10.0.104/PortableRuntimeIdentifierGraph.json",
"packagesToPrune": { "packagesToPrune": {
"Microsoft.AspNetCore": "(,10.0.32767]", "Microsoft.AspNetCore": "(,10.0.32767]",
"Microsoft.AspNetCore.Antiforgery": "(,10.0.32767]", "Microsoft.AspNetCore.Antiforgery": "(,10.0.32767]",
@@ -4685,5 +4693,17 @@
} }
} }
} }
} },
"logs": [
{
"code": "NU1903",
"level": "Warning",
"warningLevel": 1,
"message": "Package 'AutoMapper' 16.1.0 has a known high severity vulnerability, https://github.com/advisories/GHSA-rvv3-g6hj-g44x",
"libraryId": "AutoMapper",
"targetGraphs": [
"net10.0"
]
}
]
} }

View File

@@ -1,86 +1,99 @@
{ {
"version": 2, "version": 2,
"dgSpecHash": "DtuZFm4FaIQ=", "dgSpecHash": "BTTaBsoQirc=",
"success": true, "success": true,
"projectFilePath": "/home/sanchezvem@stsio.lan/Documents/TP-Fluent/BookHive/BookHive.csproj", "projectFilePath": "C:\\Users\\mathy\\Documents\\TP-Fluent\\BookHive\\BookHive.csproj",
"expectedPackageFiles": [ "expectedPackageFiles": [
"/home/sanchezvem@stsio.lan/.nuget/packages/ardalis.specification/9.3.1/ardalis.specification.9.3.1.nupkg.sha512", "C:\\Users\\mathy\\.nuget\\packages\\ardalis.specification\\9.3.1\\ardalis.specification.9.3.1.nupkg.sha512",
"/home/sanchezvem@stsio.lan/.nuget/packages/ardalis.specification.entityframeworkcore/9.3.1/ardalis.specification.entityframeworkcore.9.3.1.nupkg.sha512", "C:\\Users\\mathy\\.nuget\\packages\\ardalis.specification.entityframeworkcore\\9.3.1\\ardalis.specification.entityframeworkcore.9.3.1.nupkg.sha512",
"/home/sanchezvem@stsio.lan/.nuget/packages/automapper/16.1.0/automapper.16.1.0.nupkg.sha512", "C:\\Users\\mathy\\.nuget\\packages\\automapper\\16.1.0\\automapper.16.1.0.nupkg.sha512",
"/home/sanchezvem@stsio.lan/.nuget/packages/automapper.collection/13.0.0/automapper.collection.13.0.0.nupkg.sha512", "C:\\Users\\mathy\\.nuget\\packages\\automapper.collection\\13.0.0\\automapper.collection.13.0.0.nupkg.sha512",
"/home/sanchezvem@stsio.lan/.nuget/packages/azure.core/1.47.1/azure.core.1.47.1.nupkg.sha512", "C:\\Users\\mathy\\.nuget\\packages\\azure.core\\1.47.1\\azure.core.1.47.1.nupkg.sha512",
"/home/sanchezvem@stsio.lan/.nuget/packages/azure.identity/1.14.2/azure.identity.1.14.2.nupkg.sha512", "C:\\Users\\mathy\\.nuget\\packages\\azure.identity\\1.14.2\\azure.identity.1.14.2.nupkg.sha512",
"/home/sanchezvem@stsio.lan/.nuget/packages/fastendpoints/8.0.1/fastendpoints.8.0.1.nupkg.sha512", "C:\\Users\\mathy\\.nuget\\packages\\fastendpoints\\8.0.1\\fastendpoints.8.0.1.nupkg.sha512",
"/home/sanchezvem@stsio.lan/.nuget/packages/fastendpoints.attributes/8.0.1/fastendpoints.attributes.8.0.1.nupkg.sha512", "C:\\Users\\mathy\\.nuget\\packages\\fastendpoints.attributes\\8.0.1\\fastendpoints.attributes.8.0.1.nupkg.sha512",
"/home/sanchezvem@stsio.lan/.nuget/packages/fastendpoints.core/8.0.1/fastendpoints.core.8.0.1.nupkg.sha512", "C:\\Users\\mathy\\.nuget\\packages\\fastendpoints.core\\8.0.1\\fastendpoints.core.8.0.1.nupkg.sha512",
"/home/sanchezvem@stsio.lan/.nuget/packages/fastendpoints.jobqueues/8.0.1/fastendpoints.jobqueues.8.0.1.nupkg.sha512", "C:\\Users\\mathy\\.nuget\\packages\\fastendpoints.jobqueues\\8.0.1\\fastendpoints.jobqueues.8.0.1.nupkg.sha512",
"/home/sanchezvem@stsio.lan/.nuget/packages/fastendpoints.messaging/8.0.1/fastendpoints.messaging.8.0.1.nupkg.sha512", "C:\\Users\\mathy\\.nuget\\packages\\fastendpoints.messaging\\8.0.1\\fastendpoints.messaging.8.0.1.nupkg.sha512",
"/home/sanchezvem@stsio.lan/.nuget/packages/fastendpoints.messaging.core/8.0.1/fastendpoints.messaging.core.8.0.1.nupkg.sha512", "C:\\Users\\mathy\\.nuget\\packages\\fastendpoints.messaging.core\\8.0.1\\fastendpoints.messaging.core.8.0.1.nupkg.sha512",
"/home/sanchezvem@stsio.lan/.nuget/packages/fastendpoints.security/8.0.1/fastendpoints.security.8.0.1.nupkg.sha512", "C:\\Users\\mathy\\.nuget\\packages\\fastendpoints.security\\8.0.1\\fastendpoints.security.8.0.1.nupkg.sha512",
"/home/sanchezvem@stsio.lan/.nuget/packages/fastendpoints.swagger/8.0.1/fastendpoints.swagger.8.0.1.nupkg.sha512", "C:\\Users\\mathy\\.nuget\\packages\\fastendpoints.swagger\\8.0.1\\fastendpoints.swagger.8.0.1.nupkg.sha512",
"/home/sanchezvem@stsio.lan/.nuget/packages/fluentvalidation/12.1.1/fluentvalidation.12.1.1.nupkg.sha512", "C:\\Users\\mathy\\.nuget\\packages\\fluentvalidation\\12.1.1\\fluentvalidation.12.1.1.nupkg.sha512",
"/home/sanchezvem@stsio.lan/.nuget/packages/humanizer.core/2.14.1/humanizer.core.2.14.1.nupkg.sha512", "C:\\Users\\mathy\\.nuget\\packages\\humanizer.core\\2.14.1\\humanizer.core.2.14.1.nupkg.sha512",
"/home/sanchezvem@stsio.lan/.nuget/packages/microsoft.aspnetcore.authentication.jwtbearer/10.0.3/microsoft.aspnetcore.authentication.jwtbearer.10.0.3.nupkg.sha512", "C:\\Users\\mathy\\.nuget\\packages\\microsoft.aspnetcore.authentication.jwtbearer\\10.0.3\\microsoft.aspnetcore.authentication.jwtbearer.10.0.3.nupkg.sha512",
"/home/sanchezvem@stsio.lan/.nuget/packages/microsoft.aspnetcore.openapi/10.0.3/microsoft.aspnetcore.openapi.10.0.3.nupkg.sha512", "C:\\Users\\mathy\\.nuget\\packages\\microsoft.aspnetcore.openapi\\10.0.3\\microsoft.aspnetcore.openapi.10.0.3.nupkg.sha512",
"/home/sanchezvem@stsio.lan/.nuget/packages/microsoft.bcl.asyncinterfaces/8.0.0/microsoft.bcl.asyncinterfaces.8.0.0.nupkg.sha512", "C:\\Users\\mathy\\.nuget\\packages\\microsoft.bcl.asyncinterfaces\\8.0.0\\microsoft.bcl.asyncinterfaces.8.0.0.nupkg.sha512",
"/home/sanchezvem@stsio.lan/.nuget/packages/microsoft.bcl.cryptography/9.0.4/microsoft.bcl.cryptography.9.0.4.nupkg.sha512", "C:\\Users\\mathy\\.nuget\\packages\\microsoft.bcl.cryptography\\9.0.4\\microsoft.bcl.cryptography.9.0.4.nupkg.sha512",
"/home/sanchezvem@stsio.lan/.nuget/packages/microsoft.build.framework/18.0.2/microsoft.build.framework.18.0.2.nupkg.sha512", "C:\\Users\\mathy\\.nuget\\packages\\microsoft.build.framework\\18.0.2\\microsoft.build.framework.18.0.2.nupkg.sha512",
"/home/sanchezvem@stsio.lan/.nuget/packages/microsoft.codeanalysis.analyzers/3.11.0/microsoft.codeanalysis.analyzers.3.11.0.nupkg.sha512", "C:\\Users\\mathy\\.nuget\\packages\\microsoft.codeanalysis.analyzers\\3.11.0\\microsoft.codeanalysis.analyzers.3.11.0.nupkg.sha512",
"/home/sanchezvem@stsio.lan/.nuget/packages/microsoft.codeanalysis.common/5.0.0/microsoft.codeanalysis.common.5.0.0.nupkg.sha512", "C:\\Users\\mathy\\.nuget\\packages\\microsoft.codeanalysis.common\\5.0.0\\microsoft.codeanalysis.common.5.0.0.nupkg.sha512",
"/home/sanchezvem@stsio.lan/.nuget/packages/microsoft.codeanalysis.csharp/5.0.0/microsoft.codeanalysis.csharp.5.0.0.nupkg.sha512", "C:\\Users\\mathy\\.nuget\\packages\\microsoft.codeanalysis.csharp\\5.0.0\\microsoft.codeanalysis.csharp.5.0.0.nupkg.sha512",
"/home/sanchezvem@stsio.lan/.nuget/packages/microsoft.codeanalysis.csharp.workspaces/5.0.0/microsoft.codeanalysis.csharp.workspaces.5.0.0.nupkg.sha512", "C:\\Users\\mathy\\.nuget\\packages\\microsoft.codeanalysis.csharp.workspaces\\5.0.0\\microsoft.codeanalysis.csharp.workspaces.5.0.0.nupkg.sha512",
"/home/sanchezvem@stsio.lan/.nuget/packages/microsoft.codeanalysis.workspaces.common/5.0.0/microsoft.codeanalysis.workspaces.common.5.0.0.nupkg.sha512", "C:\\Users\\mathy\\.nuget\\packages\\microsoft.codeanalysis.workspaces.common\\5.0.0\\microsoft.codeanalysis.workspaces.common.5.0.0.nupkg.sha512",
"/home/sanchezvem@stsio.lan/.nuget/packages/microsoft.codeanalysis.workspaces.msbuild/5.0.0/microsoft.codeanalysis.workspaces.msbuild.5.0.0.nupkg.sha512", "C:\\Users\\mathy\\.nuget\\packages\\microsoft.codeanalysis.workspaces.msbuild\\5.0.0\\microsoft.codeanalysis.workspaces.msbuild.5.0.0.nupkg.sha512",
"/home/sanchezvem@stsio.lan/.nuget/packages/microsoft.data.sqlclient/6.1.1/microsoft.data.sqlclient.6.1.1.nupkg.sha512", "C:\\Users\\mathy\\.nuget\\packages\\microsoft.data.sqlclient\\6.1.1\\microsoft.data.sqlclient.6.1.1.nupkg.sha512",
"/home/sanchezvem@stsio.lan/.nuget/packages/microsoft.data.sqlclient.sni.runtime/6.0.2/microsoft.data.sqlclient.sni.runtime.6.0.2.nupkg.sha512", "C:\\Users\\mathy\\.nuget\\packages\\microsoft.data.sqlclient.sni.runtime\\6.0.2\\microsoft.data.sqlclient.sni.runtime.6.0.2.nupkg.sha512",
"/home/sanchezvem@stsio.lan/.nuget/packages/microsoft.entityframeworkcore/10.0.3/microsoft.entityframeworkcore.10.0.3.nupkg.sha512", "C:\\Users\\mathy\\.nuget\\packages\\microsoft.entityframeworkcore\\10.0.3\\microsoft.entityframeworkcore.10.0.3.nupkg.sha512",
"/home/sanchezvem@stsio.lan/.nuget/packages/microsoft.entityframeworkcore.abstractions/10.0.3/microsoft.entityframeworkcore.abstractions.10.0.3.nupkg.sha512", "C:\\Users\\mathy\\.nuget\\packages\\microsoft.entityframeworkcore.abstractions\\10.0.3\\microsoft.entityframeworkcore.abstractions.10.0.3.nupkg.sha512",
"/home/sanchezvem@stsio.lan/.nuget/packages/microsoft.entityframeworkcore.analyzers/10.0.3/microsoft.entityframeworkcore.analyzers.10.0.3.nupkg.sha512", "C:\\Users\\mathy\\.nuget\\packages\\microsoft.entityframeworkcore.analyzers\\10.0.3\\microsoft.entityframeworkcore.analyzers.10.0.3.nupkg.sha512",
"/home/sanchezvem@stsio.lan/.nuget/packages/microsoft.entityframeworkcore.design/10.0.3/microsoft.entityframeworkcore.design.10.0.3.nupkg.sha512", "C:\\Users\\mathy\\.nuget\\packages\\microsoft.entityframeworkcore.design\\10.0.3\\microsoft.entityframeworkcore.design.10.0.3.nupkg.sha512",
"/home/sanchezvem@stsio.lan/.nuget/packages/microsoft.entityframeworkcore.relational/10.0.3/microsoft.entityframeworkcore.relational.10.0.3.nupkg.sha512", "C:\\Users\\mathy\\.nuget\\packages\\microsoft.entityframeworkcore.relational\\10.0.3\\microsoft.entityframeworkcore.relational.10.0.3.nupkg.sha512",
"/home/sanchezvem@stsio.lan/.nuget/packages/microsoft.entityframeworkcore.sqlserver/10.0.3/microsoft.entityframeworkcore.sqlserver.10.0.3.nupkg.sha512", "C:\\Users\\mathy\\.nuget\\packages\\microsoft.entityframeworkcore.sqlserver\\10.0.3\\microsoft.entityframeworkcore.sqlserver.10.0.3.nupkg.sha512",
"/home/sanchezvem@stsio.lan/.nuget/packages/microsoft.extensions.dependencymodel/10.0.3/microsoft.extensions.dependencymodel.10.0.3.nupkg.sha512", "C:\\Users\\mathy\\.nuget\\packages\\microsoft.extensions.dependencymodel\\10.0.3\\microsoft.extensions.dependencymodel.10.0.3.nupkg.sha512",
"/home/sanchezvem@stsio.lan/.nuget/packages/microsoft.identity.client/4.73.1/microsoft.identity.client.4.73.1.nupkg.sha512", "C:\\Users\\mathy\\.nuget\\packages\\microsoft.identity.client\\4.73.1\\microsoft.identity.client.4.73.1.nupkg.sha512",
"/home/sanchezvem@stsio.lan/.nuget/packages/microsoft.identity.client.extensions.msal/4.73.1/microsoft.identity.client.extensions.msal.4.73.1.nupkg.sha512", "C:\\Users\\mathy\\.nuget\\packages\\microsoft.identity.client.extensions.msal\\4.73.1\\microsoft.identity.client.extensions.msal.4.73.1.nupkg.sha512",
"/home/sanchezvem@stsio.lan/.nuget/packages/microsoft.identitymodel.abstractions/8.14.0/microsoft.identitymodel.abstractions.8.14.0.nupkg.sha512", "C:\\Users\\mathy\\.nuget\\packages\\microsoft.identitymodel.abstractions\\8.14.0\\microsoft.identitymodel.abstractions.8.14.0.nupkg.sha512",
"/home/sanchezvem@stsio.lan/.nuget/packages/microsoft.identitymodel.jsonwebtokens/8.14.0/microsoft.identitymodel.jsonwebtokens.8.14.0.nupkg.sha512", "C:\\Users\\mathy\\.nuget\\packages\\microsoft.identitymodel.jsonwebtokens\\8.14.0\\microsoft.identitymodel.jsonwebtokens.8.14.0.nupkg.sha512",
"/home/sanchezvem@stsio.lan/.nuget/packages/microsoft.identitymodel.logging/8.14.0/microsoft.identitymodel.logging.8.14.0.nupkg.sha512", "C:\\Users\\mathy\\.nuget\\packages\\microsoft.identitymodel.logging\\8.14.0\\microsoft.identitymodel.logging.8.14.0.nupkg.sha512",
"/home/sanchezvem@stsio.lan/.nuget/packages/microsoft.identitymodel.protocols/8.0.1/microsoft.identitymodel.protocols.8.0.1.nupkg.sha512", "C:\\Users\\mathy\\.nuget\\packages\\microsoft.identitymodel.protocols\\8.0.1\\microsoft.identitymodel.protocols.8.0.1.nupkg.sha512",
"/home/sanchezvem@stsio.lan/.nuget/packages/microsoft.identitymodel.protocols.openidconnect/8.0.1/microsoft.identitymodel.protocols.openidconnect.8.0.1.nupkg.sha512", "C:\\Users\\mathy\\.nuget\\packages\\microsoft.identitymodel.protocols.openidconnect\\8.0.1\\microsoft.identitymodel.protocols.openidconnect.8.0.1.nupkg.sha512",
"/home/sanchezvem@stsio.lan/.nuget/packages/microsoft.identitymodel.tokens/8.14.0/microsoft.identitymodel.tokens.8.14.0.nupkg.sha512", "C:\\Users\\mathy\\.nuget\\packages\\microsoft.identitymodel.tokens\\8.14.0\\microsoft.identitymodel.tokens.8.14.0.nupkg.sha512",
"/home/sanchezvem@stsio.lan/.nuget/packages/microsoft.openapi/2.0.0/microsoft.openapi.2.0.0.nupkg.sha512", "C:\\Users\\mathy\\.nuget\\packages\\microsoft.openapi\\2.0.0\\microsoft.openapi.2.0.0.nupkg.sha512",
"/home/sanchezvem@stsio.lan/.nuget/packages/microsoft.sqlserver.server/1.0.0/microsoft.sqlserver.server.1.0.0.nupkg.sha512", "C:\\Users\\mathy\\.nuget\\packages\\microsoft.sqlserver.server\\1.0.0\\microsoft.sqlserver.server.1.0.0.nupkg.sha512",
"/home/sanchezvem@stsio.lan/.nuget/packages/microsoft.visualstudio.solutionpersistence/1.0.52/microsoft.visualstudio.solutionpersistence.1.0.52.nupkg.sha512", "C:\\Users\\mathy\\.nuget\\packages\\microsoft.visualstudio.solutionpersistence\\1.0.52\\microsoft.visualstudio.solutionpersistence.1.0.52.nupkg.sha512",
"/home/sanchezvem@stsio.lan/.nuget/packages/mono.texttemplating/3.0.0/mono.texttemplating.3.0.0.nupkg.sha512", "C:\\Users\\mathy\\.nuget\\packages\\mono.texttemplating\\3.0.0\\mono.texttemplating.3.0.0.nupkg.sha512",
"/home/sanchezvem@stsio.lan/.nuget/packages/namotion.reflection/3.4.3/namotion.reflection.3.4.3.nupkg.sha512", "C:\\Users\\mathy\\.nuget\\packages\\namotion.reflection\\3.4.3\\namotion.reflection.3.4.3.nupkg.sha512",
"/home/sanchezvem@stsio.lan/.nuget/packages/newtonsoft.json/13.0.3/newtonsoft.json.13.0.3.nupkg.sha512", "C:\\Users\\mathy\\.nuget\\packages\\newtonsoft.json\\13.0.3\\newtonsoft.json.13.0.3.nupkg.sha512",
"/home/sanchezvem@stsio.lan/.nuget/packages/njsonschema/11.5.2/njsonschema.11.5.2.nupkg.sha512", "C:\\Users\\mathy\\.nuget\\packages\\njsonschema\\11.5.2\\njsonschema.11.5.2.nupkg.sha512",
"/home/sanchezvem@stsio.lan/.nuget/packages/njsonschema.annotations/11.5.2/njsonschema.annotations.11.5.2.nupkg.sha512", "C:\\Users\\mathy\\.nuget\\packages\\njsonschema.annotations\\11.5.2\\njsonschema.annotations.11.5.2.nupkg.sha512",
"/home/sanchezvem@stsio.lan/.nuget/packages/njsonschema.newtonsoftjson/11.5.2/njsonschema.newtonsoftjson.11.5.2.nupkg.sha512", "C:\\Users\\mathy\\.nuget\\packages\\njsonschema.newtonsoftjson\\11.5.2\\njsonschema.newtonsoftjson.11.5.2.nupkg.sha512",
"/home/sanchezvem@stsio.lan/.nuget/packages/njsonschema.yaml/11.5.2/njsonschema.yaml.11.5.2.nupkg.sha512", "C:\\Users\\mathy\\.nuget\\packages\\njsonschema.yaml\\11.5.2\\njsonschema.yaml.11.5.2.nupkg.sha512",
"/home/sanchezvem@stsio.lan/.nuget/packages/nswag.annotations/14.6.3/nswag.annotations.14.6.3.nupkg.sha512", "C:\\Users\\mathy\\.nuget\\packages\\nswag.annotations\\14.6.3\\nswag.annotations.14.6.3.nupkg.sha512",
"/home/sanchezvem@stsio.lan/.nuget/packages/nswag.aspnetcore/14.6.3/nswag.aspnetcore.14.6.3.nupkg.sha512", "C:\\Users\\mathy\\.nuget\\packages\\nswag.aspnetcore\\14.6.3\\nswag.aspnetcore.14.6.3.nupkg.sha512",
"/home/sanchezvem@stsio.lan/.nuget/packages/nswag.core/14.6.3/nswag.core.14.6.3.nupkg.sha512", "C:\\Users\\mathy\\.nuget\\packages\\nswag.core\\14.6.3\\nswag.core.14.6.3.nupkg.sha512",
"/home/sanchezvem@stsio.lan/.nuget/packages/nswag.core.yaml/14.6.3/nswag.core.yaml.14.6.3.nupkg.sha512", "C:\\Users\\mathy\\.nuget\\packages\\nswag.core.yaml\\14.6.3\\nswag.core.yaml.14.6.3.nupkg.sha512",
"/home/sanchezvem@stsio.lan/.nuget/packages/nswag.generation/14.6.3/nswag.generation.14.6.3.nupkg.sha512", "C:\\Users\\mathy\\.nuget\\packages\\nswag.generation\\14.6.3\\nswag.generation.14.6.3.nupkg.sha512",
"/home/sanchezvem@stsio.lan/.nuget/packages/nswag.generation.aspnetcore/14.6.3/nswag.generation.aspnetcore.14.6.3.nupkg.sha512", "C:\\Users\\mathy\\.nuget\\packages\\nswag.generation.aspnetcore\\14.6.3\\nswag.generation.aspnetcore.14.6.3.nupkg.sha512",
"/home/sanchezvem@stsio.lan/.nuget/packages/plainquire.filter.abstractions/7.1.0/plainquire.filter.abstractions.7.1.0.nupkg.sha512", "C:\\Users\\mathy\\.nuget\\packages\\plainquire.filter.abstractions\\7.1.0\\plainquire.filter.abstractions.7.1.0.nupkg.sha512",
"/home/sanchezvem@stsio.lan/.nuget/packages/plainquire.page/7.1.0/plainquire.page.7.1.0.nupkg.sha512", "C:\\Users\\mathy\\.nuget\\packages\\plainquire.page\\7.1.0\\plainquire.page.7.1.0.nupkg.sha512",
"/home/sanchezvem@stsio.lan/.nuget/packages/plainquire.page.abstractions/7.1.0/plainquire.page.abstractions.7.1.0.nupkg.sha512", "C:\\Users\\mathy\\.nuget\\packages\\plainquire.page.abstractions\\7.1.0\\plainquire.page.abstractions.7.1.0.nupkg.sha512",
"/home/sanchezvem@stsio.lan/.nuget/packages/system.clientmodel/1.5.1/system.clientmodel.1.5.1.nupkg.sha512", "C:\\Users\\mathy\\.nuget\\packages\\system.clientmodel\\1.5.1\\system.clientmodel.1.5.1.nupkg.sha512",
"/home/sanchezvem@stsio.lan/.nuget/packages/system.codedom/6.0.0/system.codedom.6.0.0.nupkg.sha512", "C:\\Users\\mathy\\.nuget\\packages\\system.codedom\\6.0.0\\system.codedom.6.0.0.nupkg.sha512",
"/home/sanchezvem@stsio.lan/.nuget/packages/system.composition/9.0.0/system.composition.9.0.0.nupkg.sha512", "C:\\Users\\mathy\\.nuget\\packages\\system.composition\\9.0.0\\system.composition.9.0.0.nupkg.sha512",
"/home/sanchezvem@stsio.lan/.nuget/packages/system.composition.attributedmodel/9.0.0/system.composition.attributedmodel.9.0.0.nupkg.sha512", "C:\\Users\\mathy\\.nuget\\packages\\system.composition.attributedmodel\\9.0.0\\system.composition.attributedmodel.9.0.0.nupkg.sha512",
"/home/sanchezvem@stsio.lan/.nuget/packages/system.composition.convention/9.0.0/system.composition.convention.9.0.0.nupkg.sha512", "C:\\Users\\mathy\\.nuget\\packages\\system.composition.convention\\9.0.0\\system.composition.convention.9.0.0.nupkg.sha512",
"/home/sanchezvem@stsio.lan/.nuget/packages/system.composition.hosting/9.0.0/system.composition.hosting.9.0.0.nupkg.sha512", "C:\\Users\\mathy\\.nuget\\packages\\system.composition.hosting\\9.0.0\\system.composition.hosting.9.0.0.nupkg.sha512",
"/home/sanchezvem@stsio.lan/.nuget/packages/system.composition.runtime/9.0.0/system.composition.runtime.9.0.0.nupkg.sha512", "C:\\Users\\mathy\\.nuget\\packages\\system.composition.runtime\\9.0.0\\system.composition.runtime.9.0.0.nupkg.sha512",
"/home/sanchezvem@stsio.lan/.nuget/packages/system.composition.typedparts/9.0.0/system.composition.typedparts.9.0.0.nupkg.sha512", "C:\\Users\\mathy\\.nuget\\packages\\system.composition.typedparts\\9.0.0\\system.composition.typedparts.9.0.0.nupkg.sha512",
"/home/sanchezvem@stsio.lan/.nuget/packages/system.configuration.configurationmanager/9.0.4/system.configuration.configurationmanager.9.0.4.nupkg.sha512", "C:\\Users\\mathy\\.nuget\\packages\\system.configuration.configurationmanager\\9.0.4\\system.configuration.configurationmanager.9.0.4.nupkg.sha512",
"/home/sanchezvem@stsio.lan/.nuget/packages/system.identitymodel.tokens.jwt/8.0.1/system.identitymodel.tokens.jwt.8.0.1.nupkg.sha512", "C:\\Users\\mathy\\.nuget\\packages\\system.identitymodel.tokens.jwt\\8.0.1\\system.identitymodel.tokens.jwt.8.0.1.nupkg.sha512",
"/home/sanchezvem@stsio.lan/.nuget/packages/system.memory.data/8.0.1/system.memory.data.8.0.1.nupkg.sha512", "C:\\Users\\mathy\\.nuget\\packages\\system.memory.data\\8.0.1\\system.memory.data.8.0.1.nupkg.sha512",
"/home/sanchezvem@stsio.lan/.nuget/packages/system.security.cryptography.pkcs/9.0.4/system.security.cryptography.pkcs.9.0.4.nupkg.sha512", "C:\\Users\\mathy\\.nuget\\packages\\system.security.cryptography.pkcs\\9.0.4\\system.security.cryptography.pkcs.9.0.4.nupkg.sha512",
"/home/sanchezvem@stsio.lan/.nuget/packages/system.security.cryptography.protecteddata/9.0.4/system.security.cryptography.protecteddata.9.0.4.nupkg.sha512", "C:\\Users\\mathy\\.nuget\\packages\\system.security.cryptography.protecteddata\\9.0.4\\system.security.cryptography.protecteddata.9.0.4.nupkg.sha512",
"/home/sanchezvem@stsio.lan/.nuget/packages/yamldotnet/16.3.0/yamldotnet.16.3.0.nupkg.sha512" "C:\\Users\\mathy\\.nuget\\packages\\yamldotnet\\16.3.0\\yamldotnet.16.3.0.nupkg.sha512"
], ],
"logs": [] "logs": [
{
"code": "NU1903",
"level": "Warning",
"message": "Package 'AutoMapper' 16.1.0 has a known high severity vulnerability, https://github.com/advisories/GHSA-rvv3-g6hj-g44x",
"projectPath": "C:\\Users\\mathy\\Documents\\TP-Fluent\\BookHive\\BookHive.csproj",
"warningLevel": 1,
"filePath": "C:\\Users\\mathy\\Documents\\TP-Fluent\\BookHive\\BookHive.csproj",
"libraryId": "AutoMapper",
"targetGraphs": [
"net10.0"
]
}
]
} }

File diff suppressed because one or more lines are too long

View File

@@ -1 +1 @@
17731278780532027 17737391282703073

View File

@@ -1 +1 @@
17731341506250102 17737391970362761