using System; using Umbraco.Cms.Core; using Umbraco.Cms.Core.Persistence.Repositories; using Umbraco.Cms.Infrastructure.Persistence.Dtos; using Umbraco.Cms.Infrastructure.Scoping; using Umbraco.Extensions; namespace Umbraco.Cms.Infrastructure.Persistence.Repositories.Implement; public class NodeCountRepository : INodeCountRepository { private readonly IScopeAccessor _scopeAccessor; public NodeCountRepository(IScopeAccessor scopeAccessor) => _scopeAccessor = scopeAccessor; /// public int GetNodeCount(Guid nodeType) { var query = _scopeAccessor.AmbientScope?.Database.SqlContext.Sql() .SelectCount() .From() .Where(x => x.NodeObjectType == nodeType && x.Trashed == false); return _scopeAccessor.AmbientScope?.Database.ExecuteScalar(query) ?? 0; } public int GetMediaCount() { var query = _scopeAccessor.AmbientScope?.Database.SqlContext.Sql() .SelectCount() .From() .InnerJoin() .On(left => left.NodeId, right => right.NodeId) .InnerJoin() .On(left => left.ContentTypeId, right => right.NodeId) .Where(x => x.NodeObjectType == Constants.ObjectTypes.Media) .Where(x => !x.Trashed) .Where(x => x.Alias != Constants.Conventions.MediaTypes.Folder); return _scopeAccessor.AmbientScope?.Database.ExecuteScalar(query) ?? 0; } }