using System; using Umbraco.Core.Events; using Umbraco.Core.Logging; using Umbraco.Core.Persistence.Querying; using Umbraco.Core.Scoping; namespace Umbraco.Core.Services.Implement { /// /// Represents a service that works on top of repositories. /// public abstract class RepositoryService : IService { protected ILogger Logger { get; } protected IEventMessagesFactory EventMessagesFactory { get; } protected IScopeProvider ScopeProvider { get; } protected RepositoryService(IScopeProvider provider, ILogger logger, IEventMessagesFactory eventMessagesFactory) { Logger = logger ?? throw new ArgumentNullException(nameof(logger)); EventMessagesFactory = eventMessagesFactory ?? throw new ArgumentNullException(nameof(eventMessagesFactory)); ScopeProvider = provider ?? throw new ArgumentNullException(nameof(provider)); } protected IQuery Query() => ScopeProvider.SqlContext.Query(); } }