added get episode by number endpoint
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
"profiles": {
|
||||
"server": {
|
||||
"commandName": "Project",
|
||||
"launchBrowser": true,
|
||||
"launchUrl": "swagger",
|
||||
"environmentVariables": {
|
||||
"ASPNETCORE_ENVIRONMENT": "Development"
|
||||
|
||||
Reference in New Issue
Block a user