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");
|
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;
|
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
|
public interface IEpisodeRepository
|
||||||
{
|
{
|
||||||
Task<List<Episode>> GetEpisodesAsync(EpisodeFilter filter);
|
Task<List<Episode>> GetEpisodesAsync(EpisodeFilter filter);
|
||||||
|
Task<Episode> GetEpisodeByNumberAsync(int number);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,6 +11,7 @@
|
|||||||
"profiles": {
|
"profiles": {
|
||||||
"server": {
|
"server": {
|
||||||
"commandName": "Project",
|
"commandName": "Project",
|
||||||
|
"launchBrowser": true,
|
||||||
"launchUrl": "swagger",
|
"launchUrl": "swagger",
|
||||||
"environmentVariables": {
|
"environmentVariables": {
|
||||||
"ASPNETCORE_ENVIRONMENT": "Development"
|
"ASPNETCORE_ENVIRONMENT": "Development"
|
||||||
|
|||||||
Reference in New Issue
Block a user