From e12a1d369d2cf7d2920ea836ae12778b5ab2df64 Mon Sep 17 00:00:00 2001 From: Zoe Roux Date: Tue, 31 Oct 2023 23:51:07 +0100 Subject: [PATCH] Add a firstEpisode field on the backend --- .../src/Kyoo.Abstractions/Models/Resources/Show.cs | 14 ++++++++++++++ back/src/Kyoo.Postgresql/DatabaseContext.cs | 2 ++ 2 files changed, 16 insertions(+) diff --git a/back/src/Kyoo.Abstractions/Models/Resources/Show.cs b/back/src/Kyoo.Abstractions/Models/Resources/Show.cs index 7e35c482..52b24707 100644 --- a/back/src/Kyoo.Abstractions/Models/Resources/Show.cs +++ b/back/src/Kyoo.Abstractions/Models/Resources/Show.cs @@ -19,6 +19,8 @@ using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; +using System.Linq; +using EntityFrameworkCore.Projectables; using Kyoo.Abstractions.Models.Attributes; using Kyoo.Utils; using Newtonsoft.Json; @@ -142,6 +144,18 @@ namespace Kyoo.Abstractions.Models /// [LoadableRelation] public ICollection? Collections { get; set; } + /// + /// The first episode of this show. + /// + [Projectable(UseMemberBody = nameof(_FirstEpisode), OnlyOnInclude = true)] + [LoadableRelation] public Episode? FirstEpisode { get; set; } + + private Episode? _FirstEpisode => Episodes! + .OrderBy(x => x.AbsoluteNumber) + .ThenBy(x => x.SeasonNumber) + .ThenBy(x => x.EpisodeNumber) + .FirstOrDefault(); + /// public void OnMerge(object merged) { diff --git a/back/src/Kyoo.Postgresql/DatabaseContext.cs b/back/src/Kyoo.Postgresql/DatabaseContext.cs index 996139cc..4399841d 100644 --- a/back/src/Kyoo.Postgresql/DatabaseContext.cs +++ b/back/src/Kyoo.Postgresql/DatabaseContext.cs @@ -253,6 +253,8 @@ namespace Kyoo.Postgresql { base.OnModelCreating(modelBuilder); + modelBuilder.Entity() + .Ignore(x => x.FirstEpisode); modelBuilder.Entity() .Ignore(x => x.PreviousEpisode) .Ignore(x => x.NextEpisode);