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

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -3,10 +3,10 @@ namespace BookHive.DTO.Review;
public class UpdateReviewDto
{
public int Id { get; set; }
public int BookId { get; set; }
public int MemberId { get; set; }
public int Rating { 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 });
AllowAnonymous();
}
public override async Task HandleAsync(DeleteAuthorRequest req, CancellationToken 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)
{
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;
}
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/");
AllowAnonymous();
}
public override async Task HandleAsync(CancellationToken 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);
return;
}
mapper.Map(req, author);
await authorRepository.SaveChangesAsync(ct);
await Send.NoContentAsync(ct);

View File

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

View File

@@ -11,7 +11,7 @@ public class GetBooksEndpoint(BookRepository bookRepository) : EndpointWithoutRe
Get("/books/");
AllowAnonymous();
}
public override async Task HandleAsync(CancellationToken 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);
return;
}
mapper.Map(req, book);
await bookRepository.SaveChangesAsync(ct);
await Send.NoContentAsync(ct);

View File

@@ -8,7 +8,8 @@ using FastEndpoints;
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()
{
@@ -24,7 +25,7 @@ public class CreateLoanEndpoint(LoanRepository loanRepository, BookRepository bo
await Send.NotFoundAsync(ct);
return;
}
Member? member = await memberRepository.SingleOrDefaultAsync(new GetMemberByIdSpec(req.MemberId), ct);
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);
return;
}
Loan? loan = await loanRepository.FirstOrDefaultAsync(new GetAvailableBookByIdSpec(req.BookId), ct);
if (loan is not null)
{

View File

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

View File

@@ -11,7 +11,7 @@ public class GetMembersEndpoint(MemberRepository memberRepository) : EndpointWit
Get("/members/");
AllowAnonymous();
}
public override async Task HandleAsync(CancellationToken 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);
return;
}
mapper.Map(req, member);
await memberRepository.SaveChangesAsync(ct);
await Send.NoContentAsync(ct);

View File

@@ -9,9 +9,9 @@ using FastEndpoints;
namespace BookHive.Endpoints.Reviews;
public class CreateReviewEndpoint(
ReviewRepository reviewRepository,
MemberRepository memberRepository,
BookRepository bookRepository,
ReviewRepository reviewRepository,
MemberRepository memberRepository,
BookRepository bookRepository,
AutoMapper.IMapper mapper)
: Endpoint<CreateReviewDto>
{
@@ -29,14 +29,14 @@ public class CreateReviewEndpoint(
await Send.NotFoundAsync(ct);
return;
}
Member? member = await memberRepository.SingleOrDefaultAsync(new GetMemberByIdSpec(req.MemberId), ct);
if (member is null)
{
await Send.NotFoundAsync(ct);
return;
}
if (!member.IsActive)
{
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);
return;
}
await reviewRepository.AddAsync(mapper.Map<Review>(req), ct);
await Send.NoContentAsync(ct);
}

View File

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

View File

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

View File

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

View File

@@ -4,12 +4,12 @@ namespace BookHive.Models;
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? LastName { get; set; }
[MaxLength(2000)] public string? Biography { get; set; }
[Required] public DateOnly BirthDate { get; set; }
[Required, MaxLength(60)] public string? Nationality { get; set; }
public List<Book>? Books { get; set; }
}

View File

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

View File

