using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; namespace HyperBooru.Controllers; [ApiController] [Authorize] [Route("/api/tag")] public class ApiTagController : Controller { private IDbContextFactory dbFactory; public ApiTagController(IDbContextFactory dbFactory) => this.dbFactory = dbFactory; [HttpGet("definition")] public async Task GetAllTagDefinitionsAsync() { using var db = dbFactory.CreateDbContext(); var definitions = await db.TagDefinitions .Include(td => td.ImplicitTags) .Select(td => (ApiModels.TagDefinition)td) .ToArrayAsync(); return Ok(definitions); } [HttpGet("definition/{tagDefinitionId}")] public async Task GetTagDefinitionAsync([FromRoute] Guid tagDefinitionId) { using var db = dbFactory.CreateDbContext(); var tagDefinition = await db.TagDefinitions .Include(td => td.ImplicitTags) .FirstOrDefaultAsync(td => td.Guid == tagDefinitionId); return tagDefinition is not null ? Ok(tagDefinition) : NotFound(); } }