Add a firstEpisode field on the backend

This commit is contained in:
Zoe Roux 2023-10-31 23:51:07 +01:00
parent c4f1e420f8
commit e12a1d369d
2 changed files with 16 additions and 0 deletions

View File

@ -19,6 +19,8 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using System.Linq;
using EntityFrameworkCore.Projectables;
using Kyoo.Abstractions.Models.Attributes; using Kyoo.Abstractions.Models.Attributes;
using Kyoo.Utils; using Kyoo.Utils;
using Newtonsoft.Json; using Newtonsoft.Json;
@ -142,6 +144,18 @@ namespace Kyoo.Abstractions.Models
/// </summary> /// </summary>
[LoadableRelation] public ICollection<Collection>? Collections { get; set; } [LoadableRelation] public ICollection<Collection>? Collections { get; set; }
/// <summary>
/// The first episode of this show.
/// </summary>
[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();
/// <inheritdoc /> /// <inheritdoc />
public void OnMerge(object merged) public void OnMerge(object merged)
{ {

View File

@ -253,6 +253,8 @@ namespace Kyoo.Postgresql
{ {
base.OnModelCreating(modelBuilder); base.OnModelCreating(modelBuilder);
modelBuilder.Entity<Show>()
.Ignore(x => x.FirstEpisode);
modelBuilder.Entity<Episode>() modelBuilder.Entity<Episode>()
.Ignore(x => x.PreviousEpisode) .Ignore(x => x.PreviousEpisode)
.Ignore(x => x.NextEpisode); .Ignore(x => x.NextEpisode);