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.
|
# CS8604: Possible null reference argument.
|
||||||
dotnet_diagnostic.CS8604.severity = none
|
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
|
public class EpisodeFilter
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Use to filter episodes by season number.
|
||||||
|
/// </summary>
|
||||||
public int? Season { get; set; } = null;
|
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;
|
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;
|
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;
|
||||||
using MongoDB.Driver.Linq;
|
using MongoDB.Driver.Linq;
|
||||||
using server.Models;
|
using server.Models;
|
||||||
|
using System.Linq;
|
||||||
|
|
||||||
namespace server.Persistence.Repositories
|
namespace server.Persistence.Repositories
|
||||||
{
|
{
|
||||||
@@ -34,6 +35,36 @@ namespace server.Persistence.Repositories
|
|||||||
query = query.Where(episode => episode.AirDate <= filter.EndDate);
|
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();
|
return await query.ToListAsync();
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
|
|||||||
+8
-1
@@ -7,6 +7,7 @@ using server.Options;
|
|||||||
using server.Persistence;
|
using server.Persistence;
|
||||||
using server.Persistence.Repositories;
|
using server.Persistence.Repositories;
|
||||||
using server.Persistence.Seed;
|
using server.Persistence.Seed;
|
||||||
|
using System.Reflection;
|
||||||
|
|
||||||
if (args.Length == 2 && args[0].ToLower() == "seed")
|
if (args.Length == 2 && args[0].ToLower() == "seed")
|
||||||
{
|
{
|
||||||
@@ -41,7 +42,13 @@ builder.Services.AddControllers();
|
|||||||
|
|
||||||
builder.Services.AddEndpointsApiExplorer();
|
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>();
|
builder.Services.ConfigureOptions<ConfigureSwaggerOptions>();
|
||||||
|
|
||||||
|
|||||||
@@ -11,7 +11,6 @@
|
|||||||
"profiles": {
|
"profiles": {
|
||||||
"server": {
|
"server": {
|
||||||
"commandName": "Project",
|
"commandName": "Project",
|
||||||
"launchBrowser": true,
|
|
||||||
"launchUrl": "swagger",
|
"launchUrl": "swagger",
|
||||||
"environmentVariables": {
|
"environmentVariables": {
|
||||||
"ASPNETCORE_ENVIRONMENT": "Development"
|
"ASPNETCORE_ENVIRONMENT": "Development"
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
<TargetFramework>net6.0</TargetFramework>
|
<TargetFramework>net6.0</TargetFramework>
|
||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
<ImplicitUsings>enable</ImplicitUsings>
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
|
<GenerateDocumentationFile>True</GenerateDocumentationFile>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|||||||
Reference in New Issue
Block a user