@@ -5,13 +5,13 @@ namespace BookHive.Models;
public class Loan
{
[Key] public int Id { get; set; }
public Book? Book { get; set; }
[Required] public int BookId { get; set; }
public Member? Member { get; set; }
[Required] public int MemberId { get; set; }
[Required] public DateOnly LoanDate { get; set; }
[Required] public DateOnly DueDate { 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? LastName { 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<Review>? Reviews { get; set; }
}

View File

@@ -5,14 +5,14 @@ namespace BookHive.Models;
public class Review
{
[Key] public int Id { get; set; }
public Book? Book { get; set; }
[Required] public int BookId { get; set; }
public Member? Member { get; set; }
[Required] public int MemberId { get; set; }
[Required] public int Rating { 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.")
.MinimumLength(2)
.WithMessage("First name must exceed 2 characters.");
RuleFor(x => x.LastName)
.NotEmpty()
.WithMessage("Last name is required.")
@@ -23,19 +23,19 @@ public class CreateAuthorDtoValidator : Validator<CreateAuthorDto>
.WithMessage("Last name cannot exceed 100 characters.")
.MinimumLength(2)
.WithMessage("Last name must exceed 2 characters.");
RuleFor(x => x.Biography)
.MaximumLength(2000)
.WithMessage("Biography cannot exceed 2000 characters.")
.MinimumLength(2)
.WithMessage("Biography must exceed 2 characters.");
RuleFor(x => x.BirthDate)
.NotEmpty()
.WithMessage("Birth date is required.")
.LessThan(DateOnly.FromDateTime(DateTime.Now))
.WithMessage("Birth date cannot be in the future.");
RuleFor(x => x.Nationality)
.NotEmpty()
.WithMessage("Nationality is required.")

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -11,11 +11,11 @@ public class CreateReviewDtoValidator : Validator<CreateReviewDto>
RuleFor(x => x.MemberId)
.GreaterThan(0)
.WithMessage("Member id is invalid.");
RuleFor(x => x.BookId)
.GreaterThan(0)
.WithMessage("Book id is invalid.");
RuleFor(x => x.Rating)
.InclusiveBetween(1, 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)
.GreaterThan(0)
.WithMessage("Id is invalid.");
RuleFor(x => x.BookId)
.GreaterThan(0)
.WithMessage("Book id is invalid.");
RuleFor(x => x.MemberId)
.GreaterThan(0)
.WithMessage("Member id is invalid.");
RuleFor(x => x.Rating)
.InclusiveBetween(1, 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,
"restore": {
"/home/sanchezvem@stsio.lan/Documents/TP-Fluent/BookHive/BookHive.csproj": {}
"C:\\Users\\mathy\\Documents\\TP-Fluent\\BookHive\\BookHive.csproj": {}
},
"projects": {
"/home/sanchezvem@stsio.lan/Documents/TP-Fluent/BookHive/BookHive.csproj": {
"C:\\Users\\mathy\\Documents\\TP-Fluent\\BookHive\\BookHive.csproj": {
"version": "1.0.0",
"restore": {
"projectUniqueName": "/home/sanchezvem@stsio.lan/Documents/TP-Fluent/BookHive/BookHive.csproj",
"projectUniqueName": "C:\\Users\\mathy\\Documents\\TP-Fluent\\BookHive\\BookHive.csproj",
"projectName": "BookHive",
"projectPath": "/home/sanchezvem@stsio.lan/Documents/TP-Fluent/BookHive/BookHive.csproj",
"packagesPath": "/home/sanchezvem@stsio.lan/.nuget/packages/",
"outputPath": "/home/sanchezvem@stsio.lan/Documents/TP-Fluent/BookHive/obj/",
"projectPath": "C:\\Users\\mathy\\Documents\\TP-Fluent\\BookHive\\BookHive.csproj",
"packagesPath": "C:\\Users\\mathy\\.nuget\\packages\\",
"outputPath": "C:\\Users\\mathy\\Documents\\TP-Fluent\\BookHive\\obj\\",
"projectStyle": "PackageReference",
"fallbackFolders": [
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
],
"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": [
"net10.0"
],
"sources": {
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
"C:\\Program Files\\dotnet\\library-packs": {},
"https://api.nuget.org/v3/index.json": {}
},
"frameworks": {
@@ -110,7 +117,7 @@
"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": {
"Microsoft.AspNetCore": "(,10.0.32767]",
"Microsoft.AspNetCore.Antiforgery": "(,10.0.32767]",

View File

@@ -4,20 +4,21 @@
<RestoreSuccess Condition=" '$(RestoreSuccess)' == '' ">True</RestoreSuccess>
<RestoreTool Condition=" '$(RestoreTool)' == '' ">NuGet</RestoreTool>
<ProjectAssetsFile Condition=" '$(ProjectAssetsFile)' == '' ">$(MSBuildThisFileDirectory)project.assets.json</ProjectAssetsFile>
<NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">/home/sanchezvem@stsio.lan/.nuget/packages/</NuGetPackageRoot>
<NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">/home/sanchezvem@stsio.lan/.nuget/packages/</NuGetPackageFolders>
<NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">$(UserProfile)\.nuget\packages\</NuGetPackageRoot>
<NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">C:\Users\mathy\.nuget\packages\;C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages</NuGetPackageFolders>
<NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle>
<NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">7.0.0</NuGetToolVersion>
</PropertyGroup>
<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>
<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.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\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.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>
<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>
</Project>

View File

@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<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)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)fastendpoints.swagger/8.0.1/build/FastEndpoints.Swagger.targets" Condition="Exists('$(NuGetPackageRoot)fastendpoints.swagger/8.0.1/build/FastEndpoints.Swagger.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.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')" />
</ImportGroup>
</Project>

View File

@@ -13,7 +13,7 @@ using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("BookHive")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[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.AssemblyTitleAttribute("BookHive")]
[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.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.EnableGeneratedComInterfaceComImportInterop =
build_property.RazorLangVersion = 9.0
build_property.SupportLocalizedComponentNames =
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.EffectiveAnalysisLevelStyle = 10.0
build_property.EnableCodeStyleSeverity =

View File

@@ -4160,24 +4160,32 @@
]
},
"packageFolders": {
"/home/sanchezvem@stsio.lan/.nuget/packages/": {}
"C:\\Users\\mathy\\.nuget\\packages\\": {},
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages": {}
},
"project": {
"version": "1.0.0",
"restore": {
"projectUniqueName": "/home/sanchezvem@stsio.lan/Documents/TP-Fluent/BookHive/BookHive.csproj",
"projectUniqueName": "C:\\Users\\mathy\\Documents\\TP-Fluent\\BookHive\\BookHive.csproj",
"projectName": "BookHive",
"projectPath": "/home/sanchezvem@stsio.lan/Documents/TP-Fluent/BookHive/BookHive.csproj",
"packagesPath": "/home/sanchezvem@stsio.lan/.nuget/packages/",
"outputPath": "/home/sanchezvem@stsio.lan/Documents/TP-Fluent/BookHive/obj/",
"projectPath": "C:\\Users\\mathy\\Documents\\TP-Fluent\\BookHive\\BookHive.csproj",
"packagesPath": "C:\\Users\\mathy\\.nuget\\packages\\",
"outputPath": "C:\\Users\\mathy\\Documents\\TP-Fluent\\BookHive\\obj\\",
"projectStyle": "PackageReference",
"fallbackFolders": [
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
],
"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": [
"net10.0"
],
"sources": {
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
"C:\\Program Files\\dotnet\\library-packs": {},
"https://api.nuget.org/v3/index.json": {}
},
"frameworks": {
@@ -4268,7 +4276,7 @@
"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": {
"Microsoft.AspNetCore": "(,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,
"dgSpecHash": "DtuZFm4FaIQ=",
"dgSpecHash": "BTTaBsoQirc=",
"success": true,
"projectFilePath": "/home/sanchezvem@stsio.lan/Documents/TP-Fluent/BookHive/BookHive.csproj",
"projectFilePath": "C:\\Users\\mathy\\Documents\\TP-Fluent\\BookHive\\BookHive.csproj",
"expectedPackageFiles": [
"/home/sanchezvem@stsio.lan/.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",
"/home/sanchezvem@stsio.lan/.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",
"/home/sanchezvem@stsio.lan/.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",
"/home/sanchezvem@stsio.lan/.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",
"/home/sanchezvem@stsio.lan/.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",
"/home/sanchezvem@stsio.lan/.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",
"/home/sanchezvem@stsio.lan/.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",
"/home/sanchezvem@stsio.lan/.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",
"/home/sanchezvem@stsio.lan/.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",
"/home/sanchezvem@stsio.lan/.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",
"/home/sanchezvem@stsio.lan/.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",
"/home/sanchezvem@stsio.lan/.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",
"/home/sanchezvem@stsio.lan/.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",
"/home/sanchezvem@stsio.lan/.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",
"/home/sanchezvem@stsio.lan/.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",
"/home/sanchezvem@stsio.lan/.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",
"/home/sanchezvem@stsio.lan/.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",
"/home/sanchezvem@stsio.lan/.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",
"/home/sanchezvem@stsio.lan/.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",
"/home/sanchezvem@stsio.lan/.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",
"/home/sanchezvem@stsio.lan/.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",
"/home/sanchezvem@stsio.lan/.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",
"/home/sanchezvem@stsio.lan/.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",
"/home/sanchezvem@stsio.lan/.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",
"/home/sanchezvem@stsio.lan/.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",
"/home/sanchezvem@stsio.lan/.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",
"/home/sanchezvem@stsio.lan/.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",
"/home/sanchezvem@stsio.lan/.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",
"/home/sanchezvem@stsio.lan/.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",
"/home/sanchezvem@stsio.lan/.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",
"/home/sanchezvem@stsio.lan/.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",
"/home/sanchezvem@stsio.lan/.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",
"/home/sanchezvem@stsio.lan/.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",
"/home/sanchezvem@stsio.lan/.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",
"/home/sanchezvem@stsio.lan/.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",
"/home/sanchezvem@stsio.lan/.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",
"/home/sanchezvem@stsio.lan/.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",
"/home/sanchezvem@stsio.lan/.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",
"/home/sanchezvem@stsio.lan/.nuget/packages/yamldotnet/16.3.0/yamldotnet.16.3.0.nupkg.sha512"
"C:\\Users\\mathy\\.nuget\\packages\\ardalis.specification\\9.3.1\\ardalis.specification.9.3.1.nupkg.sha512",
"C:\\Users\\mathy\\.nuget\\packages\\ardalis.specification.entityframeworkcore\\9.3.1\\ardalis.specification.entityframeworkcore.9.3.1.nupkg.sha512",
"C:\\Users\\mathy\\.nuget\\packages\\automapper\\16.1.0\\automapper.16.1.0.nupkg.sha512",
"C:\\Users\\mathy\\.nuget\\packages\\automapper.collection\\13.0.0\\automapper.collection.13.0.0.nupkg.sha512",
"C:\\Users\\mathy\\.nuget\\packages\\azure.core\\1.47.1\\azure.core.1.47.1.nupkg.sha512",
"C:\\Users\\mathy\\.nuget\\packages\\azure.identity\\1.14.2\\azure.identity.1.14.2.nupkg.sha512",
"C:\\Users\\mathy\\.nuget\\packages\\fastendpoints\\8.0.1\\fastendpoints.8.0.1.nupkg.sha512",
"C:\\Users\\mathy\\.nuget\\packages\\fastendpoints.attributes\\8.0.1\\fastendpoints.attributes.8.0.1.nupkg.sha512",
"C:\\Users\\mathy\\.nuget\\packages\\fastendpoints.core\\8.0.1\\fastendpoints.core.8.0.1.nupkg.sha512",
"C:\\Users\\mathy\\.nuget\\packages\\fastendpoints.jobqueues\\8.0.1\\fastendpoints.jobqueues.8.0.1.nupkg.sha512",
"C:\\Users\\mathy\\.nuget\\packages\\fastendpoints.messaging\\8.0.1\\fastendpoints.messaging.8.0.1.nupkg.sha512",
"C:\\Users\\mathy\\.nuget\\packages\\fastendpoints.messaging.core\\8.0.1\\fastendpoints.messaging.core.8.0.1.nupkg.sha512",
"C:\\Users\\mathy\\.nuget\\packages\\fastendpoints.security\\8.0.1\\fastendpoints.security.8.0.1.nupkg.sha512",
"C:\\Users\\mathy\\.nuget\\packages\\fastendpoints.swagger\\8.0.1\\fastendpoints.swagger.8.0.1.nupkg.sha512",
"C:\\Users\\mathy\\.nuget\\packages\\fluentvalidation\\12.1.1\\fluentvalidation.12.1.1.nupkg.sha512",
"C:\\Users\\mathy\\.nuget\\packages\\humanizer.core\\2.14.1\\humanizer.core.2.14.1.nupkg.sha512",
"C:\\Users\\mathy\\.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.openapi\\10.0.3\\microsoft.aspnetcore.openapi.10.0.3.nupkg.sha512",
"C:\\Users\\mathy\\.nuget\\packages\\microsoft.bcl.asyncinterfaces\\8.0.0\\microsoft.bcl.asyncinterfaces.8.0.0.nupkg.sha512",
"C:\\Users\\mathy\\.nuget\\packages\\microsoft.bcl.cryptography\\9.0.4\\microsoft.bcl.cryptography.9.0.4.nupkg.sha512",
"C:\\Users\\mathy\\.nuget\\packages\\microsoft.build.framework\\18.0.2\\microsoft.build.framework.18.0.2.nupkg.sha512",
"C:\\Users\\mathy\\.nuget\\packages\\microsoft.codeanalysis.analyzers\\3.11.0\\microsoft.codeanalysis.analyzers.3.11.0.nupkg.sha512",
"C:\\Users\\mathy\\.nuget\\packages\\microsoft.codeanalysis.common\\5.0.0\\microsoft.codeanalysis.common.5.0.0.nupkg.sha512",
"C:\\Users\\mathy\\.nuget\\packages\\microsoft.codeanalysis.csharp\\5.0.0\\microsoft.codeanalysis.csharp.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",
"C:\\Users\\mathy\\.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.msbuild\\5.0.0\\microsoft.codeanalysis.workspaces.msbuild.5.0.0.nupkg.sha512",
"C:\\Users\\mathy\\.nuget\\packages\\microsoft.data.sqlclient\\6.1.1\\microsoft.data.sqlclient.6.1.1.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",
"C:\\Users\\mathy\\.nuget\\packages\\microsoft.entityframeworkcore\\10.0.3\\microsoft.entityframeworkcore.10.0.3.nupkg.sha512",
"C:\\Users\\mathy\\.nuget\\packages\\microsoft.entityframeworkcore.abstractions\\10.0.3\\microsoft.entityframeworkcore.abstractions.10.0.3.nupkg.sha512",
"C:\\Users\\mathy\\.nuget\\packages\\microsoft.entityframeworkcore.analyzers\\10.0.3\\microsoft.entityframeworkcore.analyzers.10.0.3.nupkg.sha512",
"C:\\Users\\mathy\\.nuget\\packages\\microsoft.entityframeworkcore.design\\10.0.3\\microsoft.entityframeworkcore.design.10.0.3.nupkg.sha512",
"C:\\Users\\mathy\\.nuget\\packages\\microsoft.entityframeworkcore.relational\\10.0.3\\microsoft.entityframeworkcore.relational.10.0.3.nupkg.sha512",
"C:\\Users\\mathy\\.nuget\\packages\\microsoft.entityframeworkcore.sqlserver\\10.0.3\\microsoft.entityframeworkcore.sqlserver.10.0.3.nupkg.sha512",
"C:\\Users\\mathy\\.nuget\\packages\\microsoft.extensions.dependencymodel\\10.0.3\\microsoft.extensions.dependencymodel.10.0.3.nupkg.sha512",
"C:\\Users\\mathy\\.nuget\\packages\\microsoft.identity.client\\4.73.1\\microsoft.identity.client.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",
"C:\\Users\\mathy\\.nuget\\packages\\microsoft.identitymodel.abstractions\\8.14.0\\microsoft.identitymodel.abstractions.8.14.0.nupkg.sha512",
"C:\\Users\\mathy\\.nuget\\packages\\microsoft.identitymodel.jsonwebtokens\\8.14.0\\microsoft.identitymodel.jsonwebtokens.8.14.0.nupkg.sha512",
"C:\\Users\\mathy\\.nuget\\packages\\microsoft.identitymodel.logging\\8.14.0\\microsoft.identitymodel.logging.8.14.0.nupkg.sha512",
"C:\\Users\\mathy\\.nuget\\packages\\microsoft.identitymodel.protocols\\8.0.1\\microsoft.identitymodel.protocols.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",
"C:\\Users\\mathy\\.nuget\\packages\\microsoft.identitymodel.tokens\\8.14.0\\microsoft.identitymodel.tokens.8.14.0.nupkg.sha512",
"C:\\Users\\mathy\\.nuget\\packages\\microsoft.openapi\\2.0.0\\microsoft.openapi.2.0.0.nupkg.sha512",
"C:\\Users\\mathy\\.nuget\\packages\\microsoft.sqlserver.server\\1.0.0\\microsoft.sqlserver.server.1.0.0.nupkg.sha512",
"C:\\Users\\mathy\\.nuget\\packages\\microsoft.visualstudio.solutionpersistence\\1.0.52\\microsoft.visualstudio.solutionpersistence.1.0.52.nupkg.sha512",
"C:\\Users\\mathy\\.nuget\\packages\\mono.texttemplating\\3.0.0\\mono.texttemplating.3.0.0.nupkg.sha512",
"C:\\Users\\mathy\\.nuget\\packages\\namotion.reflection\\3.4.3\\namotion.reflection.3.4.3.nupkg.sha512",
"C:\\Users\\mathy\\.nuget\\packages\\newtonsoft.json\\13.0.3\\newtonsoft.json.13.0.3.nupkg.sha512",
"C:\\Users\\mathy\\.nuget\\packages\\njsonschema\\11.5.2\\njsonschema.11.5.2.nupkg.sha512",
"C:\\Users\\mathy\\.nuget\\packages\\njsonschema.annotations\\11.5.2\\njsonschema.annotations.11.5.2.nupkg.sha512",
"C:\\Users\\mathy\\.nuget\\packages\\njsonschema.newtonsoftjson\\11.5.2\\njsonschema.newtonsoftjson.11.5.2.nupkg.sha512",
"C:\\Users\\mathy\\.nuget\\packages\\njsonschema.yaml\\11.5.2\\njsonschema.yaml.11.5.2.nupkg.sha512",
"C:\\Users\\mathy\\.nuget\\packages\\nswag.annotations\\14.6.3\\nswag.annotations.14.6.3.nupkg.sha512",
"C:\\Users\\mathy\\.nuget\\packages\\nswag.aspnetcore\\14.6.3\\nswag.aspnetcore.14.6.3.nupkg.sha512",
"C:\\Users\\mathy\\.nuget\\packages\\nswag.core\\14.6.3\\nswag.core.14.6.3.nupkg.sha512",
"C:\\Users\\mathy\\.nuget\\packages\\nswag.core.yaml\\14.6.3\\nswag.core.yaml.14.6.3.nupkg.sha512",
"C:\\Users\\mathy\\.nuget\\packages\\nswag.generation\\14.6.3\\nswag.generation.14.6.3.nupkg.sha512",
"C:\\Users\\mathy\\.nuget\\packages\\nswag.generation.aspnetcore\\14.6.3\\nswag.generation.aspnetcore.14.6.3.nupkg.sha512",
"C:\\Users\\mathy\\.nuget\\packages\\plainquire.filter.abstractions\\7.1.0\\plainquire.filter.abstractions.7.1.0.nupkg.sha512",
"C:\\Users\\mathy\\.nuget\\packages\\plainquire.page\\7.1.0\\plainquire.page.7.1.0.nupkg.sha512",
"C:\\Users\\mathy\\.nuget\\packages\\plainquire.page.abstractions\\7.1.0\\plainquire.page.abstractions.7.1.0.nupkg.sha512",
"C:\\Users\\mathy\\.nuget\\packages\\system.clientmodel\\1.5.1\\system.clientmodel.1.5.1.nupkg.sha512",
"C:\\Users\\mathy\\.nuget\\packages\\system.codedom\\6.0.0\\system.codedom.6.0.0.nupkg.sha512",
"C:\\Users\\mathy\\.nuget\\packages\\system.composition\\9.0.0\\system.composition.9.0.0.nupkg.sha512",
"C:\\Users\\mathy\\.nuget\\packages\\system.composition.attributedmodel\\9.0.0\\system.composition.attributedmodel.9.0.0.nupkg.sha512",
"C:\\Users\\mathy\\.nuget\\packages\\system.composition.convention\\9.0.0\\system.composition.convention.9.0.0.nupkg.sha512",
"C:\\Users\\mathy\\.nuget\\packages\\system.composition.hosting\\9.0.0\\system.composition.hosting.9.0.0.nupkg.sha512",
"C:\\Users\\mathy\\.nuget\\packages\\system.composition.runtime\\9.0.0\\system.composition.runtime.9.0.0.nupkg.sha512",
"C:\\Users\\mathy\\.nuget\\packages\\system.composition.typedparts\\9.0.0\\system.composition.typedparts.9.0.0.nupkg.sha512",
"C:\\Users\\mathy\\.nuget\\packages\\system.configuration.configurationmanager\\9.0.4\\system.configuration.configurationmanager.9.0.4.nupkg.sha512",
"C:\\Users\\mathy\\.nuget\\packages\\system.identitymodel.tokens.jwt\\8.0.1\\system.identitymodel.tokens.jwt.8.0.1.nupkg.sha512",
"C:\\Users\\mathy\\.nuget\\packages\\system.memory.data\\8.0.1\\system.memory.data.8.0.1.nupkg.sha512",
"C:\\Users\\mathy\\.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.protecteddata\\9.0.4\\system.security.cryptography.protecteddata.9.0.4.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