SoftTraderBackend/Controller/UserInterestController.cs
2026-03-20 10:42:48 -04:00

72 lines
1.5 KiB
C#

using Backend.DatabaseHandler;
using Backend.ServiceHander;
using Backend.Interface;
using Microsoft.AspNetCore.Mvc;
namespace Backend.Controllers
{
[ApiController]
[Route("api/user-interest")]
public sealed class UserInterestController : ControllerBase
{
private readonly IUserInterestStore _store;
public UserInterestController(IUserInterestStore store)
{
_store = store;
}
[HttpGet("fetch")]
public async Task<ActionResult<UserInterestFetchResponse>> FetchAll(
[FromQuery] string user,
[FromQuery] string type)
{
try
{
List<string> items = await _store.FetchAllAsync(user, type);
return Ok(new UserInterestFetchResponse
{
Items = items
});
}
catch (ArgumentException ex)
{
return BadRequest(ex.Message);
}
}
[HttpGet("add")]
public async Task<ActionResult<BoolResponse>> Add(
[FromQuery] string user,
[FromQuery] string type,
[FromQuery] string value)
{
try
{
bool success = await _store.AddAsync(user, type, value);
return Ok(new BoolResponse { Success = success });
}
catch (ArgumentException ex)
{
return BadRequest(ex.Message);
}
}
[HttpGet("remove")]
public async Task<ActionResult<BoolResponse>> Remove(
[FromQuery] string user,
[FromQuery] string type,
[FromQuery] string value)
{
try
{
bool success = await _store.RemoveAsync(user, type, value);
return Ok(new BoolResponse { Success = success });
}
catch (ArgumentException ex)
{
return BadRequest(ex.Message);
}
}
}
}