using Kavita.Common.Extensions; using Kavita.Models.Entities; using Kavita.Models.Entities.Enums; using Kavita.Models.Entities.User; namespace Kavita.Models.Builders; public class AppUserReadingProfileBuilder { private readonly AppUserReadingProfile _profile; public AppUserReadingProfile Build() => _profile; /// /// The profile's kind will be unless overwritten with /// /// public AppUserReadingProfileBuilder(int userId) { _profile = new AppUserReadingProfile { AppUserId = userId, Kind = ReadingProfileKind.User, SeriesIds = [], LibraryIds = [], DeviceIds = [], }; } public AppUserReadingProfileBuilder WithSeries(Series series) { _profile.SeriesIds.Add(series.Id); return this; } public AppUserReadingProfileBuilder WithLibrary(Library library) { _profile.LibraryIds.Add(library.Id); return this; } public AppUserReadingProfileBuilder WithKind(ReadingProfileKind kind) { _profile.Kind = kind; return this; } public AppUserReadingProfileBuilder WithName(string name) { _profile.Name = name; _profile.NormalizedName = name.ToNormalized(); return this; } public AppUserReadingProfileBuilder WithDeviceId(int deviceId) { if (_profile.DeviceIds.Contains(deviceId)) return this; _profile.DeviceIds.Add(deviceId); return this; } }