Add WebAPI controllers for beers, breweries, and users; update Docker configuration and .gitignore

This commit is contained in:
Aaron Po
2025-12-06 22:15:00 -05:00
parent fc2e8c9b6d
commit afefdb9e3d
12 changed files with 790 additions and 11 deletions

View File

@@ -0,0 +1,75 @@
using Microsoft.AspNetCore.Mvc;
namespace WebAPI.Controllers
{
[ApiController]
[Route("api/beers")]
public class BeersController : ControllerBase
{
[HttpGet]
public IActionResult GetBeers([FromQuery] int page_num, [FromQuery] int page_size)
{
return Ok();
}
[HttpGet("search")]
public IActionResult SearchBeers([FromQuery] string search)
{
return Ok();
}
[HttpGet("styles")]
public IActionResult GetBeerStyles([FromQuery] int page_num, [FromQuery] int page_size)
{
return Ok();
}
[HttpPost("styles/create")]
public IActionResult CreateBeerStyle([FromBody] BeerStyleCreateRequest request)
{
return Ok();
}
[HttpPut("{postId}")]
public IActionResult EditBeer(string postId, [FromBody] BeerEditRequest request)
{
return Ok();
}
[HttpDelete("{postId}")]
public IActionResult DeleteBeer(string postId)
{
return Ok();
}
[HttpGet("{postId}/recommendations")]
public IActionResult GetBeerRecommendations([FromQuery] int page_num, [FromQuery] int page_size, string postId)
{
return Ok();
}
[HttpPost("{postId}/comments")]
public IActionResult AddBeerComment(string postId, [FromBody] BeerCommentRequest request)
{
return Ok();
}
[HttpGet("{postId}/comments")]
public IActionResult GetBeerComments([FromQuery] int page_num, [FromQuery] int page_size, string postId)
{
return Ok();
}
[HttpPut("{postId}/comments/{commentId}")]
public IActionResult EditBeerComment(string postId, string commentId, [FromBody] BeerCommentRequest request)
{
return Ok();
}
[HttpDelete("{postId}/comments/{commentId}")]
public IActionResult DeleteBeerComment(string postId, string commentId)
{
return Ok();
}
}
}

View File

@@ -0,0 +1,57 @@
using Microsoft.AspNetCore.Mvc;
namespace WebAPI.Controllers
{
[ApiController]
[Route("api/breweries")]
public class BreweriesController : ControllerBase
{
[HttpGet]
public IActionResult GetBreweries([FromQuery] int page_num, [FromQuery] int page_size)
{
return Ok();
}
[HttpGet("map")]
public IActionResult GetBreweriesMap([FromQuery] int page_num, [FromQuery] int page_size)
{
return Ok();
}
[HttpPut("{postId}")]
public IActionResult EditBrewery(string postId, [FromBody] BreweryEditRequest request)
{
return Ok();
}
[HttpDelete("{postId}")]
public IActionResult DeleteBrewery(string postId)
{
return Ok();
}
[HttpPost("{postId}/comments")]
public IActionResult AddBreweryComment(string postId, [FromBody] BreweryCommentRequest request)
{
return Ok();
}
[HttpGet("{postId}/comments")]
public IActionResult GetBreweryComments([FromQuery] int page_num, [FromQuery] int page_size, string postId)
{
return Ok();
}
[HttpPut("{postId}/comments/{commentId}")]
public IActionResult EditBreweryComment(string postId, string commentId, [FromBody] BreweryCommentRequest request)
{
return Ok();
}
[HttpDelete("{postId}/comments/{commentId}")]
public IActionResult DeleteBreweryComment(string postId, string commentId)
{
return Ok();
}
}
}

View File

@@ -0,0 +1,26 @@
using Microsoft.AspNetCore.Mvc;
using DataAccessLayer;
namespace WebAPI.Controllers
{
[ApiController]
[Route("api/users")]
public class UsersController : ControllerBase
{
private readonly UserAccountRepository _userAccountRepository;
public UsersController()
{
_userAccountRepository = new UserAccountRepository();
}
// all users
[HttpGet("users")]
public IActionResult GetAllUsers()
{
var users = _userAccountRepository.GetAll();
return Ok(users);
}
}
}

View File

@@ -45,10 +45,7 @@ app.MapGet(
)
.WithName("GetWeatherForecast");
app.UseStaticFiles();
// Register controllers
app.MapControllers();
app.Run();
record WeatherForecast(DateOnly Date, int TemperatureC, string? Summary)
{
public int TemperatureF => 32 + (int)(TemperatureC / 0.5556);
}

View File

@@ -8,4 +8,8 @@
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.11" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="../DataAccessLayer/DataAccessLayer.csproj" />
</ItemGroup>
</Project>