< Summary - Jellyfin

Information
Class: Jellyfin.Database.Implementations.ModelConfiguration.UserDataConfiguration
Assembly: Jellyfin.Database.Implementations
File(s): /srv/git/jellyfin/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/UserDataConfiguration.cs
Line coverage
100%
Covered lines: 10
Uncovered lines: 0
Coverable lines: 10
Total lines: 25
Line coverage: 100%
Branch coverage
N/A
Covered branches: 0
Total branches: 0
Branch coverage: N/A
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Coverage history

Coverage history 0 25 50 75 100 1/23/2026 - 12:11:06 AM Line coverage: 100% (7/7) Total lines: 225/4/2026 - 12:15:16 AM Line coverage: 100% (10/10) Total lines: 25

Coverage delta

Coverage delta 1 -1

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
Configure(...)100%11100%

File(s)

/srv/git/jellyfin/src/Jellyfin.Database/Jellyfin.Database.Implementations/ModelConfiguration/UserDataConfiguration.cs

#LineLine coverage
 1using Jellyfin.Database.Implementations.Entities;
 2using Microsoft.EntityFrameworkCore;
 3using Microsoft.EntityFrameworkCore.Metadata.Builders;
 4
 5namespace Jellyfin.Database.Implementations.ModelConfiguration;
 6
 7/// <summary>
 8/// FluentAPI configuration for the UserData entity.
 9/// </summary>
 10public class UserDataConfiguration : IEntityTypeConfiguration<UserData>
 11{
 12    /// <inheritdoc/>
 13    public void Configure(EntityTypeBuilder<UserData> builder)
 14    {
 215        builder.HasKey(d => new { d.ItemId, d.UserId, d.CustomDataKey });
 216        builder.HasIndex(d => new { d.ItemId, d.UserId, d.Played });
 217        builder.HasIndex(d => new { d.ItemId, d.UserId, d.PlaybackPositionTicks });
 218        builder.HasIndex(d => new { d.ItemId, d.UserId, d.IsFavorite });
 219        builder.HasIndex(d => new { d.ItemId, d.UserId, d.LastPlayedDate });
 220        builder.HasIndex(d => new { d.UserId, d.ItemId, d.LastPlayedDate });
 221        builder.HasIndex(d => new { d.UserId, d.Played, d.ItemId });
 222        builder.HasIndex(d => new { d.UserId, d.IsFavorite, d.ItemId });
 223        builder.HasOne(e => e.Item).WithMany(e => e.UserData);
 224    }
 25}