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