added get episode by number endpoint

This commit is contained in:
StevanFreeborn
2022-06-21 09:12:48 -05:00
parent 5e53edafad
commit 920ef40609
4 changed files with 37 additions and 0 deletions
@@ -34,5 +34,27 @@ namespace server.Controllers.v1
return StatusCode(StatusCodes.Status500InternalServerError, "Failed to get episodes");
}
}
[MapToApiVersion("1.0")]
[HttpGet("{number:int}")]
[ProducesResponseType(typeof(Episode), 200)]
[ProducesResponseType(500)]
public async Task<ActionResult<Episode>> GetEpisodeByNumberAsync(int number)
{
try
{
var episode = await _episodeRepository.GetEpisodeByNumberAsync(number);
if (episode == null) return NotFound(new ErrorResponse($"Could not find episode number {number}"));
return Ok(episode);
}
catch (Exception e)
{
Console.WriteLine(e);
return StatusCode(StatusCodes.Status500InternalServerError, "Failed to get season");
}
}
}
}
@@ -32,5 +32,18 @@ namespace server.Persistence.Repositories
throw;
}
}
public async Task<Episode> GetEpisodeByNumberAsync(int number)
{
try
{
return await _context.Episodes.Find(episode => episode.NumberInSeries == number).SingleOrDefaultAsync();
}
catch (Exception e)
{
Console.WriteLine(e);
throw;
}
}
}
}
@@ -10,5 +10,6 @@ namespace server.Persistence.Repositories
public interface IEpisodeRepository
{
Task<List<Episode>> GetEpisodesAsync(EpisodeFilter filter);
Task<Episode> GetEpisodeByNumberAsync(int number);
}
}
+1
View File
@@ -11,6 +11,7 @@
"profiles": {
"server": {
"commandName": "Project",
"launchBrowser": true,
"launchUrl": "swagger",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"