added xml comments to swagger. finished adding all filter query params to episode endpoint.
This commit is contained in:
@@ -5,3 +5,6 @@ dotnet_diagnostic.CS0472.severity = none
|
||||
|
||||
# CS8604: Possible null reference argument.
|
||||
dotnet_diagnostic.CS8604.severity = none
|
||||
|
||||
# CS1591: Missing XML comment for publicly visible type or member
|
||||
dotnet_diagnostic.CS1591.severity = none
|
||||
|
||||
@@ -8,8 +8,49 @@ namespace server.Models
|
||||
{
|
||||
public class EpisodeFilter
|
||||
{
|
||||
/// <summary>
|
||||
/// Use to filter episodes by season number.
|
||||
/// </summary>
|
||||
public int? Season { get; set; } = null;
|
||||
|
||||
/// <summary>
|
||||
/// Use to filter episodes by those who have an air date on or after this value.
|
||||
/// </summary>
|
||||
public DateTime? StartDate { get; set; } = null;
|
||||
|
||||
/// <summary>
|
||||
/// Use to filter episodes by those who have an air date on or before this value.
|
||||
/// </summary>
|
||||
public DateTime? EndDate { get; set; } = null;
|
||||
|
||||
/// <summary>
|
||||
/// Use to filter episodes by episode title.
|
||||
/// </summary>
|
||||
public string? Title { get; set; } = null;
|
||||
|
||||
/// <summary>
|
||||
/// Use to filter episodes by those whose summary contains this value.
|
||||
/// </summary>
|
||||
public string? SummaryKeyword { get; set; } = null;
|
||||
|
||||
/// <summary>
|
||||
/// Use to filter episodes by director's name.
|
||||
/// </summary>
|
||||
public string? DirectedBy { get; set; } = null;
|
||||
|
||||
/// <summary>
|
||||
/// Use to filter episodes by writer's name.
|
||||
/// </summary>
|
||||
public string? WrittenBy { get; set; } = null;
|
||||
|
||||
/// <summary>
|
||||
/// Use to filter episodes by those who have millions of us viewers equal to or more than this value.
|
||||
/// </summary>
|
||||
public double? ViewersRangeStart { get; set; } = null;
|
||||
|
||||
/// <summary>
|
||||
/// Use to filter episodes by those who have millions of us viewers equal to or less than this value.
|
||||
/// </summary>
|
||||
public double? ViewersRangeEnd { get; set; } = null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
using MongoDB.Driver;
|
||||
using MongoDB.Driver.Linq;
|
||||
using server.Models;
|
||||
using System.Linq;
|
||||
|
||||
namespace server.Persistence.Repositories
|
||||
{
|
||||
@@ -34,6 +35,36 @@ namespace server.Persistence.Repositories
|
||||
query = query.Where(episode => episode.AirDate <= filter.EndDate);
|
||||
}
|
||||
|
||||
if (filter?.Title != null)
|
||||
{
|
||||
query = query.Where(episode => episode.Title!.ToLower() == filter.Title.ToLower());
|
||||
}
|
||||
|
||||
if (filter?.SummaryKeyword != null)
|
||||
{
|
||||
query = query.Where(episode => episode.Summary!.ToLower().Contains(filter.SummaryKeyword.ToLower()));
|
||||
}
|
||||
|
||||
if (filter?.DirectedBy != null)
|
||||
{
|
||||
query = query.Where(episode => episode.DirectedBy!.ToLower().Contains(filter.DirectedBy.ToLower()));
|
||||
}
|
||||
|
||||
if (filter?.WrittenBy != null)
|
||||
{
|
||||
query = query.Where(episode => episode.WrittenBy.Any(e => e.ToLower().Contains(filter.WrittenBy.ToLower())));
|
||||
}
|
||||
|
||||
if (filter?.ViewersRangeStart != null)
|
||||
{
|
||||
query = query.Where(episode => episode.UsViewersInMillions >= filter.ViewersRangeStart);
|
||||
}
|
||||
|
||||
if (filter?.ViewersRangeEnd != null)
|
||||
{
|
||||
query = query.Where(episode => episode.UsViewersInMillions <= filter.ViewersRangeEnd);
|
||||
}
|
||||
|
||||
return await query.ToListAsync();
|
||||
}
|
||||
catch (Exception e)
|
||||
|
||||
+8
-1
@@ -7,6 +7,7 @@ using server.Options;
|
||||
using server.Persistence;
|
||||
using server.Persistence.Repositories;
|
||||
using server.Persistence.Seed;
|
||||
using System.Reflection;
|
||||
|
||||
if (args.Length == 2 && args[0].ToLower() == "seed")
|
||||
{
|
||||
@@ -41,7 +42,13 @@ builder.Services.AddControllers();
|
||||
|
||||
builder.Services.AddEndpointsApiExplorer();
|
||||
|
||||
builder.Services.AddSwaggerGen();
|
||||
builder.Services.AddSwaggerGen(options =>
|
||||
{
|
||||
var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
|
||||
var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile);
|
||||
|
||||
options.IncludeXmlComments(xmlPath);
|
||||
});
|
||||
|
||||
builder.Services.ConfigureOptions<ConfigureSwaggerOptions>();
|
||||
|
||||
|
||||
@@ -11,7 +11,6 @@
|
||||
"profiles": {
|
||||
"server": {
|
||||
"commandName": "Project",
|
||||
"launchBrowser": true,
|
||||
"launchUrl": "swagger",
|
||||
"environmentVariables": {
|
||||
"ASPNETCORE_ENVIRONMENT": "Development"
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
<Nullable>enable</Nullable>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<GenerateDocumentationFile>True</GenerateDocumentationFile>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
||||
Reference in New Issue
Block a user