diff --git a/back/src/Kyoo.Abstractions/Kyoo.Abstractions.csproj b/back/src/Kyoo.Abstractions/Kyoo.Abstractions.csproj index 3433f9f1..8903a847 100644 --- a/back/src/Kyoo.Abstractions/Kyoo.Abstractions.csproj +++ b/back/src/Kyoo.Abstractions/Kyoo.Abstractions.csproj @@ -8,6 +8,7 @@ + diff --git a/back/src/Kyoo.Abstractions/Models/Resources/Season.cs b/back/src/Kyoo.Abstractions/Models/Resources/Season.cs index 9d28c4ad..a5fc26c3 100644 --- a/back/src/Kyoo.Abstractions/Models/Resources/Season.cs +++ b/back/src/Kyoo.Abstractions/Models/Resources/Season.cs @@ -20,6 +20,7 @@ using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Text.RegularExpressions; +using EntityFrameworkCore.Projectables; using JetBrains.Annotations; using Kyoo.Abstractions.Controllers; using Kyoo.Abstractions.Models.Attributes; @@ -119,5 +120,13 @@ namespace Kyoo.Abstractions.Models /// The list of episodes that this season contains. /// [LoadableRelation] public ICollection? Episodes { get; set; } + + /// + /// The number of episodes in this season. + /// + [Projectable(UseMemberBody = nameof(_EpisodeCount))] + public int EpisodeCount { get; set; } + + private int _EpisodeCount => Episodes!.Count; } } diff --git a/back/src/Kyoo.Postgresql/Kyoo.Postgresql.csproj b/back/src/Kyoo.Postgresql/Kyoo.Postgresql.csproj index 9c727fa3..9c7dd385 100644 --- a/back/src/Kyoo.Postgresql/Kyoo.Postgresql.csproj +++ b/back/src/Kyoo.Postgresql/Kyoo.Postgresql.csproj @@ -7,6 +7,7 @@ + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/back/src/Kyoo.Postgresql/PostgresModule.cs b/back/src/Kyoo.Postgresql/PostgresModule.cs index 34289c10..1f7f46c9 100644 --- a/back/src/Kyoo.Postgresql/PostgresModule.cs +++ b/back/src/Kyoo.Postgresql/PostgresModule.cs @@ -87,7 +87,8 @@ namespace Kyoo.Postgresql ["MAXPOOLSIZE"] = "95", ["TIMEOUT"] = "30" }; - x.UseNpgsql(builder.ConnectionString); + x.UseNpgsql(builder.ConnectionString) + .UseProjectables(); if (_environment.IsDevelopment()) x.EnableDetailedErrors().EnableSensitiveDataLogging(); }, ServiceLifetime.Transient);