// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. // See the LICENCE file in the repository root for full licence text. using System.Linq; using Microsoft.EntityFrameworkCore; using osu.Framework.Platform; namespace osu.Game.Database { public abstract class MutableDatabaseBackedStoreWithFileIncludes : MutableDatabaseBackedStore where T : class, IHasPrimaryKey, ISoftDelete, IHasFiles where TFileInfo : INamedFileInfo { protected MutableDatabaseBackedStoreWithFileIncludes(IDatabaseContextFactory contextFactory, Storage storage = null) : base(contextFactory, storage) { } protected override IQueryable AddIncludesForConsumption(IQueryable query) => base.AddIncludesForConsumption(query) .Include(s => s.Files).ThenInclude(f => f.FileInfo); protected override IQueryable AddIncludesForDeletion(IQueryable query) => base.AddIncludesForDeletion(query) .Include(s => s.Files); // don't include FileInfo. these are handled by the FileStore itself. } }