Refactoring, database structure changed
This commit is contained in:
@@ -0,0 +1,18 @@
|
||||
using System.Text.RegularExpressions;
|
||||
using WatchIt.DTO.Query;
|
||||
|
||||
namespace WatchIt.DTO.Models.Controllers.Genres.Genre.Filters;
|
||||
|
||||
public record GenreNameFilter : Filter<Database.Model.Genres.Genre>
|
||||
{
|
||||
public GenreNameFilter(string? nameRegex) : base(x =>
|
||||
(
|
||||
string.IsNullOrWhiteSpace(nameRegex)
|
||||
||
|
||||
(
|
||||
!string.IsNullOrWhiteSpace(x.Name)
|
||||
&&
|
||||
Regex.IsMatch(x.Name, nameRegex, RegexOptions.IgnoreCase)
|
||||
)
|
||||
)) { }
|
||||
};
|
||||
@@ -0,0 +1,26 @@
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using WatchIt.DTO.Models.Controllers.Genres.Genre.Filters;
|
||||
using WatchIt.DTO.Query;
|
||||
|
||||
namespace WatchIt.DTO.Models.Controllers.Genres.Genre;
|
||||
|
||||
public class GenreFilterQuery : IFilterQuery<Database.Model.Genres.Genre>
|
||||
{
|
||||
#region PROPERTIES
|
||||
|
||||
[FromQuery(Name = "name")]
|
||||
public string? Name { get; set; }
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
|
||||
#region PUBLIC METHODS
|
||||
|
||||
public IEnumerable<Filter<Database.Model.Genres.Genre>> GetFilters() =>
|
||||
[
|
||||
new GenreNameFilter(Name),
|
||||
];
|
||||
|
||||
#endregion
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
using System.Linq.Expressions;
|
||||
|
||||
namespace WatchIt.DTO.Models.Controllers.Genres.Genre;
|
||||
|
||||
public static class GenreOrderKeys
|
||||
{
|
||||
public static readonly Dictionary<string, Expression<Func<Database.Model.Genres.Genre, object?>>> Base = new Dictionary<string, Expression<Func<Database.Model.Genres.Genre, object?>>>
|
||||
{
|
||||
{ "id", x => x.Id },
|
||||
{ "name", x => x.Name },
|
||||
};
|
||||
}
|
||||
10
WatchIt.DTO/Models/Controllers/Genres/Genre/GenreRequest.cs
Normal file
10
WatchIt.DTO/Models/Controllers/Genres/Genre/GenreRequest.cs
Normal file
@@ -0,0 +1,10 @@
|
||||
namespace WatchIt.DTO.Models.Controllers.Genres.Genre;
|
||||
|
||||
public class GenreRequest
|
||||
{
|
||||
#region PROPERTIES
|
||||
|
||||
public string Name { get; set; } = null!;
|
||||
|
||||
#endregion
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
using FluentValidation;
|
||||
|
||||
namespace WatchIt.DTO.Models.Controllers.Genres.Genre;
|
||||
|
||||
public class GenreRequestValidator : AbstractValidator<GenreRequest>
|
||||
{
|
||||
#region CONSTRUCTORS
|
||||
|
||||
public GenreRequestValidator()
|
||||
{
|
||||
RuleFor(x => x.Name).MaximumLength(100);
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
11
WatchIt.DTO/Models/Controllers/Genres/Genre/GenreResponse.cs
Normal file
11
WatchIt.DTO/Models/Controllers/Genres/Genre/GenreResponse.cs
Normal file
@@ -0,0 +1,11 @@
|
||||
namespace WatchIt.DTO.Models.Controllers.Genres.Genre;
|
||||
|
||||
public class GenreResponse
|
||||
{
|
||||
#region PROPERTIES
|
||||
|
||||
public short Id { get; set; }
|
||||
public string Name { get; set; } = null!;
|
||||
|
||||
#endregion
|
||||
}
|
||||
21
WatchIt.DTO/Models/Controllers/Genres/GenresMappers.cs
Normal file
21
WatchIt.DTO/Models/Controllers/Genres/GenresMappers.cs
Normal file
@@ -0,0 +1,21 @@
|
||||
using WatchIt.DTO.Models.Controllers.Genres.Genre;
|
||||
|
||||
namespace WatchIt.DTO.Models.Controllers.Genres;
|
||||
|
||||
public static class GenresMappers
|
||||
{
|
||||
#region PUBLIC METHODS
|
||||
|
||||
public static GenreResponse ToResponse(this Database.Model.Genres.Genre entity) => new GenreResponse
|
||||
{
|
||||
Id = entity.Id,
|
||||
Name = entity.Name,
|
||||
};
|
||||
|
||||
public static Database.Model.Genres.Genre ToEntity(this GenreRequest request) => new Database.Model.Genres.Genre
|
||||
{
|
||||
Name = request.Name,
|
||||
};
|
||||
|
||||
#endregion
|
||||
}
|
||||
Reference in New Issue
Block a user