diff options
| author | JPVenson <JPVenson@users.noreply.github.com> | 2024-09-08 16:56:14 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-09-08 16:56:14 +0000 |
| commit | ee1bdf4e222125ed7382165fd7e09599ca4bd4aa (patch) | |
| tree | 78b1e180c2626ccfc483f8bff9ec861079a6d8e6 /Jellyfin.Server.Implementations/ModelConfiguration | |
| parent | d0b4b2ddb31a54f0705303ab8461be1125d66eab (diff) | |
WIP move baseitem to jellyfin.db
Diffstat (limited to 'Jellyfin.Server.Implementations/ModelConfiguration')
5 files changed, 122 insertions, 0 deletions
diff --git a/Jellyfin.Server.Implementations/ModelConfiguration/AncestorIdConfiguration.cs b/Jellyfin.Server.Implementations/ModelConfiguration/AncestorIdConfiguration.cs new file mode 100644 index 000000000..b7fe909dd --- /dev/null +++ b/Jellyfin.Server.Implementations/ModelConfiguration/AncestorIdConfiguration.cs @@ -0,0 +1,20 @@ +using System; +using Jellyfin.Data.Entities; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Metadata.Builders; + +namespace Jellyfin.Server.Implementations.ModelConfiguration; + +/// <summary> +/// AncestorId configuration. +/// </summary> +public class AncestorIdConfiguration : IEntityTypeConfiguration<AncestorId> +{ + /// <inheritdoc/> + public void Configure(EntityTypeBuilder<AncestorId> builder) + { + builder.HasKey(e => new { e.ItemId, e.Id }); + builder.HasIndex(e => e.Id); + builder.HasIndex(e => new { e.ItemId, e.AncestorIdText }); + } +} diff --git a/Jellyfin.Server.Implementations/ModelConfiguration/BaseItemConfiguration.cs b/Jellyfin.Server.Implementations/ModelConfiguration/BaseItemConfiguration.cs new file mode 100644 index 000000000..c0f09670d --- /dev/null +++ b/Jellyfin.Server.Implementations/ModelConfiguration/BaseItemConfiguration.cs @@ -0,0 +1,42 @@ +using System; +using Jellyfin.Data.Entities; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Metadata.Builders; + +namespace Jellyfin.Server.Implementations.ModelConfiguration; + +/// <summary> +/// Configuration for BaseItem. +/// </summary> +public class BaseItemConfiguration : IEntityTypeConfiguration<BaseItem> +{ + /// <inheritdoc/> + public void Configure(EntityTypeBuilder<BaseItem> builder) + { + builder.HasNoKey(); + builder.HasIndex(e => e.Path); + builder.HasIndex(e => e.ParentId); + builder.HasIndex(e => e.PresentationUniqueKey); + builder.HasIndex(e => new { e.Id, e.Type, e.IsFolder, e.IsVirtualItem }); + builder.HasIndex(e => new { e.UserDataKey, e.Type }); + + // covering index + builder.HasIndex(e => new { e.TopParentId, e.Id }); + // series + builder.HasIndex(e => new { e.Type, e.SeriesPresentationUniqueKey, e.PresentationUniqueKey, e.SortName }); + // series counts + // seriesdateplayed sort order + builder.HasIndex(e => new { e.Type, e.SeriesPresentationUniqueKey, e.IsFolder, e.IsVirtualItem }); + // live tv programs + builder.HasIndex(e => new { e.Type, e.TopParentId, e.StartDate }); + // covering index for getitemvalues + builder.HasIndex(e => new { e.Type, e.TopParentId, e.Id }); + // used by movie suggestions + builder.HasIndex(e => new { e.Type, e.TopParentId, e.PresentationUniqueKey }); + // latest items + builder.HasIndex(e => new { e.Type, e.TopParentId, e.IsVirtualItem, e.PresentationUniqueKey, e.DateCreated }); + builder.HasIndex(e => new { e.IsFolder, e.TopParentId, e.IsVirtualItem, e.PresentationUniqueKey, e.DateCreated }); + // resume + builder.HasIndex(e => new { e.MediaType, e.TopParentId, e.IsVirtualItem, e.PresentationUniqueKey }); + } +} diff --git a/Jellyfin.Server.Implementations/ModelConfiguration/ChapterConfiguration.cs b/Jellyfin.Server.Implementations/ModelConfiguration/ChapterConfiguration.cs new file mode 100644 index 000000000..0e7c88931 --- /dev/null +++ b/Jellyfin.Server.Implementations/ModelConfiguration/ChapterConfiguration.cs @@ -0,0 +1,20 @@ +using System; +using Jellyfin.Data.Entities; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Metadata.Builders; + +namespace Jellyfin.Server.Implementations.ModelConfiguration; + + +/// <summary> +/// Chapter configuration. +/// </summary> +public class ChapterConfiguration : IEntityTypeConfiguration<Chapter> +{ + /// <inheritdoc/> + public void Configure(EntityTypeBuilder<Chapter> builder) + { + builder.HasNoKey(); + builder.HasIndex(e => new { e.ItemId, e.ChapterIndex }); + } +} diff --git a/Jellyfin.Server.Implementations/ModelConfiguration/ItemValuesConfiguration.cs b/Jellyfin.Server.Implementations/ModelConfiguration/ItemValuesConfiguration.cs new file mode 100644 index 000000000..a7de6ec32 --- /dev/null +++ b/Jellyfin.Server.Implementations/ModelConfiguration/ItemValuesConfiguration.cs @@ -0,0 +1,20 @@ +using System; +using Jellyfin.Data.Entities; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Metadata.Builders; + +namespace Jellyfin.Server.Implementations.ModelConfiguration; + +/// <summary> +/// itemvalues Configuration. +/// </summary> +public class ItemValuesConfiguration : IEntityTypeConfiguration<ItemValue> +{ + /// <inheritdoc/> + public void Configure(EntityTypeBuilder<ItemValue> builder) + { + builder.HasNoKey(); + builder.HasIndex(e => new { e.ItemId, e.Type, e.CleanValue }); + builder.HasIndex(e => new { e.ItemId, e.Type, e.Value }); + } +} diff --git a/Jellyfin.Server.Implementations/ModelConfiguration/PeopleConfiguration.cs b/Jellyfin.Server.Implementations/ModelConfiguration/PeopleConfiguration.cs new file mode 100644 index 000000000..f6cd39c24 --- /dev/null +++ b/Jellyfin.Server.Implementations/ModelConfiguration/PeopleConfiguration.cs @@ -0,0 +1,20 @@ +using System; +using Jellyfin.Data.Entities; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Metadata.Builders; + +namespace Jellyfin.Server.Implementations.ModelConfiguration; + +/// <summary> +/// People configuration. +/// </summary> +public class PeopleConfiguration : IEntityTypeConfiguration<People> +{ + /// <inheritdoc/> + public void Configure(EntityTypeBuilder<People> builder) + { + builder.HasNoKey(); + builder.HasIndex(e => new { e.ItemId, e.ListOrder }); + builder.HasIndex(e => e.Name); + } +} |
