#pragma warning disable CA1307 using System; using System.Collections.Generic; 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 JellyfinDb _dbContext; /// /// Initializes a new instance of the class. /// /// The database context. public DisplayPreferencesManager(JellyfinDb dbContext) { _dbContext = dbContext; } /// public DisplayPreferences GetDisplayPreferences(Guid userId, string client) { var prefs = _dbContext.DisplayPreferences .Include(pref => pref.HomeSections) .FirstOrDefault(pref => pref.UserId == userId && string.Equals(pref.Client, client)); if (prefs == null) { prefs = new DisplayPreferences(userId, client); _dbContext.DisplayPreferences.Add(prefs); } return prefs; } /// public ItemDisplayPreferences GetItemDisplayPreferences(Guid userId, Guid itemId, string client) { var prefs = _dbContext.ItemDisplayPreferences .FirstOrDefault(pref => pref.UserId == userId && pref.ItemId == itemId && string.Equals(pref.Client, client)); if (prefs == null) { prefs = new ItemDisplayPreferences(userId, Guid.Empty, client); _dbContext.ItemDisplayPreferences.Add(prefs); } return prefs; } /// public IList ListItemDisplayPreferences(Guid userId, string client) { return _dbContext.ItemDisplayPreferences .Where(prefs => prefs.UserId == userId && prefs.ItemId != Guid.Empty && string.Equals(prefs.Client, client)) .ToList(); } /// public void SaveChanges() { _dbContext.SaveChanges(); } } }