// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. 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<T, TFileInfo> : MutableDatabaseBackedStore<T> where T : class, IHasPrimaryKey, ISoftDelete, IHasFiles<TFileInfo> where TFileInfo : INamedFileInfo { protected MutableDatabaseBackedStoreWithFileIncludes(IDatabaseContextFactory contextFactory, Storage storage = null) : base(contextFactory, storage) { } protected override IQueryable<T> AddIncludesForConsumption(IQueryable<T> query) => base.AddIncludesForConsumption(query) .Include(s => s.Files).ThenInclude(f => f.FileInfo); protected override IQueryable<T> AddIncludesForDeletion(IQueryable<T> query) => base.AddIncludesForDeletion(query) .Include(s => s.Files); // don't include FileInfo. these are handled by the FileStore itself. } }