added xml comments to swagger. finished adding all filter query params to episode endpoint.

This commit is contained in:
StevanFreeborn
2022-06-21 14:07:56 -05:00
parent f22960f0ef
commit 2ecd3ff8bf
6 changed files with 84 additions and 2 deletions
+3
View File
@@ -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
+41
View File
@@ -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
View File
@@ -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>();
-1
View File
@@ -11,7 +11,6 @@
"profiles": {
"server": {
"commandName": "Project",
"launchBrowser": true,
"launchUrl": "swagger",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
+1
View File
@@ -4,6 +4,7 @@
<TargetFramework>net6.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<GenerateDocumentationFile>True</GenerateDocumentationFile>
</PropertyGroup>
<ItemGroup>