using FictionArchive.Service.ReportingService.Models.DTOs; using FictionArchive.Service.ReportingService.Services; using HotChocolate.Authorization; using HotChocolate.Data; namespace FictionArchive.Service.ReportingService.GraphQL; public class Query { [Authorize] //[UseProjection] [UseFirstOrDefault] public IQueryable GetJobById( Guid jobId, ReportingDbContext db) => db.Jobs.Where(j => j.Id == jobId).Select(j => new JobDto { Id = j.Id, CreatedTime = j.CreatedTime, LastUpdatedTime = j.LastUpdatedTime, ParentJobId = j.ParentJobId, JobType = j.JobType, DisplayName = j.DisplayName, Status = j.Status, ErrorMessage = j.ErrorMessage, Metadata = j.Metadata, ChildJobs = j.ChildJobs.Select(c => new JobDto { Id = c.Id, CreatedTime = c.CreatedTime, LastUpdatedTime = c.LastUpdatedTime, ParentJobId = c.ParentJobId, JobType = c.JobType, DisplayName = c.DisplayName, Status = c.Status, ErrorMessage = c.ErrorMessage, Metadata = c.Metadata }) }); [Authorize] [UsePaging] //[UseProjection] [UseFiltering] [UseSorting] public IQueryable GetJobs(ReportingDbContext db) => db.Jobs.Select(j => new JobDto { Id = j.Id, CreatedTime = j.CreatedTime, LastUpdatedTime = j.LastUpdatedTime, ParentJobId = j.ParentJobId, JobType = j.JobType, DisplayName = j.DisplayName, Status = j.Status, ErrorMessage = j.ErrorMessage, Metadata = j.Metadata, ChildJobs = j.ChildJobs.Select(c => new JobDto { Id = c.Id, CreatedTime = c.CreatedTime, LastUpdatedTime = c.LastUpdatedTime, ParentJobId = c.ParentJobId, JobType = c.JobType, DisplayName = c.DisplayName, Status = c.Status, ErrorMessage = c.ErrorMessage, Metadata = c.Metadata }) }); }