From 3c835d9cc3ed739ddebdc2f071e0d43e68beb950 Mon Sep 17 00:00:00 2001 From: gamer147 Date: Fri, 30 Jan 2026 16:38:46 -0500 Subject: [PATCH] [FA-misc] Add Job entity and ReportingDbContext --- .../Models/Job.cs | 18 +++++++++++ .../Services/ReportingDbContext.cs | 32 +++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 FictionArchive.Service.ReportingService/Models/Job.cs create mode 100644 FictionArchive.Service.ReportingService/Services/ReportingDbContext.cs diff --git a/FictionArchive.Service.ReportingService/Models/Job.cs b/FictionArchive.Service.ReportingService/Models/Job.cs new file mode 100644 index 0000000..e79a2b0 --- /dev/null +++ b/FictionArchive.Service.ReportingService/Models/Job.cs @@ -0,0 +1,18 @@ +using FictionArchive.Common.Enums; +using FictionArchive.Service.Shared.Models; + +namespace FictionArchive.Service.ReportingService.Models; + +public class Job : BaseEntity +{ + public Guid? ParentJobId { get; set; } + public string JobType { get; set; } = null!; + public string DisplayName { get; set; } = null!; + public JobStatus Status { get; set; } + public string? ErrorMessage { get; set; } + public Dictionary? Metadata { get; set; } + + // Navigation + public Job? ParentJob { get; set; } + public List ChildJobs { get; set; } = []; +} diff --git a/FictionArchive.Service.ReportingService/Services/ReportingDbContext.cs b/FictionArchive.Service.ReportingService/Services/ReportingDbContext.cs new file mode 100644 index 0000000..73e5068 --- /dev/null +++ b/FictionArchive.Service.ReportingService/Services/ReportingDbContext.cs @@ -0,0 +1,32 @@ +using FictionArchive.Service.ReportingService.Models; +using FictionArchive.Service.Shared.Services.Database; +using Microsoft.EntityFrameworkCore; + +namespace FictionArchive.Service.ReportingService.Services; + +public class ReportingDbContext : FictionArchiveDbContext +{ + public DbSet Jobs { get; set; } + + public ReportingDbContext(DbContextOptions options, ILogger logger) : base(options, logger) + { + } + + protected override void OnModelCreating(ModelBuilder modelBuilder) + { + base.OnModelCreating(modelBuilder); + + modelBuilder.Entity(entity => + { + entity.HasIndex(j => j.ParentJobId); + + entity.Property(j => j.Metadata) + .HasColumnType("jsonb"); + + entity.HasOne(j => j.ParentJob) + .WithMany(j => j.ChildJobs) + .HasForeignKey(j => j.ParentJobId) + .OnDelete(DeleteBehavior.SetNull); + }); + } +}