Files
mindforge/Mindforge.API/Controllers/FlashcardController.cs
Jose Henrique b80d28f671
All checks were successful
Mindforge API Build and Deploy / Build Mindforge API Image (push) Successful in 4m4s
Mindforge Web Build and Deploy (internal) / Build Mindforge Web Image (push) Successful in 5m29s
Mindforge Web Build and Deploy (internal) / Deploy Mindforge Web (internal) (push) Successful in 9s
Mindforge API Build and Deploy / Deploy Mindforge API (internal) (push) Successful in 8s
new flashcards
2026-05-30 11:59:19 -03:00

60 lines
2.0 KiB
C#

using Microsoft.AspNetCore.Mvc;
using Mindforge.API.Exceptions;
using Mindforge.API.Models.Requests;
using Mindforge.API.Services.Interfaces;
namespace Mindforge.API.Controllers
{
[ApiController]
[Route("api/v1/flashcard")]
public class FlashcardController : ControllerBase
{
private readonly IFlashcardService _flashcardService;
public FlashcardController(IFlashcardService flashcardService)
{
_flashcardService = flashcardService;
}
[HttpPost("generate")]
public async Task<IActionResult> Generate([FromBody] FlashcardGenerateRequest request)
{
request ??= new FlashcardGenerateRequest();
if (request.FilePaths is null || request.FilePaths.Count == 0)
{
throw new UserException("Selecione ao menos um arquivo para gerar flashcards.");
}
var libraries = await _flashcardService.GenerateFlashcardsAsync(request);
return Ok(new { libraries });
}
[HttpGet("libraries")]
public async Task<IActionResult> GetLibraries()
{
var libraries = await _flashcardService.GetLibrariesAsync();
return Ok(libraries);
}
[HttpGet("libraries/{id:long}")]
public async Task<IActionResult> GetLibraryById([FromRoute] long id)
{
var library = await _flashcardService.GetLibraryByIdAsync(id);
if (library is null)
{
return NotFound(new { error = "Biblioteca de flashcards nao encontrada." });
}
return Ok(library);
}
[HttpPost("review-session")]
public async Task<IActionResult> BuildReviewSession([FromBody] FlashcardReviewSessionRequest request)
{
request ??= new FlashcardReviewSessionRequest();
var cards = await _flashcardService.BuildReviewSessionAsync(request);
return Ok(new { cards });
}
}
}