#pragma warning disable CA1307 using System; using System.Linq; using Jellyfin.Data.Entities; using MediaBrowser.Controller; using Microsoft.EntityFrameworkCore; namespace Jellyfin.Server.Implementations.Users { /// /// Manages the storage and retrieval of display preferences through Entity Framework. /// public class DisplayPreferencesManager : IDisplayPreferencesManager { private readonly JellyfinDbProvider _dbProvider; /// /// Initializes a new instance of the class. /// /// The Jellyfin db provider. public DisplayPreferencesManager(JellyfinDbProvider dbProvider) { _dbProvider = dbProvider; } /// public DisplayPreferences GetDisplayPreferences(Guid userId, string client) { using var dbContext = _dbProvider.CreateContext(); var prefs = dbContext.DisplayPreferences .Include(pref => pref.HomeSections) .FirstOrDefault(pref => pref.UserId == userId && pref.ItemId == null && string.Equals(pref.Client, client)); if (prefs == null) { prefs = new DisplayPreferences(client, userId); dbContext.DisplayPreferences.Add(prefs); } return prefs; } /// public void SaveChanges(DisplayPreferences preferences) { using var dbContext = _dbProvider.CreateContext(); dbContext.Update(preferences); dbContext.SaveChanges(); } } }