diff --git a/src/Umbraco.Core/Composing/CompositionRoots/RepositoryCompositionRoot.cs b/src/Umbraco.Core/Composing/CompositionRoots/RepositoryCompositionRoot.cs index a4bc34247e..26f4d478e3 100644 --- a/src/Umbraco.Core/Composing/CompositionRoots/RepositoryCompositionRoot.cs +++ b/src/Umbraco.Core/Composing/CompositionRoots/RepositoryCompositionRoot.cs @@ -3,7 +3,7 @@ using LightInject; using Umbraco.Core.Cache; using Umbraco.Core.Persistence; using Umbraco.Core.Persistence.Repositories; -using Umbraco.Core.Persistence.Repositories.Interfaces; +using Umbraco.Core.Persistence.Repositories.Implement; using Umbraco.Core.Persistence.UnitOfWork; namespace Umbraco.Core.Composing.CompositionRoots @@ -46,9 +46,9 @@ namespace Umbraco.Core.Composing.CompositionRoots container.Register(); container.Register(); container.Register(); - container.Register(); + container.Register(); container.Register(); - container.Register(); + container.Register(); container.Register(); container.Register(); container.Register(); diff --git a/src/Umbraco.Core/Persistence/Factories/MemberTypeReadOnlyFactory.cs b/src/Umbraco.Core/Persistence/Factories/MemberTypeReadOnlyFactory.cs index 00dc1a83ce..576f9c2090 100644 --- a/src/Umbraco.Core/Persistence/Factories/MemberTypeReadOnlyFactory.cs +++ b/src/Umbraco.Core/Persistence/Factories/MemberTypeReadOnlyFactory.cs @@ -4,6 +4,7 @@ using System.Linq; using Umbraco.Core.Models; using Umbraco.Core.Models.Rdbms; using Umbraco.Core.Persistence.Repositories; +using Umbraco.Core.Persistence.Repositories.Implement; namespace Umbraco.Core.Persistence.Factories { diff --git a/src/Umbraco.Core/Persistence/IQueryRepository.cs b/src/Umbraco.Core/Persistence/IQueryRepository.cs new file mode 100644 index 0000000000..3e23b72186 --- /dev/null +++ b/src/Umbraco.Core/Persistence/IQueryRepository.cs @@ -0,0 +1,21 @@ +using System.Collections.Generic; +using Umbraco.Core.Persistence.Querying; + +namespace Umbraco.Core.Persistence +{ + /// + /// Defines the base implementation of a querying repository. + /// + public interface IQueryRepository : IRepository + { + /// + /// Gets entities. + /// + IEnumerable Get(IQuery query); + + /// + /// Counts entities. + /// + int Count(IQuery query); + } +} diff --git a/src/Umbraco.Core/Persistence/IReadRepository.cs b/src/Umbraco.Core/Persistence/IReadRepository.cs new file mode 100644 index 0000000000..8b2a4c2533 --- /dev/null +++ b/src/Umbraco.Core/Persistence/IReadRepository.cs @@ -0,0 +1,25 @@ +using System.Collections.Generic; + +namespace Umbraco.Core.Persistence +{ + /// + /// Defines the base implementation of a reading repository. + /// + public interface IReadRepository : IRepository + { + /// + /// Gets an entity. + /// + TEntity Get(TId id); + + /// + /// Gets entities. + /// + IEnumerable GetMany(params TId[] ids); + + /// + /// Gets a value indicating whether an entity exists. + /// + bool Exists(TId id); + } +} \ No newline at end of file diff --git a/src/Umbraco.Core/Persistence/IReadWriteQueryRepository.cs b/src/Umbraco.Core/Persistence/IReadWriteQueryRepository.cs new file mode 100644 index 0000000000..aaaf276e0b --- /dev/null +++ b/src/Umbraco.Core/Persistence/IReadWriteQueryRepository.cs @@ -0,0 +1,8 @@ +namespace Umbraco.Core.Persistence +{ + /// + /// Defines the base implementation of a reading, writing and querying repository. + /// + public interface IReadWriteQueryRepository : IReadRepository, IWriteRepository, IQueryRepository + { } +} diff --git a/src/Umbraco.Core/Persistence/IRepository.cs b/src/Umbraco.Core/Persistence/IRepository.cs new file mode 100644 index 0000000000..9c51a8affd --- /dev/null +++ b/src/Umbraco.Core/Persistence/IRepository.cs @@ -0,0 +1,8 @@ +namespace Umbraco.Core.Persistence +{ + /// + /// Defines the base implementation of a repository. + /// + public interface IRepository + { } +} diff --git a/src/Umbraco.Core/Persistence/IWriteRepository.cs b/src/Umbraco.Core/Persistence/IWriteRepository.cs new file mode 100644 index 0000000000..26687648b9 --- /dev/null +++ b/src/Umbraco.Core/Persistence/IWriteRepository.cs @@ -0,0 +1,19 @@ +namespace Umbraco.Core.Persistence +{ + /// + /// Defines the base implementation of a writing repository. + /// + public interface IWriteRepository : IRepository + { + /// + /// Saves an entity. + /// + void Save(TEntity entity); + + /// + /// Deletes an entity. + /// + /// + void Delete(TEntity entity); + } +} \ No newline at end of file diff --git a/src/Umbraco.Core/Persistence/Repositories/Interfaces/IAuditRepository.cs b/src/Umbraco.Core/Persistence/Repositories/IAuditRepository.cs similarity index 74% rename from src/Umbraco.Core/Persistence/Repositories/Interfaces/IAuditRepository.cs rename to src/Umbraco.Core/Persistence/Repositories/IAuditRepository.cs index 9d8738102f..851fd2fe56 100644 --- a/src/Umbraco.Core/Persistence/Repositories/Interfaces/IAuditRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/IAuditRepository.cs @@ -3,7 +3,7 @@ using Umbraco.Core.Persistence.UnitOfWork; namespace Umbraco.Core.Persistence.Repositories { - public interface IAuditRepository : IUnitOfWorkRepository, IQueryRepository + public interface IAuditRepository : IUnitOfWorkRepository, IReadRepository, IWriteRepository, IQueryRepository { void CleanLogs(int maximumAgeOfLogsInMinutes); } diff --git a/src/Umbraco.Core/Persistence/Repositories/IContentRepository.cs b/src/Umbraco.Core/Persistence/Repositories/IContentRepository.cs new file mode 100644 index 0000000000..8572f7e125 --- /dev/null +++ b/src/Umbraco.Core/Persistence/Repositories/IContentRepository.cs @@ -0,0 +1,73 @@ +using System; +using System.Collections.Generic; +using Umbraco.Core.Models.EntityBase; +using Umbraco.Core.Persistence.DatabaseModelDefinitions; +using Umbraco.Core.Persistence.Querying; + +namespace Umbraco.Core.Persistence.Repositories +{ + /// + /// Defines the base implementation of a repository for content items. + /// + public interface IContentRepository : IReadWriteQueryRepository + where TEntity : IUmbracoEntity + { + /// + /// Gets versions. + /// + /// Current version is first, and then versions are ordered with most recent first. + IEnumerable GetAllVersions(int nodeId); + + /// + /// Gets version identifiers. + /// + /// Current version is first, and then versions are ordered with most recent first. + IEnumerable GetVersionIds(int id, int topRows); + + /// + /// Gets a version. + /// + TEntity GetVersion(int versionId); + + /// + /// Deletes a version. + /// + void DeleteVersion(int versionId); + + /// + /// Deletes all versions older than a date. + /// + void DeleteVersions(int nodeId, DateTime versionDate); + + /// + /// Gets the recycle bin identifier. + /// + int RecycleBinId { get; } + + /// + /// Gets the recycle bin content. + /// + IEnumerable GetRecycleBin(); + + /// + /// Gets the count of content items of a given content type. + /// + int Count(string contentTypeAlias = null); + + /// + /// Gets the count of child content items of a given parent content, of a given content type. + /// + int CountChildren(int parentId, string contentTypeAlias = null); + + /// + /// Gets the count of descendant content items of a given parent content, of a given content type. + /// + int CountDescendants(int parentId, string contentTypeAlias = null); + + /// + /// Gets paged content items. + /// + IEnumerable GetPage(IQuery query, long pageIndex, int pageSize, out long totalRecords, + string orderBy, Direction orderDirection, bool orderBySystemField, IQuery filter = null); + } +} diff --git a/src/Umbraco.Core/Persistence/Repositories/Interfaces/IContentTypeRepository.cs b/src/Umbraco.Core/Persistence/Repositories/IContentTypeRepository.cs similarity index 97% rename from src/Umbraco.Core/Persistence/Repositories/Interfaces/IContentTypeRepository.cs rename to src/Umbraco.Core/Persistence/Repositories/IContentTypeRepository.cs index 8a2060ec01..d0fec639fe 100644 --- a/src/Umbraco.Core/Persistence/Repositories/Interfaces/IContentTypeRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/IContentTypeRepository.cs @@ -1,35 +1,35 @@ -using System; -using System.Collections.Generic; -using Umbraco.Core.Models; -using Umbraco.Core.Persistence.Querying; - -namespace Umbraco.Core.Persistence.Repositories -{ - public interface IContentTypeRepository : IContentTypeRepositoryBase - { - /// - /// Gets all entities of the specified query - /// - /// - /// An enumerable list of objects - IEnumerable GetByQuery(IQuery query); - - /// - /// Gets all property type aliases. - /// - /// - IEnumerable GetAllPropertyTypeAliases(); - - /// - /// Gets all content type aliases - /// - /// - /// If this list is empty, it will return all content type aliases for media, members and content, otherwise - /// it will only return content type aliases for the object types specified - /// - /// - IEnumerable GetAllContentTypeAliases(params Guid[] objectTypes); - - IEnumerable GetAllContentTypeIds(string[] aliases); - } -} +using System; +using System.Collections.Generic; +using Umbraco.Core.Models; +using Umbraco.Core.Persistence.Querying; + +namespace Umbraco.Core.Persistence.Repositories +{ + public interface IContentTypeRepository : IContentTypeRepositoryBase + { + /// + /// Gets all entities of the specified query + /// + /// + /// An enumerable list of objects + IEnumerable GetByQuery(IQuery query); + + /// + /// Gets all property type aliases. + /// + /// + IEnumerable GetAllPropertyTypeAliases(); + + /// + /// Gets all content type aliases + /// + /// + /// If this list is empty, it will return all content type aliases for media, members and content, otherwise + /// it will only return content type aliases for the object types specified + /// + /// + IEnumerable GetAllContentTypeAliases(params Guid[] objectTypes); + + IEnumerable GetAllContentTypeIds(string[] aliases); + } +} diff --git a/src/Umbraco.Core/Persistence/Repositories/Interfaces/IContentTypeRepositoryBase.cs b/src/Umbraco.Core/Persistence/Repositories/IContentTypeRepositoryBase.cs similarity index 89% rename from src/Umbraco.Core/Persistence/Repositories/Interfaces/IContentTypeRepositoryBase.cs rename to src/Umbraco.Core/Persistence/Repositories/IContentTypeRepositoryBase.cs index db134a8a40..f5e9013082 100644 --- a/src/Umbraco.Core/Persistence/Repositories/Interfaces/IContentTypeRepositoryBase.cs +++ b/src/Umbraco.Core/Persistence/Repositories/IContentTypeRepositoryBase.cs @@ -5,7 +5,7 @@ using Umbraco.Core.Models; namespace Umbraco.Core.Persistence.Repositories { - public interface IContentTypeRepositoryBase : IQueryRepository, IReadRepository + public interface IContentTypeRepositoryBase : IReadWriteQueryRepository, IReadRepository where TItem : IContentTypeComposition { TItem Get(string alias); diff --git a/src/Umbraco.Core/Persistence/Repositories/Interfaces/IDataTypeContainerRepository.cs b/src/Umbraco.Core/Persistence/Repositories/IDataTypeContainerRepository.cs similarity index 100% rename from src/Umbraco.Core/Persistence/Repositories/Interfaces/IDataTypeContainerRepository.cs rename to src/Umbraco.Core/Persistence/Repositories/IDataTypeContainerRepository.cs diff --git a/src/Umbraco.Core/Persistence/Repositories/Interfaces/IDataTypeDefinitionRepository.cs b/src/Umbraco.Core/Persistence/Repositories/IDataTypeDefinitionRepository.cs similarity index 72% rename from src/Umbraco.Core/Persistence/Repositories/Interfaces/IDataTypeDefinitionRepository.cs rename to src/Umbraco.Core/Persistence/Repositories/IDataTypeDefinitionRepository.cs index 684fd8be59..20fd586d45 100644 --- a/src/Umbraco.Core/Persistence/Repositories/Interfaces/IDataTypeDefinitionRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/IDataTypeDefinitionRepository.cs @@ -1,19 +1,17 @@ -using System; -using System.Collections.Generic; -using Umbraco.Core.Events; -using Umbraco.Core.Models; -using Umbraco.Core.Persistence.UnitOfWork; - -namespace Umbraco.Core.Persistence.Repositories -{ - public interface IDataTypeDefinitionRepository : IQueryRepository - { - - PreValueCollection GetPreValuesCollectionByDataTypeId(int dataTypeId); - string GetPreValueAsString(int preValueId); - - void AddOrUpdatePreValues(IDataTypeDefinition dataType, IDictionary values); - void AddOrUpdatePreValues(int dataTypeId, IDictionary values); - IEnumerable> Move(IDataTypeDefinition toMove, EntityContainer container); - } -} +using System.Collections.Generic; +using Umbraco.Core.Events; +using Umbraco.Core.Models; + +namespace Umbraco.Core.Persistence.Repositories +{ + public interface IDataTypeDefinitionRepository : IReadWriteQueryRepository + { + + PreValueCollection GetPreValuesCollectionByDataTypeId(int dataTypeId); + string GetPreValueAsString(int preValueId); + + void AddOrUpdatePreValues(IDataTypeDefinition dataType, IDictionary values); + void AddOrUpdatePreValues(int dataTypeId, IDictionary values); + IEnumerable> Move(IDataTypeDefinition toMove, EntityContainer container); + } +} diff --git a/src/Umbraco.Core/Persistence/Repositories/Interfaces/IDictionaryRepository.cs b/src/Umbraco.Core/Persistence/Repositories/IDictionaryRepository.cs similarity index 79% rename from src/Umbraco.Core/Persistence/Repositories/Interfaces/IDictionaryRepository.cs rename to src/Umbraco.Core/Persistence/Repositories/IDictionaryRepository.cs index 351320395b..6314b01374 100644 --- a/src/Umbraco.Core/Persistence/Repositories/Interfaces/IDictionaryRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/IDictionaryRepository.cs @@ -1,14 +1,14 @@ -using System; -using System.Collections.Generic; -using Umbraco.Core.Models; - -namespace Umbraco.Core.Persistence.Repositories -{ - public interface IDictionaryRepository : IQueryRepository - { - IDictionaryItem Get(Guid uniqueId); - IDictionaryItem Get(string key); - IEnumerable GetDictionaryItemDescendants(Guid? parentId); - Dictionary GetDictionaryItemKeyMap(); - } -} +using System; +using System.Collections.Generic; +using Umbraco.Core.Models; + +namespace Umbraco.Core.Persistence.Repositories +{ + public interface IDictionaryRepository : IReadWriteQueryRepository + { + IDictionaryItem Get(Guid uniqueId); + IDictionaryItem Get(string key); + IEnumerable GetDictionaryItemDescendants(Guid? parentId); + Dictionary GetDictionaryItemKeyMap(); + } +} diff --git a/src/Umbraco.Core/Persistence/Repositories/IDocumentBlueprintRepository.cs b/src/Umbraco.Core/Persistence/Repositories/IDocumentBlueprintRepository.cs new file mode 100644 index 0000000000..c52601d629 --- /dev/null +++ b/src/Umbraco.Core/Persistence/Repositories/IDocumentBlueprintRepository.cs @@ -0,0 +1,5 @@ +namespace Umbraco.Core.Persistence.Repositories +{ + interface IDocumentBlueprintRepository : IDocumentRepository + { } +} diff --git a/src/Umbraco.Core/Persistence/Repositories/Interfaces/IContentRepository.cs b/src/Umbraco.Core/Persistence/Repositories/IDocumentRepository.cs similarity index 91% rename from src/Umbraco.Core/Persistence/Repositories/Interfaces/IContentRepository.cs rename to src/Umbraco.Core/Persistence/Repositories/IDocumentRepository.cs index 6f93338f97..bf6fda3758 100644 --- a/src/Umbraco.Core/Persistence/Repositories/Interfaces/IContentRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/IDocumentRepository.cs @@ -1,56 +1,56 @@ -using System; -using System.Collections.Generic; -using Umbraco.Core.Models; -using Umbraco.Core.Models.Membership; - -namespace Umbraco.Core.Persistence.Repositories -{ - public interface IContentRepository : IRepositoryVersionable, IRecycleBinRepository, IReadRepository - { - /// - /// Get the count of published items - /// - /// - /// - /// We require this on the repo because the IQuery{IContent} cannot supply the 'newest' parameter - /// - int CountPublished(string contentTypeAlias = null); - - bool IsPathPublished(IContent content); - - /// - /// Used to bulk update the permissions set for a content item. This will replace all permissions - /// assigned to an entity with a list of user id & permission pairs. - /// - /// - void ReplaceContentPermissions(EntityPermissionSet permissionSet); - - /// - /// Assigns a single permission to the current content item for the specified user group ids - /// - /// - /// - /// - void AssignEntityPermission(IContent entity, char permission, IEnumerable groupIds); - - /// - /// Gets the explicit list of permissions for the content item - /// - /// - /// - EntityPermissionCollection GetPermissionsForEntity(int entityId); - - ///// - ///// Gets the implicit/inherited list of permissions for the content item - ///// - ///// - ///// - //IEnumerable GetPermissionsForPath(string path); - - /// - /// Used to add/update a permission for a content item - /// - /// - void AddOrUpdatePermissions(ContentPermissionSet permission); - } -} +using System; +using System.Collections.Generic; +using Umbraco.Core.Models; +using Umbraco.Core.Models.Membership; + +namespace Umbraco.Core.Persistence.Repositories +{ + public interface IDocumentRepository : IContentRepository, IReadRepository + { + /// + /// Get the count of published items + /// + /// + /// + /// We require this on the repo because the IQuery{IContent} cannot supply the 'newest' parameter + /// + int CountPublished(string contentTypeAlias = null); + + bool IsPathPublished(IContent content); + + /// + /// Used to bulk update the permissions set for a content item. This will replace all permissions + /// assigned to an entity with a list of user id & permission pairs. + /// + /// + void ReplaceContentPermissions(EntityPermissionSet permissionSet); + + /// + /// Assigns a single permission to the current content item for the specified user group ids + /// + /// + /// + /// + void AssignEntityPermission(IContent entity, char permission, IEnumerable groupIds); + + /// + /// Gets the explicit list of permissions for the content item + /// + /// + /// + EntityPermissionCollection GetPermissionsForEntity(int entityId); + + ///// + ///// Gets the implicit/inherited list of permissions for the content item + ///// + ///// + ///// + //IEnumerable GetPermissionsForPath(string path); + + /// + /// Used to add/update a permission for a content item + /// + /// + void AddOrUpdatePermissions(ContentPermissionSet permission); + } +} diff --git a/src/Umbraco.Core/Persistence/Repositories/Interfaces/IDocumentTypeContainerRepository.cs b/src/Umbraco.Core/Persistence/Repositories/IDocumentTypeContainerRepository.cs similarity index 100% rename from src/Umbraco.Core/Persistence/Repositories/Interfaces/IDocumentTypeContainerRepository.cs rename to src/Umbraco.Core/Persistence/Repositories/IDocumentTypeContainerRepository.cs diff --git a/src/Umbraco.Core/Persistence/Repositories/Interfaces/IDomainRepository.cs b/src/Umbraco.Core/Persistence/Repositories/IDomainRepository.cs similarity index 81% rename from src/Umbraco.Core/Persistence/Repositories/Interfaces/IDomainRepository.cs rename to src/Umbraco.Core/Persistence/Repositories/IDomainRepository.cs index 04d748326e..1542f54801 100644 --- a/src/Umbraco.Core/Persistence/Repositories/Interfaces/IDomainRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/IDomainRepository.cs @@ -3,7 +3,7 @@ using Umbraco.Core.Models; namespace Umbraco.Core.Persistence.Repositories { - public interface IDomainRepository : IQueryRepository + public interface IDomainRepository : IReadWriteQueryRepository { IDomain GetByName(string domainName); bool Exists(string domainName); diff --git a/src/Umbraco.Core/Persistence/Repositories/IEntityContainerRepository.cs b/src/Umbraco.Core/Persistence/Repositories/IEntityContainerRepository.cs new file mode 100644 index 0000000000..47f0cee52b --- /dev/null +++ b/src/Umbraco.Core/Persistence/Repositories/IEntityContainerRepository.cs @@ -0,0 +1,7 @@ +using Umbraco.Core.Models; + +namespace Umbraco.Core.Persistence.Repositories +{ + interface IEntityContainerRepository : IReadRepository, IWriteRepository + { } +} diff --git a/src/Umbraco.Core/Persistence/Repositories/Interfaces/IEntityRepository.cs b/src/Umbraco.Core/Persistence/Repositories/IEntityRepository.cs similarity index 97% rename from src/Umbraco.Core/Persistence/Repositories/Interfaces/IEntityRepository.cs rename to src/Umbraco.Core/Persistence/Repositories/IEntityRepository.cs index 5a26e126f6..9e9f0c73bd 100644 --- a/src/Umbraco.Core/Persistence/Repositories/Interfaces/IEntityRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/IEntityRepository.cs @@ -1,57 +1,57 @@ -using System; -using System.Collections.Generic; -using Umbraco.Core.Models; -using Umbraco.Core.Models.EntityBase; -using Umbraco.Core.Persistence.DatabaseModelDefinitions; -using Umbraco.Core.Persistence.Querying; - -namespace Umbraco.Core.Persistence.Repositories -{ - public interface IEntityRepository : IRepository - { - IUmbracoEntity GetByKey(Guid key); - IUmbracoEntity GetByKey(Guid key, Guid objectTypeId); - IUmbracoEntity Get(int id); - IUmbracoEntity Get(int id, Guid objectTypeId); - IEnumerable GetAll(Guid objectType, params int[] ids); - IEnumerable GetAll(Guid objectType, params Guid[] keys); - IEnumerable GetByQuery(IQuery query); - IEnumerable GetByQuery(IQuery query, Guid objectType); - - UmbracoObjectTypes GetObjectType(int id); - UmbracoObjectTypes GetObjectType(Guid key); - - IEnumerable GetAllPaths(Guid objectType, params int[] ids); - IEnumerable GetAllPaths(Guid objectType, params Guid[] keys); - - /// - /// Gets paged results - /// - /// Query to excute - /// - /// Page number - /// Page size - /// Total records query would return without paging - /// Field to order by - /// Direction to order by - /// - /// An Enumerable list of objects - IEnumerable GetPagedResultsByQuery(IQuery query, Guid objectType, long pageIndex, int pageSize, out long totalRecords, - string orderBy, Direction orderDirection, IQuery filter = null); - - /// - /// Returns true if the entity exists - /// - /// - /// - bool Exists(Guid key); - - /// - /// Returns true if the entity exists - /// - /// - /// - bool Exists(int id); - - } -} +using System; +using System.Collections.Generic; +using Umbraco.Core.Models; +using Umbraco.Core.Models.EntityBase; +using Umbraco.Core.Persistence.DatabaseModelDefinitions; +using Umbraco.Core.Persistence.Querying; + +namespace Umbraco.Core.Persistence.Repositories +{ + public interface IEntityRepository : IRepository + { + IUmbracoEntity GetByKey(Guid key); + IUmbracoEntity GetByKey(Guid key, Guid objectTypeId); + IUmbracoEntity Get(int id); + IUmbracoEntity Get(int id, Guid objectTypeId); + IEnumerable GetAll(Guid objectType, params int[] ids); + IEnumerable GetAll(Guid objectType, params Guid[] keys); + IEnumerable GetByQuery(IQuery query); + IEnumerable GetByQuery(IQuery query, Guid objectType); + + UmbracoObjectTypes GetObjectType(int id); + UmbracoObjectTypes GetObjectType(Guid key); + + IEnumerable GetAllPaths(Guid objectType, params int[] ids); + IEnumerable GetAllPaths(Guid objectType, params Guid[] keys); + + /// + /// Gets paged results + /// + /// Query to excute + /// + /// Page number + /// Page size + /// Total records query would return without paging + /// Field to order by + /// Direction to order by + /// + /// An Enumerable list of objects + IEnumerable GetPagedResultsByQuery(IQuery query, Guid objectType, long pageIndex, int pageSize, out long totalRecords, + string orderBy, Direction orderDirection, IQuery filter = null); + + /// + /// Returns true if the entity exists + /// + /// + /// + bool Exists(Guid key); + + /// + /// Returns true if the entity exists + /// + /// + /// + bool Exists(int id); + + } +} diff --git a/src/Umbraco.Core/Persistence/Repositories/Interfaces/IExternalLoginRepository.cs b/src/Umbraco.Core/Persistence/Repositories/IExternalLoginRepository.cs similarity index 74% rename from src/Umbraco.Core/Persistence/Repositories/Interfaces/IExternalLoginRepository.cs rename to src/Umbraco.Core/Persistence/Repositories/IExternalLoginRepository.cs index 9a765f6259..6d145e9961 100644 --- a/src/Umbraco.Core/Persistence/Repositories/Interfaces/IExternalLoginRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/IExternalLoginRepository.cs @@ -4,7 +4,7 @@ using Umbraco.Core.Models.Identity; namespace Umbraco.Core.Persistence.Repositories { - public interface IExternalLoginRepository : IQueryRepository + public interface IExternalLoginRepository : IReadWriteQueryRepository { void SaveUserLogins(int memberId, IEnumerable logins); void DeleteUserLogins(int memberId); diff --git a/src/Umbraco.Core/Persistence/Repositories/Interfaces/ILanguageRepository.cs b/src/Umbraco.Core/Persistence/Repositories/ILanguageRepository.cs similarity index 69% rename from src/Umbraco.Core/Persistence/Repositories/Interfaces/ILanguageRepository.cs rename to src/Umbraco.Core/Persistence/Repositories/ILanguageRepository.cs index 2c52a6e56d..43f7e9de04 100644 --- a/src/Umbraco.Core/Persistence/Repositories/Interfaces/ILanguageRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/ILanguageRepository.cs @@ -1,10 +1,10 @@ -using Umbraco.Core.Models; - -namespace Umbraco.Core.Persistence.Repositories -{ - public interface ILanguageRepository : IQueryRepository - { - ILanguage GetByCultureName(string cultureName); - ILanguage GetByIsoCode(string isoCode); - } -} +using Umbraco.Core.Models; + +namespace Umbraco.Core.Persistence.Repositories +{ + public interface ILanguageRepository : IReadWriteQueryRepository + { + ILanguage GetByCultureName(string cultureName); + ILanguage GetByIsoCode(string isoCode); + } +} diff --git a/src/Umbraco.Core/Persistence/Repositories/Interfaces/IMacroRepository.cs b/src/Umbraco.Core/Persistence/Repositories/IMacroRepository.cs similarity index 53% rename from src/Umbraco.Core/Persistence/Repositories/Interfaces/IMacroRepository.cs rename to src/Umbraco.Core/Persistence/Repositories/IMacroRepository.cs index 45199aa956..eefb48933e 100644 --- a/src/Umbraco.Core/Persistence/Repositories/Interfaces/IMacroRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/IMacroRepository.cs @@ -1,13 +1,12 @@ -using System; -using System.Collections.Generic; -using Umbraco.Core.Models; - -namespace Umbraco.Core.Persistence.Repositories -{ - internal interface IMacroRepository : IQueryRepository, IReadRepository - { - - //IEnumerable GetAll(params string[] aliases); - - } -} +using System; +using Umbraco.Core.Models; + +namespace Umbraco.Core.Persistence.Repositories +{ + internal interface IMacroRepository : IReadWriteQueryRepository, IReadRepository + { + + //IEnumerable GetAll(params string[] aliases); + + } +} diff --git a/src/Umbraco.Core/Persistence/Repositories/Interfaces/IMediaRepository.cs b/src/Umbraco.Core/Persistence/Repositories/IMediaRepository.cs similarity index 51% rename from src/Umbraco.Core/Persistence/Repositories/Interfaces/IMediaRepository.cs rename to src/Umbraco.Core/Persistence/Repositories/IMediaRepository.cs index 8d9d3ec582..d4ec08a0df 100644 --- a/src/Umbraco.Core/Persistence/Repositories/Interfaces/IMediaRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/IMediaRepository.cs @@ -1,10 +1,10 @@ -using System; -using Umbraco.Core.Models; - -namespace Umbraco.Core.Persistence.Repositories -{ - public interface IMediaRepository : IRepositoryVersionable, IRecycleBinRepository, IReadRepository - { - IMedia GetMediaByPath(string mediaPath); - } -} +using System; +using Umbraco.Core.Models; + +namespace Umbraco.Core.Persistence.Repositories +{ + public interface IMediaRepository : IContentRepository, IReadRepository + { + IMedia GetMediaByPath(string mediaPath); + } +} diff --git a/src/Umbraco.Core/Persistence/Repositories/Interfaces/IMediaTypeContainerRepository.cs b/src/Umbraco.Core/Persistence/Repositories/IMediaTypeContainerRepository.cs similarity index 100% rename from src/Umbraco.Core/Persistence/Repositories/Interfaces/IMediaTypeContainerRepository.cs rename to src/Umbraco.Core/Persistence/Repositories/IMediaTypeContainerRepository.cs diff --git a/src/Umbraco.Core/Persistence/Repositories/Interfaces/IMediaTypeRepository.cs b/src/Umbraco.Core/Persistence/Repositories/IMediaTypeRepository.cs similarity index 92% rename from src/Umbraco.Core/Persistence/Repositories/Interfaces/IMediaTypeRepository.cs rename to src/Umbraco.Core/Persistence/Repositories/IMediaTypeRepository.cs index 7f2fc327c1..09059089e7 100644 --- a/src/Umbraco.Core/Persistence/Repositories/Interfaces/IMediaTypeRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/IMediaTypeRepository.cs @@ -1,17 +1,16 @@ -using System.Collections.Generic; -using Umbraco.Core.Events; -using Umbraco.Core.Models; -using Umbraco.Core.Persistence.Querying; - -namespace Umbraco.Core.Persistence.Repositories -{ - public interface IMediaTypeRepository : IContentTypeRepositoryBase - { - /// - /// Gets all entities of the specified query - /// - /// - /// An enumerable list of objects - IEnumerable GetByQuery(IQuery query); - } -} +using System.Collections.Generic; +using Umbraco.Core.Models; +using Umbraco.Core.Persistence.Querying; + +namespace Umbraco.Core.Persistence.Repositories +{ + public interface IMediaTypeRepository : IContentTypeRepositoryBase + { + /// + /// Gets all entities of the specified query + /// + /// + /// An enumerable list of objects + IEnumerable GetByQuery(IQuery query); + } +} diff --git a/src/Umbraco.Core/Persistence/Repositories/Interfaces/IMemberGroupRepository.cs b/src/Umbraco.Core/Persistence/Repositories/IMemberGroupRepository.cs similarity index 96% rename from src/Umbraco.Core/Persistence/Repositories/Interfaces/IMemberGroupRepository.cs rename to src/Umbraco.Core/Persistence/Repositories/IMemberGroupRepository.cs index ddc568b400..a82dbe76a9 100644 --- a/src/Umbraco.Core/Persistence/Repositories/Interfaces/IMemberGroupRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/IMemberGroupRepository.cs @@ -4,7 +4,7 @@ using Umbraco.Core.Persistence.UnitOfWork; namespace Umbraco.Core.Persistence.Repositories { - public interface IMemberGroupRepository : IUnitOfWorkRepository, IQueryRepository + public interface IMemberGroupRepository : IUnitOfWorkRepository, IReadWriteQueryRepository { /// /// Gets a member group by it's name diff --git a/src/Umbraco.Core/Persistence/Repositories/Interfaces/IMemberRepository.cs b/src/Umbraco.Core/Persistence/Repositories/IMemberRepository.cs similarity index 94% rename from src/Umbraco.Core/Persistence/Repositories/Interfaces/IMemberRepository.cs rename to src/Umbraco.Core/Persistence/Repositories/IMemberRepository.cs index 8f5353bdd6..26583300ce 100644 --- a/src/Umbraco.Core/Persistence/Repositories/Interfaces/IMemberRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/IMemberRepository.cs @@ -1,40 +1,40 @@ -using System.Collections.Generic; -using Umbraco.Core.Models; -using Umbraco.Core.Persistence.Querying; -using Umbraco.Core.Persistence.UnitOfWork; - -namespace Umbraco.Core.Persistence.Repositories -{ - public interface IMemberRepository : IUnitOfWorkRepository, IRepositoryVersionable - { - /// - /// Finds members in a given role - /// - /// - /// - /// - /// - IEnumerable FindMembersInRole(string roleName, string usernameToMatch, StringPropertyMatchType matchType = StringPropertyMatchType.StartsWith); - - /// - /// Get all members in a specific group - /// - /// - /// - IEnumerable GetByMemberGroup(string groupName); - - /// - /// Checks if a member with the username exists - /// - /// - /// - bool Exists(string username); - - /// - /// Gets the count of items based on a complex query - /// - /// - /// - int GetCountByQuery(IQuery query); - } -} +using System.Collections.Generic; +using Umbraco.Core.Models; +using Umbraco.Core.Persistence.Querying; +using Umbraco.Core.Persistence.UnitOfWork; + +namespace Umbraco.Core.Persistence.Repositories +{ + public interface IMemberRepository : IUnitOfWorkRepository, IContentRepository + { + /// + /// Finds members in a given role + /// + /// + /// + /// + /// + IEnumerable FindMembersInRole(string roleName, string usernameToMatch, StringPropertyMatchType matchType = StringPropertyMatchType.StartsWith); + + /// + /// Get all members in a specific group + /// + /// + /// + IEnumerable GetByMemberGroup(string groupName); + + /// + /// Checks if a member with the username exists + /// + /// + /// + bool Exists(string username); + + /// + /// Gets the count of items based on a complex query + /// + /// + /// + int GetCountByQuery(IQuery query); + } +} diff --git a/src/Umbraco.Core/Persistence/Repositories/Interfaces/IMemberTypeRepository.cs b/src/Umbraco.Core/Persistence/Repositories/IMemberTypeRepository.cs similarity index 96% rename from src/Umbraco.Core/Persistence/Repositories/Interfaces/IMemberTypeRepository.cs rename to src/Umbraco.Core/Persistence/Repositories/IMemberTypeRepository.cs index 24dd4cfbc8..54a495c181 100644 --- a/src/Umbraco.Core/Persistence/Repositories/Interfaces/IMemberTypeRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/IMemberTypeRepository.cs @@ -1,8 +1,8 @@ -using Umbraco.Core.Models; -using Umbraco.Core.Persistence.UnitOfWork; - -namespace Umbraco.Core.Persistence.Repositories -{ - public interface IMemberTypeRepository : IUnitOfWorkRepository, IContentTypeRepositoryBase - { } -} +using Umbraco.Core.Models; +using Umbraco.Core.Persistence.UnitOfWork; + +namespace Umbraco.Core.Persistence.Repositories +{ + public interface IMemberTypeRepository : IUnitOfWorkRepository, IContentTypeRepositoryBase + { } +} diff --git a/src/Umbraco.Core/Persistence/Repositories/Interfaces/IMigrationEntryRepository.cs b/src/Umbraco.Core/Persistence/Repositories/IMigrationEntryRepository.cs similarity index 83% rename from src/Umbraco.Core/Persistence/Repositories/Interfaces/IMigrationEntryRepository.cs rename to src/Umbraco.Core/Persistence/Repositories/IMigrationEntryRepository.cs index 27ad825270..0b2d0f3ed9 100644 --- a/src/Umbraco.Core/Persistence/Repositories/Interfaces/IMigrationEntryRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/IMigrationEntryRepository.cs @@ -4,7 +4,7 @@ using Umbraco.Core.Persistence.UnitOfWork; namespace Umbraco.Core.Persistence.Repositories { - public interface IMigrationEntryRepository : IUnitOfWorkRepository, IQueryRepository + public interface IMigrationEntryRepository : IUnitOfWorkRepository, IReadWriteQueryRepository { IMigrationEntry FindEntry(string migrationName, SemVersion version); } diff --git a/src/Umbraco.Core/Persistence/Repositories/Interfaces/INotificationsRepository.cs b/src/Umbraco.Core/Persistence/Repositories/INotificationsRepository.cs similarity index 100% rename from src/Umbraco.Core/Persistence/Repositories/Interfaces/INotificationsRepository.cs rename to src/Umbraco.Core/Persistence/Repositories/INotificationsRepository.cs diff --git a/src/Umbraco.Core/Persistence/Repositories/Interfaces/IPartialViewMacroRepository.cs b/src/Umbraco.Core/Persistence/Repositories/IPartialViewMacroRepository.cs similarity index 100% rename from src/Umbraco.Core/Persistence/Repositories/Interfaces/IPartialViewMacroRepository.cs rename to src/Umbraco.Core/Persistence/Repositories/IPartialViewMacroRepository.cs diff --git a/src/Umbraco.Core/Persistence/Repositories/Interfaces/IPartialViewRepository.cs b/src/Umbraco.Core/Persistence/Repositories/IPartialViewRepository.cs similarity index 78% rename from src/Umbraco.Core/Persistence/Repositories/Interfaces/IPartialViewRepository.cs rename to src/Umbraco.Core/Persistence/Repositories/IPartialViewRepository.cs index 2e27a2bf0f..331d929800 100644 --- a/src/Umbraco.Core/Persistence/Repositories/Interfaces/IPartialViewRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/IPartialViewRepository.cs @@ -3,7 +3,7 @@ using Umbraco.Core.Models; namespace Umbraco.Core.Persistence.Repositories { - internal interface IPartialViewRepository : IRepository + internal interface IPartialViewRepository : IReadRepository, IWriteRepository { void AddFolder(string folderPath); void DeleteFolder(string folderPath); diff --git a/src/Umbraco.Core/Persistence/Repositories/Interfaces/IPublicAccessRepository.cs b/src/Umbraco.Core/Persistence/Repositories/IPublicAccessRepository.cs similarity index 78% rename from src/Umbraco.Core/Persistence/Repositories/Interfaces/IPublicAccessRepository.cs rename to src/Umbraco.Core/Persistence/Repositories/IPublicAccessRepository.cs index 405d8f278a..1283271330 100644 --- a/src/Umbraco.Core/Persistence/Repositories/Interfaces/IPublicAccessRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/IPublicAccessRepository.cs @@ -4,6 +4,6 @@ using Umbraco.Core.Persistence.UnitOfWork; namespace Umbraco.Core.Persistence.Repositories { - public interface IPublicAccessRepository : IUnitOfWorkRepository, IQueryRepository + public interface IPublicAccessRepository : IUnitOfWorkRepository, IReadWriteQueryRepository { } } diff --git a/src/Umbraco.Core/Persistence/Repositories/Interfaces/IRedirectUrlRepository.cs b/src/Umbraco.Core/Persistence/Repositories/IRedirectUrlRepository.cs similarity index 98% rename from src/Umbraco.Core/Persistence/Repositories/Interfaces/IRedirectUrlRepository.cs rename to src/Umbraco.Core/Persistence/Repositories/IRedirectUrlRepository.cs index 77b9fc3531..071e9d2a93 100644 --- a/src/Umbraco.Core/Persistence/Repositories/Interfaces/IRedirectUrlRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/IRedirectUrlRepository.cs @@ -8,7 +8,7 @@ namespace Umbraco.Core.Persistence.Repositories /// /// Defines the repository. /// - public interface IRedirectUrlRepository : IUnitOfWorkRepository, IQueryRepository + public interface IRedirectUrlRepository : IUnitOfWorkRepository, IReadWriteQueryRepository { /// /// Gets a redirect url. diff --git a/src/Umbraco.Core/Persistence/Repositories/Interfaces/IRelationRepository.cs b/src/Umbraco.Core/Persistence/Repositories/IRelationRepository.cs similarity index 81% rename from src/Umbraco.Core/Persistence/Repositories/Interfaces/IRelationRepository.cs rename to src/Umbraco.Core/Persistence/Repositories/IRelationRepository.cs index 10ead9db46..029077dfee 100644 --- a/src/Umbraco.Core/Persistence/Repositories/Interfaces/IRelationRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/IRelationRepository.cs @@ -1,10 +1,10 @@ -using Umbraco.Core.Models; -using Umbraco.Core.Persistence.UnitOfWork; - -namespace Umbraco.Core.Persistence.Repositories -{ - public interface IRelationRepository : IUnitOfWorkRepository, IQueryRepository - { - - } -} +using Umbraco.Core.Models; +using Umbraco.Core.Persistence.UnitOfWork; + +namespace Umbraco.Core.Persistence.Repositories +{ + public interface IRelationRepository : IUnitOfWorkRepository, IReadWriteQueryRepository + { + + } +} diff --git a/src/Umbraco.Core/Persistence/Repositories/Interfaces/IRelationTypeRepository.cs b/src/Umbraco.Core/Persistence/Repositories/IRelationTypeRepository.cs similarity index 70% rename from src/Umbraco.Core/Persistence/Repositories/Interfaces/IRelationTypeRepository.cs rename to src/Umbraco.Core/Persistence/Repositories/IRelationTypeRepository.cs index 71419cb887..30c8b82125 100644 --- a/src/Umbraco.Core/Persistence/Repositories/Interfaces/IRelationTypeRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/IRelationTypeRepository.cs @@ -1,9 +1,9 @@ -using System; -using Umbraco.Core.Models; -using Umbraco.Core.Persistence.UnitOfWork; - -namespace Umbraco.Core.Persistence.Repositories -{ - public interface IRelationTypeRepository : IUnitOfWorkRepository, IQueryRepository, IReadRepository - { } -} +using System; +using Umbraco.Core.Models; +using Umbraco.Core.Persistence.UnitOfWork; + +namespace Umbraco.Core.Persistence.Repositories +{ + public interface IRelationTypeRepository : IUnitOfWorkRepository, IReadWriteQueryRepository, IReadRepository + { } +} diff --git a/src/Umbraco.Core/Persistence/Repositories/Interfaces/IScriptRepository.cs b/src/Umbraco.Core/Persistence/Repositories/IScriptRepository.cs similarity index 76% rename from src/Umbraco.Core/Persistence/Repositories/Interfaces/IScriptRepository.cs rename to src/Umbraco.Core/Persistence/Repositories/IScriptRepository.cs index 26d432702c..ea88cb7618 100644 --- a/src/Umbraco.Core/Persistence/Repositories/Interfaces/IScriptRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/IScriptRepository.cs @@ -1,13 +1,13 @@ -using System.IO; -using Umbraco.Core.Models; - -namespace Umbraco.Core.Persistence.Repositories -{ - public interface IScriptRepository : IRepository - { - bool ValidateScript(Script script); - Stream GetFileContentStream(string filepath); - void SetFileContent(string filepath, Stream content); - long GetFileSize(string filepath); - } -} +using System.IO; +using Umbraco.Core.Models; + +namespace Umbraco.Core.Persistence.Repositories +{ + public interface IScriptRepository : IReadRepository, IWriteRepository