From 905e58e3b686281d761a2d4e4ba91cc57f0d42e7 Mon Sep 17 00:00:00 2001 From: Shannon Date: Sun, 22 Feb 2015 21:36:02 +0100 Subject: [PATCH] Completes: U4-6104 Remove SqlSyntaxContext - quite a large refactor and cleanup since the SqlSyntaxContext was used everywhere :( haven't run tests, etc... yet but the project builds now. --- src/Umbraco.Core/CoreBootManager.cs | 2 +- src/Umbraco.Core/DatabaseContext.cs | 23 +- .../DefinitionFactory.cs | 8 +- .../Persistence/DatabaseSchemaHelper.cs | 38 +- .../Persistence/Mappers/BaseMapper.cs | 23 +- .../Persistence/Mappers/ContentMapper.cs | 13 +- .../Persistence/Mappers/ContentTypeMapper.cs | 13 +- .../Mappers/DataTypeDefinitionMapper.cs | 13 +- .../Persistence/Mappers/DictionaryMapper.cs | 13 +- .../Mappers/DictionaryTranslationMapper.cs | 13 +- .../Persistence/Mappers/DomainMapper.cs | 7 +- .../Persistence/Mappers/LanguageMapper.cs | 11 +- .../Persistence/Mappers/MacroMapper.cs | 14 +- .../Persistence/Mappers/MappingResolver.cs | 5 + .../Persistence/Mappers/MediaMapper.cs | 14 +- .../Persistence/Mappers/MediaTypeMapper.cs | 13 +- .../Persistence/Mappers/MemberGroupMapper.cs | 9 +- .../Persistence/Mappers/MemberMapper.cs | 14 +- .../Persistence/Mappers/MemberTypeMapper.cs | 14 +- .../Mappers/PropertyGroupMapper.cs | 13 +- .../Persistence/Mappers/PropertyMapper.cs | 12 +- .../Persistence/Mappers/PropertyTypeMapper.cs | 14 +- .../Persistence/Mappers/RelationMapper.cs | 14 +- .../Persistence/Mappers/RelationTypeMapper.cs | 14 +- .../Mappers/ServerRegistrationMapper.cs | 15 +- .../Persistence/Mappers/TagMapper.cs | 13 +- .../Persistence/Mappers/TemplateMapper.cs | 13 +- .../Mappers/UmbracoEntityMapper.cs | 13 +- .../Persistence/Mappers/UserMapper.cs | 13 +- .../Persistence/Mappers/UserTypeMapper.cs | 14 +- .../Migrations/IMigrationContext.cs | 2 + .../Initial/DatabaseSchemaCreation.cs | 4 +- .../Initial/DatabaseSchemaResult.cs | 7 +- .../Persistence/Migrations/MigrationBase.cs | 10 +- .../Migrations/MigrationContext.cs | 13 +- .../Migrations/MigrationExpressionBase.cs | 25 +- .../Migrations/MigrationResolver.cs | 45 +- .../Persistence/Migrations/MigrationRunner.cs | 30 +- .../Syntax/Alter/AlterSyntaxBuilder.cs | 4 +- .../Syntax/Alter/Column/AlterColumnBuilder.cs | 12 +- .../Expressions/AlterColumnExpression.cs | 31 +- .../AlterDefaultConstraintExpression.cs | 13 +- .../Alter/Expressions/AlterTableExpression.cs | 11 +- .../Syntax/Alter/Table/AlterTableBuilder.cs | 14 +- .../Create/Column/CreateColumnBuilder.cs | 8 +- .../Migrations/Syntax/Create/CreateBuilder.cs | 50 +-- .../Expressions/CreateConstraintExpression.cs | 15 +- .../Expressions/CreateTableExpression.cs | 23 +- .../Syntax/Create/Table/CreateTableBuilder.cs | 12 +- .../Migrations/Syntax/Delete/DeleteBuilder.cs | 53 ++- .../Expressions/DeleteColumnExpression.cs | 15 +- .../Expressions/DeleteConstraintExpression.cs | 34 +- .../Expressions/DeleteDataExpression.cs | 18 +- .../DeleteDefaultConstraintExpression.cs | 10 +- .../Expressions/DeleteForeignKeyExpression.cs | 23 +- .../Expressions/DeleteIndexExpression.cs | 14 +- .../Expressions/DeleteTableExpression.cs | 11 +- .../Syntax/Execute/ExecuteBuilder.cs | 16 +- .../ExecuteCodeStatementExpression.cs | 11 +- .../ExecuteSqlStatementExpression.cs | 11 +- .../Expressions/CreateColumnExpression.cs | 15 +- .../Expressions/CreateForeignKeyExpression.cs | 11 +- .../Expressions/CreateIndexExpression.cs | 23 +- .../Expressions/InsertDataExpression.cs | 30 +- .../Migrations/Syntax/Insert/InsertBuilder.cs | 2 +- .../Expressions/RenameColumnExpression.cs | 10 +- .../Expressions/RenameTableExpression.cs | 12 +- .../Migrations/Syntax/Rename/RenameBuilder.cs | 12 +- .../Expressions/UpdateDataExpression.cs | 21 +- .../Migrations/Syntax/Update/UpdateBuilder.cs | 8 +- .../RemoveUmbracoAppConstraints.cs | 12 +- .../AddIndexToCmsMacroPropertyTable.cs | 8 +- .../AddIndexToCmsMacroTable.cs | 8 +- .../AddPropertyEditorAliasColumn.cs | 9 +- .../AlterCmsMacroPropertyTable.cs | 10 +- .../AlterTagRelationsTable.cs | 11 +- .../TargetVersionSeven/AlterTagsTable.cs | 12 +- .../TargetVersionSeven/AlterUserTable.cs | 7 + .../AssignMissingKeysAndIndexes.cs | 8 +- .../TargetVersionSeven/DropControlIdColumn.cs | 7 + .../RemoveCmsMacroPropertyTypeTable.cs | 7 + .../UpdateControlIdToPropertyEditorAlias.cs | 7 + .../UpdateRelatedLinksData.cs | 13 +- .../AssignMissingPrimaryForMySqlKeys.cs | 8 +- .../AddPublicAccessTables.cs | 7 + .../AddRelationTypeForDocumentOnDelete.cs | 7 + .../MigrateAndRemoveTemplateMasterColumn.cs | 18 +- .../MigrateStylesheetDataToFile.cs | 21 +- .../RemoveLanguageLocaleColumn.cs | 7 + .../RemoveStylesheetDataAndTables.cs | 7 + .../AddIndexToUmbracoNodeTable.cs | 13 +- .../AddMissingForeignKeyForContentType.cs | 10 +- .../AlterDataTypePreValueTable.cs | 16 +- .../RemoveCmsDocumentAliasColumn.cs | 8 +- .../TargetVersionSix/DeleteAppTables.cs | 10 +- .../EnsureAppsTreesUpdated.cs | 9 +- .../MoveMasterContentTypeData.cs | 7 + .../NewCmsContentType2ContentTypeTable.cs | 9 +- .../RemoveMasterContentTypeColumn.cs | 7 + .../TargetVersionSix/RenameCmsTabTable.cs | 7 + .../TargetVersionSix/RenameTabIdColumn.cs | 7 + ...teCmsContentTypeAllowedContentTypeTable.cs | 7 + .../UpdateCmsContentTypeTable.cs | 8 +- .../UpdateCmsContentVersionTable.cs | 7 + .../UpdateCmsPropertyTypeGroupTable.cs | 9 +- .../CreateServerRegistryTable.cs | 10 +- .../AddChangeDocumentTypePermission.cs | 11 +- .../AdditionalIndexesAndKeys.cs | 10 +- .../AssignMissingPrimaryForMySqlKeys.cs | 10 +- .../AssignMissingPrimaryForMySqlKeys2.cs | 10 +- .../ChangePasswordColumn.cs | 7 + .../UpdateToNewMemberPropertyAliases.cs | 6 + .../UpdatePropertyTypesAndGroups.cs | 9 +- src/Umbraco.Core/Persistence/PetaPoco.cs | 5 - .../Persistence/PetaPocoExtensions.cs | 100 +---- .../Persistence/PetaPocoSqlExtensions.cs | 68 +-- .../Querying/BaseExpressionHelper.cs | 56 ++- .../Querying/ModelToSqlExpressionHelper.cs | 20 +- .../Querying/PocoToSqlExpressionHelper.cs | 13 +- .../Persistence/Querying/Query.cs | 11 +- .../Repositories/ContentRepository.cs | 86 ++-- .../Repositories/ContentTypeBaseRepository.cs | 66 +-- .../Repositories/ContentTypeRepository.cs | 19 +- .../DataTypeDefinitionRepository.cs | 18 +- .../Repositories/DictionaryRepository.cs | 12 +- .../Repositories/DomainRepository.cs | 4 +- .../Repositories/EntityRepository.cs | 46 +- .../Interfaces/IEntityRepository.cs | 6 + .../Interfaces/IMediaRepository.cs | 3 +- .../Interfaces/IRepositoryQueryable.cs | 5 + .../Interfaces/ITaskRepository.cs | 5 - .../Interfaces/ITaskTypeRepository.cs | 9 + .../Repositories/LanguageRepository.cs | 2 +- .../Repositories/MacroRepository.cs | 10 +- .../Repositories/MediaRepository.cs | 88 ++-- .../Repositories/MediaTypeRepository.cs | 12 +- .../Repositories/MemberGroupRepository.cs | 78 ++-- .../Repositories/MemberRepository.cs | 94 ++-- .../Repositories/MemberTypeRepository.cs | 41 +- .../Repositories/NotificationsRepository.cs | 29 +- .../Repositories/PermissionRepository.cs | 14 +- .../Repositories/PetaPocoRepositoryBase.cs | 9 + .../Repositories/RecycleBinRepository.cs | 10 +- .../Repositories/RelationRepository.cs | 2 +- .../Repositories/RelationTypeRepository.cs | 2 +- .../Repositories/RepositoryBase.cs | 8 +- .../ServerRegistrationRepository.cs | 2 +- .../Repositories/SimpleGetRepository.cs | 2 +- .../Persistence/Repositories/TagRepository.cs | 80 ++-- .../Repositories/TaskRepository.cs | 8 +- .../Repositories/TemplateRepository.cs | 36 +- .../Repositories/UserRepository.cs | 16 +- .../Repositories/UserTypeRepository.cs | 4 +- .../Repositories/VersionableRepositoryBase.cs | 80 ++-- .../Persistence/RepositoryFactory.cs | 7 +- .../Persistence/SqlSyntax/SqlSyntaxContext.cs | 27 -- .../Persistence/UmbracoDatabase.cs | 24 - src/Umbraco.Core/Services/ContentService.cs | 42 +- .../Services/ContentTypeService.cs | 12 +- src/Umbraco.Core/Services/DataTypeService.cs | 6 +- src/Umbraco.Core/Services/DomainService.cs | 2 +- src/Umbraco.Core/Services/EntityService.cs | 24 +- .../Services/LocalizationService.cs | 21 +- src/Umbraco.Core/Services/MacroService.cs | 3 +- src/Umbraco.Core/Services/MediaService.cs | 61 +-- src/Umbraco.Core/Services/MemberService.cs | 62 +-- .../Services/MemberTypeService.cs | 2 +- .../Services/NotificationService.cs | 19 +- src/Umbraco.Core/Services/PackagingService.cs | 2 +- src/Umbraco.Core/Services/RelationService.cs | 38 +- .../Services/ServerRegistrationService.cs | 6 +- src/Umbraco.Core/Services/ServiceContext.cs | 2 +- src/Umbraco.Core/Services/TaskService.cs | 2 +- src/Umbraco.Core/Services/UserService.cs | 18 +- src/Umbraco.Core/Umbraco.Core.csproj | 2 +- .../Integration/CreateContent.cs | 155 ------- .../Integration/InstallPackage.cs | 145 ------ .../Migrations/AlterMigrationTests.cs | 10 +- .../Migrations/FindingMigrationsTest.cs | 16 +- .../Migrations/MigrationRunnerTests.cs | 19 +- .../Stubs/AlterUserTableMigrationStub.cs | 29 +- .../Stubs/DropForeignKeyMigrationStub.cs | 24 + .../Migrations/Stubs/FiveZeroMigration.cs | 7 + .../Migrations/Stubs/FourElevenMigration.cs | 7 + .../Migrations/Stubs/SixZeroMigration1.cs | 9 +- .../Migrations/Stubs/SixZeroMigration2.cs | 7 + .../TargetVersionSixthMigrationsTest.cs | 10 +- .../Migrations/Upgrades/BaseUpgradeTest.cs | 19 +- .../Upgrades/SqlCeDataUpgradeTest.cs | 14 +- .../Migrations/Upgrades/SqlCeUpgradeTest.cs | 2 - .../Upgrades/ValidateOlderSchemaTest.cs | 2 - .../Upgrades/ValidateV7TagsUpgradeTest.cs | 135 ------ .../Upgrades/ValidateV7UpgradeTest.cs | 11 +- .../Persistence/DatabaseContextTests.cs | 2 +- .../Persistence/Mappers/ContentMapperTest.cs | 16 +- .../Mappers/ContentTypeMapperTest.cs | 16 +- .../Mappers/DataTypeDefinitionMapperTest.cs | 16 +- .../Mappers/DictionaryMapperTest.cs | 12 +- .../DictionaryTranslationMapperTest.cs | 12 +- .../Persistence/Mappers/LanguageMapperTest.cs | 13 +- .../Persistence/Mappers/MediaMapperTest.cs | 21 +- .../Mappers/PropertyGroupMapperTest.cs | 19 +- .../Mappers/PropertyTypeMapperTest.cs | 30 +- .../Persistence/Mappers/RelationMapperTest.cs | 25 +- .../Mappers/RelationTypeMapperTest.cs | 20 +- .../Persistence/MySqlDatabaseCreationTest.cs | 8 +- .../Persistence/PetaPocoExtensionsTest.cs | 2 +- .../ContentRepositorySqlClausesTest.cs | 66 +-- .../ContentTypeRepositorySqlClausesTest.cs | 56 +-- .../Querying/ContentTypeSqlMappingTests.cs | 40 +- ...aTypeDefinitionRepositorySqlClausesTest.cs | 8 +- .../Persistence/Querying/ExpressionTests.cs | 14 +- .../Querying/MediaRepositorySqlClausesTest.cs | 12 +- .../MediaTypeRepositorySqlClausesTest.cs | 8 +- .../Persistence/Querying/PetaPocoSqlTests.cs | 56 ++- .../Persistence/Querying/QueryBuilderTests.cs | 24 +- .../Repositories/ContentRepositoryTest.cs | 18 +- .../DataTypeDefinitionRepositoryTest.cs | 4 +- .../Repositories/DictionaryRepositoryTest.cs | 4 +- .../Repositories/LanguageRepositoryTest.cs | 4 +- .../Repositories/MacroRepositoryTest.cs | 4 +- .../Repositories/MediaRepositoryTest.cs | 18 +- .../Repositories/MemberRepositoryTest.cs | 56 +-- .../NotificationsRepositoryTest.cs | 10 +- .../Repositories/RelationRepositoryTest.cs | 4 +- .../RelationTypeRepositoryTest.cs | 4 +- .../ServerRegistrationRepositoryTest.cs | 4 +- .../Repositories/UserRepositoryTest.cs | 4 +- .../Repositories/UserTypeRepositoryTest.cs | 4 +- .../MySqlSyntaxProviderTests.cs | 52 --- .../SqlCeSyntaxProviderTests.cs | 56 ++- .../Services/ContentServiceTests.cs | 4 +- .../Services/MemberServiceTests.cs | 10 +- .../Services/PerformanceTests.cs | 12 +- .../TestHelpers/BaseDatabaseFactoryTest.cs | 3 +- .../TestHelpers/BaseDatabaseTest.cs | 4 +- .../TestHelpers/BaseSeleniumTest.cs | 150 ------- .../TestHelpers/BaseUsingSqlCeSyntax.cs | 12 +- src/Umbraco.Tests/Umbraco.Tests.csproj | 6 +- src/Umbraco.Web.UI/Umbraco.Web.UI.csproj | 2 - .../webservices/TagsAutoCompleteHandler.ashx | 1 - .../UltimatePickerAutoCompleteHandler.ashx | 1 - .../umbraco/webservices/tagService.asmx | 1 - .../ultimatePickerAutoSuggest.asmx | 1 - .../InstallSteps/DatabaseInstallStep.cs | 3 + .../MajorVersion7UpgradeReport.cs | 14 +- ...ediaXmlCacheForDeletedItemsAfterUpgrade.cs | 11 +- .../EnsureListViewDataTypeIsCreated.cs | 31 +- .../PublishAfterUpgradeToVersionSixth.cs | 26 +- src/Umbraco.Web/Umbraco.Web.csproj | 21 +- .../WebServices/XmlDataIntegrityController.cs | 22 +- .../umbraco/dialogs/umbracoField.aspx.cs | 2 +- .../webservices/TagsAutoCompleteHandler.ashx | 1 - .../TagsAutoCompleteHandler.ashx.cs | 102 ----- .../UltimatePickerAutoCompleteHandler.ashx | 1 - .../UltimatePickerAutoCompleteHandler.ashx.cs | 163 ------- .../ultimatePickerAutoSuggest.asmx | 1 - .../ultimatePickerAutoSuggest.asmx.cs | 216 --------- src/umbraco.cms/businesslogic/CMSNode.cs | 6 +- src/umbraco.cms/businesslogic/Tags/Tag.cs | 423 ------------------ src/umbraco.cms/umbraco.cms.csproj | 1 - 261 files changed, 2004 insertions(+), 3669 deletions(-) create mode 100644 src/Umbraco.Core/Persistence/Repositories/Interfaces/ITaskTypeRepository.cs delete mode 100644 src/Umbraco.Core/Persistence/SqlSyntax/SqlSyntaxContext.cs delete mode 100644 src/Umbraco.Tests/Integration/CreateContent.cs delete mode 100644 src/Umbraco.Tests/Integration/InstallPackage.cs create mode 100644 src/Umbraco.Tests/Migrations/Stubs/DropForeignKeyMigrationStub.cs delete mode 100644 src/Umbraco.Tests/Migrations/Upgrades/ValidateV7TagsUpgradeTest.cs delete mode 100644 src/Umbraco.Tests/Persistence/SyntaxProvider/MySqlSyntaxProviderTests.cs delete mode 100644 src/Umbraco.Tests/TestHelpers/BaseSeleniumTest.cs delete mode 100644 src/Umbraco.Web.UI/umbraco/webservices/TagsAutoCompleteHandler.ashx delete mode 100644 src/Umbraco.Web.UI/umbraco/webservices/UltimatePickerAutoCompleteHandler.ashx delete mode 100644 src/Umbraco.Web.UI/umbraco/webservices/tagService.asmx delete mode 100644 src/Umbraco.Web.UI/umbraco/webservices/ultimatePickerAutoSuggest.asmx delete mode 100644 src/Umbraco.Web/umbraco.presentation/umbraco/webservices/TagsAutoCompleteHandler.ashx delete mode 100644 src/Umbraco.Web/umbraco.presentation/umbraco/webservices/TagsAutoCompleteHandler.ashx.cs delete mode 100644 src/Umbraco.Web/umbraco.presentation/umbraco/webservices/UltimatePickerAutoCompleteHandler.ashx delete mode 100644 src/Umbraco.Web/umbraco.presentation/umbraco/webservices/UltimatePickerAutoCompleteHandler.ashx.cs delete mode 100644 src/Umbraco.Web/umbraco.presentation/umbraco/webservices/ultimatePickerAutoSuggest.asmx delete mode 100644 src/Umbraco.Web/umbraco.presentation/umbraco/webservices/ultimatePickerAutoSuggest.asmx.cs delete mode 100644 src/umbraco.cms/businesslogic/Tags/Tag.cs diff --git a/src/Umbraco.Core/CoreBootManager.cs b/src/Umbraco.Core/CoreBootManager.cs index 64d3c5f6bd..2a1ceb31f4 100644 --- a/src/Umbraco.Core/CoreBootManager.cs +++ b/src/Umbraco.Core/CoreBootManager.cs @@ -365,7 +365,7 @@ namespace Umbraco.Core //the database migration objects MigrationResolver.Current = new MigrationResolver( - ServiceProvider, ProfilingLogger.Logger, + Container, ProfilingLogger.Logger, () => PluginManager.ResolveTypes()); diff --git a/src/Umbraco.Core/DatabaseContext.cs b/src/Umbraco.Core/DatabaseContext.cs index 414c68bab0..b27cf6c34e 100644 --- a/src/Umbraco.Core/DatabaseContext.cs +++ b/src/Umbraco.Core/DatabaseContext.cs @@ -35,17 +35,6 @@ namespace Umbraco.Core private string _providerName; private DatabaseSchemaResult _result; - [Obsolete("Use the constructor specifying all dependencies instead")] - public DatabaseContext(IDatabaseFactory factory) - : this(factory, LoggerResolver.Current.Logger, new SqlSyntaxProviders(new ISqlSyntaxProvider[] - { - new MySqlSyntaxProvider(LoggerResolver.Current.Logger), - new SqlCeSyntaxProvider(), - new SqlServerSyntaxProvider() - })) - { - } - /// /// Default constructor /// @@ -74,7 +63,6 @@ namespace Umbraco.Core { _providerName = providerName; SqlSyntax = sqlSyntax; - SqlSyntaxContext.SqlSyntaxProvider = SqlSyntax; _factory = factory; _logger = logger; _configured = true; @@ -150,7 +138,7 @@ namespace Umbraco.Core _providerName = "System.Data.SqlClient"; if (ConfigurationManager.ConnectionStrings[GlobalSettings.UmbracoConnectionName] != null) { - if (!string.IsNullOrEmpty(ConfigurationManager.ConnectionStrings[GlobalSettings.UmbracoConnectionName].ProviderName)) + if (string.IsNullOrEmpty(ConfigurationManager.ConnectionStrings[GlobalSettings.UmbracoConnectionName].ProviderName) == false) _providerName = ConfigurationManager.ConnectionStrings[GlobalSettings.UmbracoConnectionName].ProviderName; } else @@ -458,8 +446,6 @@ namespace Umbraco.Core throw new InvalidOperationException("No " + typeof(ISqlSyntaxProvider) + " specified or no " + typeof(SqlSyntaxProviders) + " instance specified"); } - SqlSyntaxContext.SqlSyntaxProvider = SqlSyntax; - _configured = true; } catch (Exception e) @@ -523,7 +509,7 @@ namespace Umbraco.Core internal DatabaseSchemaResult ValidateDatabaseSchema() { if (_configured == false || (string.IsNullOrEmpty(_connectionString) || string.IsNullOrEmpty(ProviderName))) - return new DatabaseSchemaResult(); + return new DatabaseSchemaResult(SqlSyntax); if (_result == null) { @@ -583,7 +569,8 @@ namespace Umbraco.Core //If Configuration Status is empty and the determined version is "empty" its a new install - otherwise upgrade the existing if (string.IsNullOrEmpty(GlobalSettings.ConfigurationStatus) && installedVersion.Equals(new Version(0, 0, 0))) { - database.CreateDatabaseSchema(); + var schemaHelper = new DatabaseSchemaHelper(database, _logger, SqlSyntax); + schemaHelper.CreateDatabaseSchema(); message = message + "

Installation completed!

"; //now that everything is done, we need to determine the version of SQL server that is executing @@ -640,7 +627,7 @@ namespace Umbraco.Core : new Version(GlobalSettings.ConfigurationStatus); var targetVersion = UmbracoVersion.Current; var runner = new MigrationRunner(_logger, currentVersion, targetVersion, GlobalSettings.UmbracoMigrationName); - var upgraded = runner.Execute(database, true); + var upgraded = runner.Execute(database, DatabaseProvider, SqlSyntax, true); message = message + "

Upgrade completed!

"; //now that everything is done, we need to determine the version of SQL server that is executing diff --git a/src/Umbraco.Core/Persistence/DatabaseModelDefinitions/DefinitionFactory.cs b/src/Umbraco.Core/Persistence/DatabaseModelDefinitions/DefinitionFactory.cs index 9b08279716..eefacbcbc1 100644 --- a/src/Umbraco.Core/Persistence/DatabaseModelDefinitions/DefinitionFactory.cs +++ b/src/Umbraco.Core/Persistence/DatabaseModelDefinitions/DefinitionFactory.cs @@ -9,7 +9,7 @@ namespace Umbraco.Core.Persistence.DatabaseModelDefinitions { internal static class DefinitionFactory { - public static TableDefinition GetTableDefinition(Type modelType) + public static TableDefinition GetTableDefinition(Type modelType, ISqlSyntaxProvider sqlSyntax) { //Looks for PetaPoco's TableNameAtribute for the name of the table //If no attribute is set we use the name of the Type as the default convention @@ -32,7 +32,7 @@ namespace Umbraco.Core.Persistence.DatabaseModelDefinitions //Otherwise use the name of the property itself as the default convention var columnAttribute = propertyInfo.FirstAttribute(); string columnName = columnAttribute != null ? columnAttribute.Name : propertyInfo.Name; - var columnDefinition = GetColumnDefinition(modelType, propertyInfo, columnName, tableName); + var columnDefinition = GetColumnDefinition(modelType, propertyInfo, columnName, tableName, sqlSyntax); tableDefinition.Columns.Add(columnDefinition); //Creates a foreignkey definition and adds it to the collection on the table definition @@ -58,7 +58,7 @@ namespace Umbraco.Core.Persistence.DatabaseModelDefinitions return tableDefinition; } - public static ColumnDefinition GetColumnDefinition(Type modelType, PropertyInfo propertyInfo, string columnName, string tableName) + public static ColumnDefinition GetColumnDefinition(Type modelType, PropertyInfo propertyInfo, string columnName, string tableName, ISqlSyntaxProvider sqlSyntax) { var definition = new ColumnDefinition{ Name = columnName, TableName = tableName, ModificationType = ModificationType.Create }; @@ -110,7 +110,7 @@ namespace Umbraco.Core.Persistence.DatabaseModelDefinitions { //Special case for MySQL as it can't have multiple default DateTime values, which //is what the umbracoServer table definition is trying to create - if (SqlSyntaxContext.SqlSyntaxProvider is MySqlSyntaxProvider && definition.TableName == "umbracoServer" && + if (sqlSyntax is MySqlSyntaxProvider && definition.TableName == "umbracoServer" && definition.TableName.ToLowerInvariant() == "lastNotifiedDate".ToLowerInvariant()) return definition; diff --git a/src/Umbraco.Core/Persistence/DatabaseSchemaHelper.cs b/src/Umbraco.Core/Persistence/DatabaseSchemaHelper.cs index 5129032bcf..12fd437b96 100644 --- a/src/Umbraco.Core/Persistence/DatabaseSchemaHelper.cs +++ b/src/Umbraco.Core/Persistence/DatabaseSchemaHelper.cs @@ -37,41 +37,13 @@ namespace Umbraco.Core.Persistence /// /// Creates the Umbraco db schema in the Database of the current Database. - /// Safe method that is only able to create the schema in non-configured - /// umbraco instances. /// - public void CreateDatabaseSchema(ApplicationContext applicationContext) + public void CreateDatabaseSchema() { - if (applicationContext == null) throw new ArgumentNullException("applicationContext"); - CreateDatabaseSchema(true, applicationContext); - } - - /// - /// Creates the Umbraco db schema in the Database of the current Database - /// with the option to guard the db from having the schema created - /// multiple times. - /// - /// - /// - public void CreateDatabaseSchema(bool guardConfiguration, ApplicationContext applicationContext) - { - if (applicationContext == null) throw new ArgumentNullException("applicationContext"); - - if (guardConfiguration && applicationContext.IsConfigured) - throw new Exception("Umbraco is already configured!"); - CreateDatabaseSchemaDo(); } - internal void CreateDatabaseSchemaDo(bool guardConfiguration, ApplicationContext applicationContext) - { - if (guardConfiguration && applicationContext.IsConfigured) - throw new Exception("Umbraco is already configured!"); - - CreateDatabaseSchemaDo(); - } - - internal void CreateDatabaseSchemaDo() + private void CreateDatabaseSchemaDo() { _logger.Info("Initializing database schema creation"); @@ -97,7 +69,7 @@ namespace Umbraco.Core.Persistence public void CreateTable(bool overwrite, Type modelType) { - var tableDefinition = DefinitionFactory.GetTableDefinition(modelType); + var tableDefinition = DefinitionFactory.GetTableDefinition(modelType, _syntaxProvider); var tableName = tableDefinition.Name; string createSql = _syntaxProvider.Format(tableDefinition); @@ -105,10 +77,10 @@ namespace Umbraco.Core.Persistence var foreignSql = _syntaxProvider.Format(tableDefinition.ForeignKeys); var indexSql = _syntaxProvider.Format(tableDefinition.Indexes); - var tableExist = _db.TableExist(tableName); + var tableExist = TableExist(tableName); if (overwrite && tableExist) { - _db.DropTable(tableName); + DropTable(tableName); tableExist = false; } diff --git a/src/Umbraco.Core/Persistence/Mappers/BaseMapper.cs b/src/Umbraco.Core/Persistence/Mappers/BaseMapper.cs index ea7c8ab8f9..376e5c6d55 100644 --- a/src/Umbraco.Core/Persistence/Mappers/BaseMapper.cs +++ b/src/Umbraco.Core/Persistence/Mappers/BaseMapper.cs @@ -8,10 +8,25 @@ namespace Umbraco.Core.Persistence.Mappers { public abstract class BaseMapper { - + private readonly ISqlSyntaxProvider _sqlSyntax; + + protected BaseMapper(ISqlSyntaxProvider sqlSyntax) + { + _sqlSyntax = sqlSyntax; + } + internal abstract ConcurrentDictionary PropertyInfoCache { get; } - internal abstract void BuildMap(); + private bool _built = false; + public void Build() + { + if (_built) return; + + _built = true; + BuildMap(); + } + + protected abstract void BuildMap(); internal string Map(string propertyName, bool throws = false) { @@ -58,8 +73,8 @@ namespace Umbraco.Core.Persistence.Mappers string columnName = columnAttribute.Name; string columnMap = string.Format("{0}.{1}", - SqlSyntaxContext.SqlSyntaxProvider.GetQuotedTableName(tableName), - SqlSyntaxContext.SqlSyntaxProvider.GetQuotedColumnName(columnName)); + _sqlSyntax.GetQuotedTableName(tableName), + _sqlSyntax.GetQuotedColumnName(columnName)); return columnMap; } } diff --git a/src/Umbraco.Core/Persistence/Mappers/ContentMapper.cs b/src/Umbraco.Core/Persistence/Mappers/ContentMapper.cs index 1cc29cf959..1d2320b355 100644 --- a/src/Umbraco.Core/Persistence/Mappers/ContentMapper.cs +++ b/src/Umbraco.Core/Persistence/Mappers/ContentMapper.cs @@ -3,6 +3,7 @@ using System.Collections.Concurrent; using System.Linq.Expressions; using Umbraco.Core.Models; using Umbraco.Core.Models.Rdbms; +using Umbraco.Core.Persistence.SqlSyntax; namespace Umbraco.Core.Persistence.Mappers { @@ -16,21 +17,19 @@ namespace Umbraco.Core.Persistence.Mappers { private static readonly ConcurrentDictionary PropertyInfoCacheInstance = new ConcurrentDictionary(); - //NOTE: its an internal class but the ctor must be public since we're using Activator.CreateInstance to create it - // otherwise that would fail because there is no public constructor. - public ContentMapper() - { - BuildMap(); - } #region Overrides of BaseMapper + public ContentMapper(ISqlSyntaxProvider sqlSyntax) : base(sqlSyntax) + { + } + internal override ConcurrentDictionary PropertyInfoCache { get { return PropertyInfoCacheInstance; } } - internal override void BuildMap() + protected override void BuildMap() { if(PropertyInfoCache.IsEmpty) { diff --git a/src/Umbraco.Core/Persistence/Mappers/ContentTypeMapper.cs b/src/Umbraco.Core/Persistence/Mappers/ContentTypeMapper.cs index 943b42b2ba..800489874c 100644 --- a/src/Umbraco.Core/Persistence/Mappers/ContentTypeMapper.cs +++ b/src/Umbraco.Core/Persistence/Mappers/ContentTypeMapper.cs @@ -1,6 +1,7 @@ using System.Collections.Concurrent; using Umbraco.Core.Models; using Umbraco.Core.Models.Rdbms; +using Umbraco.Core.Persistence.SqlSyntax; namespace Umbraco.Core.Persistence.Mappers { @@ -14,21 +15,19 @@ namespace Umbraco.Core.Persistence.Mappers { private static readonly ConcurrentDictionary PropertyInfoCacheInstance = new ConcurrentDictionary(); - //NOTE: its an internal class but the ctor must be public since we're using Activator.CreateInstance to create it - // otherwise that would fail because there is no public constructor. - public ContentTypeMapper() - { - BuildMap(); - } #region Overrides of BaseMapper + public ContentTypeMapper(ISqlSyntaxProvider sqlSyntax) : base(sqlSyntax) + { + } + internal override ConcurrentDictionary PropertyInfoCache { get { return PropertyInfoCacheInstance; } } - internal override void BuildMap() + protected override void BuildMap() { if (PropertyInfoCache.IsEmpty) { diff --git a/src/Umbraco.Core/Persistence/Mappers/DataTypeDefinitionMapper.cs b/src/Umbraco.Core/Persistence/Mappers/DataTypeDefinitionMapper.cs index ea27c8699f..bbea24e140 100644 --- a/src/Umbraco.Core/Persistence/Mappers/DataTypeDefinitionMapper.cs +++ b/src/Umbraco.Core/Persistence/Mappers/DataTypeDefinitionMapper.cs @@ -3,6 +3,7 @@ using System.Collections.Concurrent; using System.Linq.Expressions; using Umbraco.Core.Models; using Umbraco.Core.Models.Rdbms; +using Umbraco.Core.Persistence.SqlSyntax; namespace Umbraco.Core.Persistence.Mappers { @@ -16,21 +17,19 @@ namespace Umbraco.Core.Persistence.Mappers { private static readonly ConcurrentDictionary PropertyInfoCacheInstance = new ConcurrentDictionary(); - //NOTE: its an internal class but the ctor must be public since we're using Activator.CreateInstance to create it - // otherwise that would fail because there is no public constructor. - public DataTypeDefinitionMapper() - { - BuildMap(); - } #region Overrides of BaseMapper + public DataTypeDefinitionMapper(ISqlSyntaxProvider sqlSyntax) : base(sqlSyntax) + { + } + internal override ConcurrentDictionary PropertyInfoCache { get { return PropertyInfoCacheInstance; } } - internal override void BuildMap() + protected override void BuildMap() { CacheMap(src => src.Id, dto => dto.NodeId); CacheMap(src => src.CreateDate, dto => dto.CreateDate); diff --git a/src/Umbraco.Core/Persistence/Mappers/DictionaryMapper.cs b/src/Umbraco.Core/Persistence/Mappers/DictionaryMapper.cs index fddbee347a..a18822cd17 100644 --- a/src/Umbraco.Core/Persistence/Mappers/DictionaryMapper.cs +++ b/src/Umbraco.Core/Persistence/Mappers/DictionaryMapper.cs @@ -3,6 +3,7 @@ using System.Collections.Concurrent; using System.Linq.Expressions; using Umbraco.Core.Models; using Umbraco.Core.Models.Rdbms; +using Umbraco.Core.Persistence.SqlSyntax; namespace Umbraco.Core.Persistence.Mappers { @@ -16,21 +17,19 @@ namespace Umbraco.Core.Persistence.Mappers { private static readonly ConcurrentDictionary PropertyInfoCacheInstance = new ConcurrentDictionary(); - //NOTE: its an internal class but the ctor must be public since we're using Activator.CreateInstance to create it - // otherwise that would fail because there is no public constructor. - public DictionaryMapper() - { - BuildMap(); - } #region Overrides of BaseMapper + public DictionaryMapper(ISqlSyntaxProvider sqlSyntax) : base(sqlSyntax) + { + } + internal override ConcurrentDictionary PropertyInfoCache { get { return PropertyInfoCacheInstance; } } - internal override void BuildMap() + protected override void BuildMap() { CacheMap(src => src.Id, dto => dto.PrimaryKey); CacheMap(src => src.Key, dto => dto.UniqueId); diff --git a/src/Umbraco.Core/Persistence/Mappers/DictionaryTranslationMapper.cs b/src/Umbraco.Core/Persistence/Mappers/DictionaryTranslationMapper.cs index 017875a425..7ecd8eee64 100644 --- a/src/Umbraco.Core/Persistence/Mappers/DictionaryTranslationMapper.cs +++ b/src/Umbraco.Core/Persistence/Mappers/DictionaryTranslationMapper.cs @@ -3,6 +3,7 @@ using System.Collections.Concurrent; using System.Linq.Expressions; using Umbraco.Core.Models; using Umbraco.Core.Models.Rdbms; +using Umbraco.Core.Persistence.SqlSyntax; namespace Umbraco.Core.Persistence.Mappers { @@ -16,21 +17,19 @@ namespace Umbraco.Core.Persistence.Mappers { private static readonly ConcurrentDictionary PropertyInfoCacheInstance = new ConcurrentDictionary(); - //NOTE: its an internal class but the ctor must be public since we're using Activator.CreateInstance to create it - // otherwise that would fail because there is no public constructor. - public DictionaryTranslationMapper() - { - BuildMap(); - } #region Overrides of BaseMapper + public DictionaryTranslationMapper(ISqlSyntaxProvider sqlSyntax) : base(sqlSyntax) + { + } + internal override ConcurrentDictionary PropertyInfoCache { get { return PropertyInfoCacheInstance; } } - internal override void BuildMap() + protected override void BuildMap() { CacheMap(src => src.Id, dto => dto.PrimaryKey); CacheMap(src => src.Key, dto => dto.UniqueId); diff --git a/src/Umbraco.Core/Persistence/Mappers/DomainMapper.cs b/src/Umbraco.Core/Persistence/Mappers/DomainMapper.cs index 15d0852158..b4b6ebf05f 100644 --- a/src/Umbraco.Core/Persistence/Mappers/DomainMapper.cs +++ b/src/Umbraco.Core/Persistence/Mappers/DomainMapper.cs @@ -1,6 +1,7 @@ using System.Collections.Concurrent; using Umbraco.Core.Models.Rdbms; using Umbraco.Core.Persistence.Repositories; +using Umbraco.Core.Persistence.SqlSyntax; namespace Umbraco.Core.Persistence.Mappers { @@ -9,9 +10,9 @@ namespace Umbraco.Core.Persistence.Mappers { private static readonly ConcurrentDictionary PropertyInfoCacheInstance = new ConcurrentDictionary(); - public DomainMapper() + + public DomainMapper(ISqlSyntaxProvider sqlSyntax) : base(sqlSyntax) { - BuildMap(); } internal override ConcurrentDictionary PropertyInfoCache @@ -19,7 +20,7 @@ namespace Umbraco.Core.Persistence.Mappers get { return PropertyInfoCacheInstance; } } - internal override void BuildMap() + protected override void BuildMap() { CacheMap(src => src.Id, dto => dto.Id); CacheMap(src => src.RootContentId, dto => dto.RootStructureId); diff --git a/src/Umbraco.Core/Persistence/Mappers/LanguageMapper.cs b/src/Umbraco.Core/Persistence/Mappers/LanguageMapper.cs index 0832aace89..c85504583a 100644 --- a/src/Umbraco.Core/Persistence/Mappers/LanguageMapper.cs +++ b/src/Umbraco.Core/Persistence/Mappers/LanguageMapper.cs @@ -3,6 +3,7 @@ using System.Collections.Concurrent; using System.Linq.Expressions; using Umbraco.Core.Models; using Umbraco.Core.Models.Rdbms; +using Umbraco.Core.Persistence.SqlSyntax; namespace Umbraco.Core.Persistence.Mappers { @@ -16,19 +17,19 @@ namespace Umbraco.Core.Persistence.Mappers { private static readonly ConcurrentDictionary PropertyInfoCacheInstance = new ConcurrentDictionary(); - public LanguageMapper() - { - BuildMap(); - } #region Overrides of BaseMapper + public LanguageMapper(ISqlSyntaxProvider sqlSyntax) : base(sqlSyntax) + { + } + internal override ConcurrentDictionary PropertyInfoCache { get { return PropertyInfoCacheInstance; } } - internal override void BuildMap() + protected override void BuildMap() { CacheMap(src => src.Id, dto => dto.Id); CacheMap(src => src.IsoCode, dto => dto.IsoCode); diff --git a/src/Umbraco.Core/Persistence/Mappers/MacroMapper.cs b/src/Umbraco.Core/Persistence/Mappers/MacroMapper.cs index 6194891482..7f58cf721b 100644 --- a/src/Umbraco.Core/Persistence/Mappers/MacroMapper.cs +++ b/src/Umbraco.Core/Persistence/Mappers/MacroMapper.cs @@ -1,6 +1,7 @@ using System.Collections.Concurrent; using Umbraco.Core.Models; using Umbraco.Core.Models.Rdbms; +using Umbraco.Core.Persistence.SqlSyntax; namespace Umbraco.Core.Persistence.Mappers { @@ -10,21 +11,20 @@ namespace Umbraco.Core.Persistence.Mappers { private static readonly ConcurrentDictionary PropertyInfoCacheInstance = new ConcurrentDictionary(); - //NOTE: its an internal class but the ctor must be public since we're using Activator.CreateInstance to create it - // otherwise that would fail because there is no public constructor. - public MacroMapper() - { - BuildMap(); - } #region Overrides of BaseMapper + public MacroMapper(ISqlSyntaxProvider sqlSyntax) + : base(sqlSyntax) + { + } + internal override ConcurrentDictionary PropertyInfoCache { get { return PropertyInfoCacheInstance; } } - internal override void BuildMap() + protected override void BuildMap() { CacheMap(src => src.Id, dto => dto.Id); CacheMap(src => src.Alias, dto => dto.Alias); diff --git a/src/Umbraco.Core/Persistence/Mappers/MappingResolver.cs b/src/Umbraco.Core/Persistence/Mappers/MappingResolver.cs index 0fe0e75b6c..650a7924a4 100644 --- a/src/Umbraco.Core/Persistence/Mappers/MappingResolver.cs +++ b/src/Umbraco.Core/Persistence/Mappers/MappingResolver.cs @@ -42,6 +42,8 @@ namespace Umbraco.Core.Persistence.Mappers var byAttribute = TryGetMapperByAttribute(type); if (byAttribute.Success) { + //ensure it's built + byAttribute.Result.Build(); return byAttribute.Result; } throw new Exception("Invalid Type: A Mapper could not be resolved based on the passed in Type"); @@ -65,6 +67,9 @@ namespace Umbraco.Core.Persistence.Mappers return Attempt.Fail(); } + //ensure it's built + mapper.Build(); + return Attempt.Succeed(mapper); } diff --git a/src/Umbraco.Core/Persistence/Mappers/MediaMapper.cs b/src/Umbraco.Core/Persistence/Mappers/MediaMapper.cs index 66f6258527..a8b6fa924e 100644 --- a/src/Umbraco.Core/Persistence/Mappers/MediaMapper.cs +++ b/src/Umbraco.Core/Persistence/Mappers/MediaMapper.cs @@ -3,6 +3,7 @@ using System.Collections.Concurrent; using System.Linq.Expressions; using Umbraco.Core.Models; using Umbraco.Core.Models.Rdbms; +using Umbraco.Core.Persistence.SqlSyntax; namespace Umbraco.Core.Persistence.Mappers { @@ -16,21 +17,18 @@ namespace Umbraco.Core.Persistence.Mappers { private static readonly ConcurrentDictionary PropertyInfoCacheInstance = new ConcurrentDictionary(); - //NOTE: its an internal class but the ctor must be public since we're using Activator.CreateInstance to create it - // otherwise that would fail because there is no public constructor. - public MediaMapper() - { - BuildMap(); - } - #region Overrides of BaseMapper + public MediaMapper(ISqlSyntaxProvider sqlSyntax) : base(sqlSyntax) + { + } + internal override ConcurrentDictionary PropertyInfoCache { get { return PropertyInfoCacheInstance; } } - internal override void BuildMap() + protected override void BuildMap() { if (PropertyInfoCache.IsEmpty) { diff --git a/src/Umbraco.Core/Persistence/Mappers/MediaTypeMapper.cs b/src/Umbraco.Core/Persistence/Mappers/MediaTypeMapper.cs index 70e4b5c861..f3d5083b67 100644 --- a/src/Umbraco.Core/Persistence/Mappers/MediaTypeMapper.cs +++ b/src/Umbraco.Core/Persistence/Mappers/MediaTypeMapper.cs @@ -1,6 +1,7 @@ using System.Collections.Concurrent; using Umbraco.Core.Models; using Umbraco.Core.Models.Rdbms; +using Umbraco.Core.Persistence.SqlSyntax; namespace Umbraco.Core.Persistence.Mappers { @@ -14,21 +15,19 @@ namespace Umbraco.Core.Persistence.Mappers { private static readonly ConcurrentDictionary PropertyInfoCacheInstance = new ConcurrentDictionary(); - //NOTE: its an internal class but the ctor must be public since we're using Activator.CreateInstance to create it - // otherwise that would fail because there is no public constructor. - public MediaTypeMapper() - { - BuildMap(); - } #region Overrides of BaseMapper + public MediaTypeMapper(ISqlSyntaxProvider sqlSyntax) : base(sqlSyntax) + { + } + internal override ConcurrentDictionary PropertyInfoCache { get { return PropertyInfoCacheInstance; } } - internal override void BuildMap() + protected override void BuildMap() { if (PropertyInfoCache.IsEmpty) { diff --git a/src/Umbraco.Core/Persistence/Mappers/MemberGroupMapper.cs b/src/Umbraco.Core/Persistence/Mappers/MemberGroupMapper.cs index da57738403..dc1d949544 100644 --- a/src/Umbraco.Core/Persistence/Mappers/MemberGroupMapper.cs +++ b/src/Umbraco.Core/Persistence/Mappers/MemberGroupMapper.cs @@ -1,6 +1,7 @@ using System.Collections.Concurrent; using Umbraco.Core.Models; using Umbraco.Core.Models.Rdbms; +using Umbraco.Core.Persistence.SqlSyntax; namespace Umbraco.Core.Persistence.Mappers { @@ -10,11 +11,9 @@ namespace Umbraco.Core.Persistence.Mappers { private static readonly ConcurrentDictionary PropertyInfoCacheInstance = new ConcurrentDictionary(); - //NOTE: its an internal class but the ctor must be public since we're using Activator.CreateInstance to create it - // otherwise that would fail because there is no public constructor. - public MemberGroupMapper() + + public MemberGroupMapper(ISqlSyntaxProvider sqlSyntax) : base(sqlSyntax) { - BuildMap(); } internal override ConcurrentDictionary PropertyInfoCache @@ -22,7 +21,7 @@ namespace Umbraco.Core.Persistence.Mappers get { return PropertyInfoCacheInstance; } } - internal override void BuildMap() + protected override void BuildMap() { CacheMap(src => src.Id, dto => dto.NodeId); CacheMap(src => src.CreateDate, dto => dto.CreateDate); diff --git a/src/Umbraco.Core/Persistence/Mappers/MemberMapper.cs b/src/Umbraco.Core/Persistence/Mappers/MemberMapper.cs index b8c5f1f3c1..977e2d9bda 100644 --- a/src/Umbraco.Core/Persistence/Mappers/MemberMapper.cs +++ b/src/Umbraco.Core/Persistence/Mappers/MemberMapper.cs @@ -2,6 +2,7 @@ using Umbraco.Core.Models.EntityBase; using Umbraco.Core.Models; using Umbraco.Core.Models.Rdbms; +using Umbraco.Core.Persistence.SqlSyntax; namespace Umbraco.Core.Persistence.Mappers { @@ -15,21 +16,18 @@ namespace Umbraco.Core.Persistence.Mappers { private static readonly ConcurrentDictionary PropertyInfoCacheInstance = new ConcurrentDictionary(); - //NOTE: its an internal class but the ctor must be public since we're using Activator.CreateInstance to create it - // otherwise that would fail because there is no public constructor. - public MemberMapper() - { - BuildMap(); - } - #region Overrides of BaseMapper + public MemberMapper(ISqlSyntaxProvider sqlSyntax) : base(sqlSyntax) + { + } + internal override ConcurrentDictionary PropertyInfoCache { get { return PropertyInfoCacheInstance; } } - internal override void BuildMap() + protected override void BuildMap() { CacheMap(src => src.Id, dto => dto.NodeId); CacheMap(src => src.CreateDate, dto => dto.CreateDate); diff --git a/src/Umbraco.Core/Persistence/Mappers/MemberTypeMapper.cs b/src/Umbraco.Core/Persistence/Mappers/MemberTypeMapper.cs index 69a5190b46..67d9ba9ac9 100644 --- a/src/Umbraco.Core/Persistence/Mappers/MemberTypeMapper.cs +++ b/src/Umbraco.Core/Persistence/Mappers/MemberTypeMapper.cs @@ -1,6 +1,7 @@ using System.Collections.Concurrent; using Umbraco.Core.Models; using Umbraco.Core.Models.Rdbms; +using Umbraco.Core.Persistence.SqlSyntax; namespace Umbraco.Core.Persistence.Mappers { @@ -15,21 +16,18 @@ namespace Umbraco.Core.Persistence.Mappers private static readonly ConcurrentDictionary PropertyInfoCacheInstance = new ConcurrentDictionary(); - //NOTE: its an internal class but the ctor must be public since we're using Activator.CreateInstance to create it - // otherwise that would fail because there is no public constructor. - public MemberTypeMapper() - { - BuildMap(); - } - #region Overrides of BaseMapper + public MemberTypeMapper(ISqlSyntaxProvider sqlSyntax) : base(sqlSyntax) + { + } + internal override ConcurrentDictionary PropertyInfoCache { get { return PropertyInfoCacheInstance; } } - internal override void BuildMap() + protected override void BuildMap() { if (PropertyInfoCache.IsEmpty) { diff --git a/src/Umbraco.Core/Persistence/Mappers/PropertyGroupMapper.cs b/src/Umbraco.Core/Persistence/Mappers/PropertyGroupMapper.cs index d911db1967..0b44b24702 100644 --- a/src/Umbraco.Core/Persistence/Mappers/PropertyGroupMapper.cs +++ b/src/Umbraco.Core/Persistence/Mappers/PropertyGroupMapper.cs @@ -3,6 +3,7 @@ using System.Collections.Concurrent; using System.Linq.Expressions; using Umbraco.Core.Models; using Umbraco.Core.Models.Rdbms; +using Umbraco.Core.Persistence.SqlSyntax; namespace Umbraco.Core.Persistence.Mappers { @@ -15,21 +16,19 @@ namespace Umbraco.Core.Persistence.Mappers { private static readonly ConcurrentDictionary PropertyInfoCacheInstance = new ConcurrentDictionary(); - //NOTE: its an internal class but the ctor must be public since we're using Activator.CreateInstance to create it - // otherwise that would fail because there is no public constructor. - public PropertyGroupMapper() - { - BuildMap(); - } #region Overrides of BaseMapper + public PropertyGroupMapper(ISqlSyntaxProvider sqlSyntax) : base(sqlSyntax) + { + } + internal override ConcurrentDictionary PropertyInfoCache { get { return PropertyInfoCacheInstance; } } - internal override void BuildMap() + protected override void BuildMap() { CacheMap(src => src.Id, dto => dto.Id); CacheMap(src => src.ParentId, dto => dto.ParentGroupId); diff --git a/src/Umbraco.Core/Persistence/Mappers/PropertyMapper.cs b/src/Umbraco.Core/Persistence/Mappers/PropertyMapper.cs index 5d7fd74dc9..a7097d4425 100644 --- a/src/Umbraco.Core/Persistence/Mappers/PropertyMapper.cs +++ b/src/Umbraco.Core/Persistence/Mappers/PropertyMapper.cs @@ -3,6 +3,7 @@ using System.Collections.Concurrent; using System.Linq.Expressions; using Umbraco.Core.Models; using Umbraco.Core.Models.Rdbms; +using Umbraco.Core.Persistence.SqlSyntax; namespace Umbraco.Core.Persistence.Mappers { @@ -11,27 +12,22 @@ namespace Umbraco.Core.Persistence.Mappers { private static readonly ConcurrentDictionary PropertyInfoCacheInstance = new ConcurrentDictionary(); - //NOTE: its an internal class but the ctor must be public since we're using Activator.CreateInstance to create it - // otherwise that would fail because there is no public constructor. - public PropertyMapper() + public PropertyMapper(ISqlSyntaxProvider sqlSyntax) : base(sqlSyntax) { - BuildMap(); } - #region Overrides of BaseMapper - internal override ConcurrentDictionary PropertyInfoCache { get { return PropertyInfoCacheInstance; } } - internal override void BuildMap() + protected override void BuildMap() { CacheMap(src => src.Id, dto => dto.Id); CacheMap(src => src.Version, dto => dto.VersionId); CacheMap(src => src.PropertyTypeId, dto => dto.PropertyTypeId); } - #endregion + } } \ No newline at end of file diff --git a/src/Umbraco.Core/Persistence/Mappers/PropertyTypeMapper.cs b/src/Umbraco.Core/Persistence/Mappers/PropertyTypeMapper.cs index 339994a322..775cb690d4 100644 --- a/src/Umbraco.Core/Persistence/Mappers/PropertyTypeMapper.cs +++ b/src/Umbraco.Core/Persistence/Mappers/PropertyTypeMapper.cs @@ -3,6 +3,7 @@ using System.Collections.Concurrent; using System.Linq.Expressions; using Umbraco.Core.Models; using Umbraco.Core.Models.Rdbms; +using Umbraco.Core.Persistence.SqlSyntax; namespace Umbraco.Core.Persistence.Mappers { @@ -15,21 +16,18 @@ namespace Umbraco.Core.Persistence.Mappers { private static readonly ConcurrentDictionary PropertyInfoCacheInstance = new ConcurrentDictionary(); - //NOTE: its an internal class but the ctor must be public since we're using Activator.CreateInstance to create it - // otherwise that would fail because there is no public constructor. - public PropertyTypeMapper() - { - BuildMap(); - } - #region Overrides of BaseMapper + public PropertyTypeMapper(ISqlSyntaxProvider sqlSyntax) : base(sqlSyntax) + { + } + internal override ConcurrentDictionary PropertyInfoCache { get { return PropertyInfoCacheInstance; } } - internal override void BuildMap() + protected override void BuildMap() { if(PropertyInfoCache.IsEmpty) { diff --git a/src/Umbraco.Core/Persistence/Mappers/RelationMapper.cs b/src/Umbraco.Core/Persistence/Mappers/RelationMapper.cs index 944e30c381..594d61fd35 100644 --- a/src/Umbraco.Core/Persistence/Mappers/RelationMapper.cs +++ b/src/Umbraco.Core/Persistence/Mappers/RelationMapper.cs @@ -3,6 +3,7 @@ using System.Collections.Concurrent; using System.Linq.Expressions; using Umbraco.Core.Models; using Umbraco.Core.Models.Rdbms; +using Umbraco.Core.Persistence.SqlSyntax; namespace Umbraco.Core.Persistence.Mappers { @@ -16,21 +17,18 @@ namespace Umbraco.Core.Persistence.Mappers { private static readonly ConcurrentDictionary PropertyInfoCacheInstance = new ConcurrentDictionary(); - //NOTE: its an internal class but the ctor must be public since we're using Activator.CreateInstance to create it - // otherwise that would fail because there is no public constructor. - public RelationMapper() - { - BuildMap(); - } - #region Overrides of BaseMapper + public RelationMapper(ISqlSyntaxProvider sqlSyntax) : base(sqlSyntax) + { + } + internal override ConcurrentDictionary PropertyInfoCache { get { return PropertyInfoCacheInstance; } } - internal override void BuildMap() + protected override void BuildMap() { CacheMap(src => src.Id, dto => dto.Id); CacheMap(src => src.ChildId, dto => dto.ChildId); diff --git a/src/Umbraco.Core/Persistence/Mappers/RelationTypeMapper.cs b/src/Umbraco.Core/Persistence/Mappers/RelationTypeMapper.cs index 8748bd9033..4b1e28708a 100644 --- a/src/Umbraco.Core/Persistence/Mappers/RelationTypeMapper.cs +++ b/src/Umbraco.Core/Persistence/Mappers/RelationTypeMapper.cs @@ -3,6 +3,7 @@ using System.Collections.Concurrent; using System.Linq.Expressions; using Umbraco.Core.Models; using Umbraco.Core.Models.Rdbms; +using Umbraco.Core.Persistence.SqlSyntax; namespace Umbraco.Core.Persistence.Mappers { @@ -16,21 +17,18 @@ namespace Umbraco.Core.Persistence.Mappers { private static readonly ConcurrentDictionary PropertyInfoCacheInstance = new ConcurrentDictionary(); - //NOTE: its an internal class but the ctor must be public since we're using Activator.CreateInstance to create it - // otherwise that would fail because there is no public constructor. - public RelationTypeMapper() - { - BuildMap(); - } - #region Overrides of BaseMapper + public RelationTypeMapper(ISqlSyntaxProvider sqlSyntax) : base(sqlSyntax) + { + } + internal override ConcurrentDictionary PropertyInfoCache { get { return PropertyInfoCacheInstance; } } - internal override void BuildMap() + protected override void BuildMap() { CacheMap(src => src.Id, dto => dto.Id); CacheMap(src => src.Alias, dto => dto.Alias); diff --git a/src/Umbraco.Core/Persistence/Mappers/ServerRegistrationMapper.cs b/src/Umbraco.Core/Persistence/Mappers/ServerRegistrationMapper.cs index 24b0632f8a..f5e7a5cb79 100644 --- a/src/Umbraco.Core/Persistence/Mappers/ServerRegistrationMapper.cs +++ b/src/Umbraco.Core/Persistence/Mappers/ServerRegistrationMapper.cs @@ -3,6 +3,7 @@ using System.Collections.Concurrent; using System.Linq.Expressions; using Umbraco.Core.Models; using Umbraco.Core.Models.Rdbms; +using Umbraco.Core.Persistence.SqlSyntax; namespace Umbraco.Core.Persistence.Mappers { @@ -11,21 +12,19 @@ namespace Umbraco.Core.Persistence.Mappers { private static readonly ConcurrentDictionary PropertyInfoCacheInstance = new ConcurrentDictionary(); - //NOTE: its an internal class but the ctor must be public since we're using Activator.CreateInstance to create it - // otherwise that would fail because there is no public constructor. - public ServerRegistrationMapper() - { - BuildMap(); - } - #region Overrides of BaseMapper + public ServerRegistrationMapper(ISqlSyntaxProvider sqlSyntax) + : base(sqlSyntax) + { + } + internal override ConcurrentDictionary PropertyInfoCache { get { return PropertyInfoCacheInstance; } } - internal override void BuildMap() + protected override void BuildMap() { CacheMap(src => src.Id, dto => dto.Id); CacheMap(src => src.IsActive, dto => dto.IsActive); diff --git a/src/Umbraco.Core/Persistence/Mappers/TagMapper.cs b/src/Umbraco.Core/Persistence/Mappers/TagMapper.cs index 74a0a05063..e6f8e4581e 100644 --- a/src/Umbraco.Core/Persistence/Mappers/TagMapper.cs +++ b/src/Umbraco.Core/Persistence/Mappers/TagMapper.cs @@ -1,6 +1,7 @@ using System.Collections.Concurrent; using Umbraco.Core.Models; using Umbraco.Core.Models.Rdbms; +using Umbraco.Core.Persistence.SqlSyntax; namespace Umbraco.Core.Persistence.Mappers { @@ -14,21 +15,19 @@ namespace Umbraco.Core.Persistence.Mappers { private static readonly ConcurrentDictionary PropertyInfoCacheInstance = new ConcurrentDictionary(); - //NOTE: its an internal class but the ctor must be public since we're using Activator.CreateInstance to create it - // otherwise that would fail because there is no public constructor. - public TagMapper() - { - BuildMap(); - } #region Overrides of BaseMapper + public TagMapper(ISqlSyntaxProvider sqlSyntax) : base(sqlSyntax) + { + } + internal override ConcurrentDictionary PropertyInfoCache { get { return PropertyInfoCacheInstance; } } - internal override void BuildMap() + protected override void BuildMap() { if (PropertyInfoCache.IsEmpty) { diff --git a/src/Umbraco.Core/Persistence/Mappers/TemplateMapper.cs b/src/Umbraco.Core/Persistence/Mappers/TemplateMapper.cs index 08a7de0777..6e1ad761ac 100644 --- a/src/Umbraco.Core/Persistence/Mappers/TemplateMapper.cs +++ b/src/Umbraco.Core/Persistence/Mappers/TemplateMapper.cs @@ -6,6 +6,7 @@ using System.Text; using System.Threading.Tasks; using Umbraco.Core.Models; using Umbraco.Core.Models.Rdbms; +using Umbraco.Core.Persistence.SqlSyntax; namespace Umbraco.Core.Persistence.Mappers { @@ -19,21 +20,19 @@ namespace Umbraco.Core.Persistence.Mappers { private static readonly ConcurrentDictionary PropertyInfoCacheInstance = new ConcurrentDictionary(); - //NOTE: its an internal class but the ctor must be public since we're using Activator.CreateInstance to create it - // otherwise that would fail because there is no public constructor. - public TemplateMapper() - { - BuildMap(); - } #region Overrides of BaseMapper + public TemplateMapper(ISqlSyntaxProvider sqlSyntax) : base(sqlSyntax) + { + } + internal override ConcurrentDictionary PropertyInfoCache { get { return PropertyInfoCacheInstance; } } - internal override void BuildMap() + protected override void BuildMap() { if(PropertyInfoCache.IsEmpty) { diff --git a/src/Umbraco.Core/Persistence/Mappers/UmbracoEntityMapper.cs b/src/Umbraco.Core/Persistence/Mappers/UmbracoEntityMapper.cs index 248d5ebc42..b030dbee99 100644 --- a/src/Umbraco.Core/Persistence/Mappers/UmbracoEntityMapper.cs +++ b/src/Umbraco.Core/Persistence/Mappers/UmbracoEntityMapper.cs @@ -3,6 +3,7 @@ using System.Collections.Concurrent; using System.Linq.Expressions; using Umbraco.Core.Models.EntityBase; using Umbraco.Core.Models.Rdbms; +using Umbraco.Core.Persistence.SqlSyntax; namespace Umbraco.Core.Persistence.Mappers { @@ -11,21 +12,19 @@ namespace Umbraco.Core.Persistence.Mappers { private static readonly ConcurrentDictionary PropertyInfoCacheInstance = new ConcurrentDictionary(); - //NOTE: its an internal class but the ctor must be public since we're using Activator.CreateInstance to create it - // otherwise that would fail because there is no public constructor. - public UmbracoEntityMapper() - { - BuildMap(); - } #region Overrides of BaseMapper + public UmbracoEntityMapper(ISqlSyntaxProvider sqlSyntax) : base(sqlSyntax) + { + } + internal override ConcurrentDictionary PropertyInfoCache { get { return PropertyInfoCacheInstance; } } - internal override void BuildMap() + protected override void BuildMap() { CacheMap(src => src.Id, dto => dto.NodeId); CacheMap(src => src.CreateDate, dto => dto.CreateDate); diff --git a/src/Umbraco.Core/Persistence/Mappers/UserMapper.cs b/src/Umbraco.Core/Persistence/Mappers/UserMapper.cs index 9c51f53596..07c0ae210f 100644 --- a/src/Umbraco.Core/Persistence/Mappers/UserMapper.cs +++ b/src/Umbraco.Core/Persistence/Mappers/UserMapper.cs @@ -3,6 +3,7 @@ using System.Collections.Concurrent; using System.Linq.Expressions; using Umbraco.Core.Models.Membership; using Umbraco.Core.Models.Rdbms; +using Umbraco.Core.Persistence.SqlSyntax; namespace Umbraco.Core.Persistence.Mappers { @@ -12,21 +13,19 @@ namespace Umbraco.Core.Persistence.Mappers { private static readonly ConcurrentDictionary PropertyInfoCacheInstance = new ConcurrentDictionary(); - //NOTE: its an internal class but the ctor must be public since we're using Activator.CreateInstance to create it - // otherwise that would fail because there is no public constructor. - public UserMapper() - { - BuildMap(); - } #region Overrides of BaseMapper + public UserMapper(ISqlSyntaxProvider sqlSyntax) : base(sqlSyntax) + { + } + internal override ConcurrentDictionary PropertyInfoCache { get { return PropertyInfoCacheInstance; } } - internal override void BuildMap() + protected override void BuildMap() { CacheMap(src => src.Id, dto => dto.Id); CacheMap(src => src.Email, dto => dto.Email); diff --git a/src/Umbraco.Core/Persistence/Mappers/UserTypeMapper.cs b/src/Umbraco.Core/Persistence/Mappers/UserTypeMapper.cs index 82f362b6f4..7719723036 100644 --- a/src/Umbraco.Core/Persistence/Mappers/UserTypeMapper.cs +++ b/src/Umbraco.Core/Persistence/Mappers/UserTypeMapper.cs @@ -3,6 +3,7 @@ using System.Collections.Concurrent; using System.Linq.Expressions; using Umbraco.Core.Models.Membership; using Umbraco.Core.Models.Rdbms; +using Umbraco.Core.Persistence.SqlSyntax; namespace Umbraco.Core.Persistence.Mappers { @@ -16,21 +17,18 @@ namespace Umbraco.Core.Persistence.Mappers { private static readonly ConcurrentDictionary PropertyInfoCacheInstance = new ConcurrentDictionary(); - //NOTE: its an internal class but the ctor must be public since we're using Activator.CreateInstance to create it - // otherwise that would fail because there is no public constructor. - public UserTypeMapper() - { - BuildMap(); - } - #region Overrides of BaseMapper + public UserTypeMapper(ISqlSyntaxProvider sqlSyntax) : base(sqlSyntax) + { + } + internal override ConcurrentDictionary PropertyInfoCache { get { return PropertyInfoCacheInstance; } } - internal override void BuildMap() + protected override void BuildMap() { CacheMap(src => src.Id, dto => dto.Id); CacheMap(src => src.Alias, dto => dto.Alias); diff --git a/src/Umbraco.Core/Persistence/Migrations/IMigrationContext.cs b/src/Umbraco.Core/Persistence/Migrations/IMigrationContext.cs index 159efb6ff8..b162eba305 100644 --- a/src/Umbraco.Core/Persistence/Migrations/IMigrationContext.cs +++ b/src/Umbraco.Core/Persistence/Migrations/IMigrationContext.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using Umbraco.Core.Persistence.SqlSyntax; namespace Umbraco.Core.Persistence.Migrations { @@ -7,5 +8,6 @@ namespace Umbraco.Core.Persistence.Migrations ICollection Expressions { get; set; } DatabaseProviders CurrentDatabaseProvider { get; } Database Database { get; } + ISqlSyntaxProvider SqlSyntax { get; } } } \ No newline at end of file diff --git a/src/Umbraco.Core/Persistence/Migrations/Initial/DatabaseSchemaCreation.cs b/src/Umbraco.Core/Persistence/Migrations/Initial/DatabaseSchemaCreation.cs index b77e0843ea..86b1549c35 100644 --- a/src/Umbraco.Core/Persistence/Migrations/Initial/DatabaseSchemaCreation.cs +++ b/src/Umbraco.Core/Persistence/Migrations/Initial/DatabaseSchemaCreation.cs @@ -142,7 +142,7 @@ namespace Umbraco.Core.Persistence.Migrations.Initial /// public DatabaseSchemaResult ValidateSchema() { - var result = new DatabaseSchemaResult(); + var result = new DatabaseSchemaResult(_sqlSyntaxProvider); //get the db index defs result.DbIndexDefinitions = _sqlSyntaxProvider.GetDefinedIndexes(_database) @@ -156,7 +156,7 @@ namespace Umbraco.Core.Persistence.Migrations.Initial foreach (var item in OrderedTables.OrderBy(x => x.Key)) { - var tableDefinition = DefinitionFactory.GetTableDefinition(item.Value); + var tableDefinition = DefinitionFactory.GetTableDefinition(item.Value, _sqlSyntaxProvider); result.TableDefinitions.Add(tableDefinition); } diff --git a/src/Umbraco.Core/Persistence/Migrations/Initial/DatabaseSchemaResult.cs b/src/Umbraco.Core/Persistence/Migrations/Initial/DatabaseSchemaResult.cs index ca0cf7ebd2..19cf4944c0 100644 --- a/src/Umbraco.Core/Persistence/Migrations/Initial/DatabaseSchemaResult.cs +++ b/src/Umbraco.Core/Persistence/Migrations/Initial/DatabaseSchemaResult.cs @@ -10,8 +10,11 @@ namespace Umbraco.Core.Persistence.Migrations.Initial { public class DatabaseSchemaResult { - public DatabaseSchemaResult() + private readonly ISqlSyntaxProvider _sqlSyntax; + + public DatabaseSchemaResult(ISqlSyntaxProvider sqlSyntax) { + _sqlSyntax = sqlSyntax; Errors = new List>(); TableDefinitions = new List(); ValidTables = new List(); @@ -150,7 +153,7 @@ namespace Umbraco.Core.Persistence.Migrations.Initial sb.AppendLine(" "); } - if (SqlSyntaxContext.SqlSyntaxProvider is MySqlSyntaxProvider) + if (_sqlSyntax is MySqlSyntaxProvider) { sb.AppendLine("Please note that the constraints could not be validated because the current dataprovider is MySql."); } diff --git a/src/Umbraco.Core/Persistence/Migrations/MigrationBase.cs b/src/Umbraco.Core/Persistence/Migrations/MigrationBase.cs index e37d001fea..64ad867008 100644 --- a/src/Umbraco.Core/Persistence/Migrations/MigrationBase.cs +++ b/src/Umbraco.Core/Persistence/Migrations/MigrationBase.cs @@ -17,12 +17,6 @@ namespace Umbraco.Core.Persistence.Migrations public ISqlSyntaxProvider SqlSyntax { get; private set; } public ILogger Logger { get; private set; } - [Obsolete("Use the other constructor specifying all dependencies instead")] - protected MigrationBase() - : this(SqlSyntaxContext.SqlSyntaxProvider, LoggerResolver.Current.Logger) - { - } - protected MigrationBase(ISqlSyntaxProvider sqlSyntax, ILogger logger) { SqlSyntax = sqlSyntax; @@ -53,12 +47,12 @@ namespace Umbraco.Core.Persistence.Migrations public ICreateBuilder Create { - get { return new CreateBuilder(Context, SqlSyntax); } + get { return new CreateBuilder(Context); } } public IDeleteBuilder Delete { - get { return new DeleteBuilder(Context, SqlSyntax); } + get { return new DeleteBuilder(Context); } } public IExecuteBuilder Execute diff --git a/src/Umbraco.Core/Persistence/Migrations/MigrationContext.cs b/src/Umbraco.Core/Persistence/Migrations/MigrationContext.cs index 07fc3db387..c2f0b6051d 100644 --- a/src/Umbraco.Core/Persistence/Migrations/MigrationContext.cs +++ b/src/Umbraco.Core/Persistence/Migrations/MigrationContext.cs @@ -1,17 +1,24 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; using System.Collections.ObjectModel; using Umbraco.Core.Logging; +using Umbraco.Core.Persistence.SqlSyntax; namespace Umbraco.Core.Persistence.Migrations { internal class MigrationContext : IMigrationContext { - public MigrationContext(DatabaseProviders databaseProvider, Database database, ILogger logger) + public MigrationContext(DatabaseProviders databaseProvider, Database database, ILogger logger, ISqlSyntaxProvider sqlSyntax) { + if (database == null) throw new ArgumentNullException("database"); + if (logger == null) throw new ArgumentNullException("logger"); + if (sqlSyntax == null) throw new ArgumentNullException("sqlSyntax"); + Expressions = new Collection(); CurrentDatabaseProvider = databaseProvider; Database = database; Logger = logger; + SqlSyntax = sqlSyntax; } public ICollection Expressions { get; set; } @@ -20,6 +27,8 @@ namespace Umbraco.Core.Persistence.Migrations public Database Database { get; private set; } + public ISqlSyntaxProvider SqlSyntax { get; private set; } + public ILogger Logger { get; private set; } } } \ No newline at end of file diff --git a/src/Umbraco.Core/Persistence/Migrations/MigrationExpressionBase.cs b/src/Umbraco.Core/Persistence/Migrations/MigrationExpressionBase.cs index e7535e78d4..5349658c8e 100644 --- a/src/Umbraco.Core/Persistence/Migrations/MigrationExpressionBase.cs +++ b/src/Umbraco.Core/Persistence/Migrations/MigrationExpressionBase.cs @@ -7,28 +7,17 @@ namespace Umbraco.Core.Persistence.Migrations { public abstract class MigrationExpressionBase : IMigrationExpression { - [Obsolete("Use the other constructors specifying an ISqlSyntaxProvider instead")] - protected MigrationExpressionBase() - : this(SqlSyntaxContext.SqlSyntaxProvider) - { - } - [Obsolete("Use the other constructors specifying an ISqlSyntaxProvider instead")] - protected MigrationExpressionBase(DatabaseProviders current, DatabaseProviders[] databaseProviders) - : this(current, databaseProviders, SqlSyntaxContext.SqlSyntaxProvider) - { - } + //protected MigrationExpressionBase(ISqlSyntaxProvider sqlSyntax) + //{ + // SqlSyntax = sqlSyntax; + //} - protected MigrationExpressionBase(ISqlSyntaxProvider sqlSyntax) + protected MigrationExpressionBase(ISqlSyntaxProvider sqlSyntax, DatabaseProviders currentDatabaseProvider, DatabaseProviders[] supportedDatabaseProviders = null) { + SupportedDatabaseProviders = supportedDatabaseProviders; SqlSyntax = sqlSyntax; - } - - protected MigrationExpressionBase(DatabaseProviders current, DatabaseProviders[] databaseProviders, ISqlSyntaxProvider sqlSyntax) - { - SupportedDatabaseProviders = databaseProviders; - SqlSyntax = sqlSyntax; - CurrentDatabaseProvider = current; + CurrentDatabaseProvider = currentDatabaseProvider; } public virtual DatabaseProviders[] SupportedDatabaseProviders { get; private set; } diff --git a/src/Umbraco.Core/Persistence/Migrations/MigrationResolver.cs b/src/Umbraco.Core/Persistence/Migrations/MigrationResolver.cs index 69391c7485..de5f676509 100644 --- a/src/Umbraco.Core/Persistence/Migrations/MigrationResolver.cs +++ b/src/Umbraco.Core/Persistence/Migrations/MigrationResolver.cs @@ -1,36 +1,29 @@ using System; using System.Collections.Generic; +using Umbraco.Core.LightInject; using Umbraco.Core.Logging; using Umbraco.Core.ObjectResolution; namespace Umbraco.Core.Persistence.Migrations { - /// - /// A resolver to return all IMigrations - /// - internal class MigrationResolver : LazyManyObjectsResolverBase - { - /// - /// Constructor - /// - /// - /// - /// - /// - /// Use transient objects as we don't want these as singletons and take up memory that is not required - /// - public MigrationResolver(IServiceProvider serviceProvider, ILogger logger, Func> migrations) - : base(serviceProvider, logger, migrations, ObjectLifetimeScope.Transient) - { - } + /// + /// A resolver to return all IMigrations + /// + internal class MigrationResolver : ContainerLazyManyObjectsResolver + { - /// - /// Gets the migrations - /// - public IEnumerable Migrations - { - get { return Values; } - } + public MigrationResolver(IServiceContainer container, ILogger logger, Func> migrations) + : base(container, logger, migrations, ObjectLifetimeScope.Transient) + { + } - } + /// + /// Gets the migrations + /// + public IEnumerable Migrations + { + get { return Values; } + } + + } } \ No newline at end of file diff --git a/src/Umbraco.Core/Persistence/Migrations/MigrationRunner.cs b/src/Umbraco.Core/Persistence/Migrations/MigrationRunner.cs index beacd2014d..6f3250698a 100644 --- a/src/Umbraco.Core/Persistence/Migrations/MigrationRunner.cs +++ b/src/Umbraco.Core/Persistence/Migrations/MigrationRunner.cs @@ -4,6 +4,7 @@ using System.Linq; using Umbraco.Core.Events; using Umbraco.Core.Logging; using Umbraco.Core.Persistence.Migrations.Syntax.IfDatabase; +using Umbraco.Core.Persistence.SqlSyntax; namespace Umbraco.Core.Persistence.Migrations { @@ -18,11 +19,6 @@ namespace Umbraco.Core.Persistence.Migrations private readonly Version _targetVersion; private readonly string _productName; - [Obsolete("Use the ctor that specifies all dependencies instead")] - public MigrationRunner(Version currentVersion, Version targetVersion, string productName) - : this(LoggerResolver.Current.Logger, currentVersion, targetVersion, productName) - { - } public MigrationRunner(ILogger logger, Version currentVersion, Version targetVersion, string productName) { @@ -37,25 +33,16 @@ namespace Umbraco.Core.Persistence.Migrations _productName = productName; } - /// - /// Executes the migrations against the database. - /// - /// The PetaPoco Database, which the migrations will be run against - /// Boolean indicating whether this is an upgrade or downgrade - /// True if migrations were applied, otherwise False - public virtual bool Execute(Database database, bool isUpgrade = true) - { - return Execute(database, database.GetDatabaseProvider(), isUpgrade); - } /// /// Executes the migrations against the database. /// /// The PetaPoco Database, which the migrations will be run against /// + /// /// Boolean indicating whether this is an upgrade or downgrade /// True if migrations were applied, otherwise False - public virtual bool Execute(Database database, DatabaseProviders databaseProvider, bool isUpgrade = true) + public virtual bool Execute(Database database, DatabaseProviders databaseProvider, ISqlSyntaxProvider sqlSyntaxProvider, bool isUpgrade = true) { _logger.Info("Initializing database migrations"); @@ -72,7 +59,7 @@ namespace Umbraco.Core.Persistence.Migrations return false; //Loop through migrations to generate sql - var migrationContext = InitializeMigrations(migrations, database, databaseProvider, isUpgrade); + var migrationContext = InitializeMigrations(migrations, database, databaseProvider, sqlSyntaxProvider, isUpgrade); try { @@ -152,10 +139,15 @@ namespace Umbraco.Core.Persistence.Migrations return MigrationResolver.Current.Migrations.ToArray(); } - internal MigrationContext InitializeMigrations(List migrations, Database database, DatabaseProviders databaseProvider, bool isUpgrade = true) + internal MigrationContext InitializeMigrations( + List migrations, + Database database, + DatabaseProviders databaseProvider, + ISqlSyntaxProvider sqlSyntax, + bool isUpgrade = true) { //Loop through migrations to generate sql - var context = new MigrationContext(databaseProvider, database, _logger); + var context = new MigrationContext(databaseProvider, database, _logger, sqlSyntax); foreach (var migration in migrations) { diff --git a/src/Umbraco.Core/Persistence/Migrations/Syntax/Alter/AlterSyntaxBuilder.cs b/src/Umbraco.Core/Persistence/Migrations/Syntax/Alter/AlterSyntaxBuilder.cs index 299550d83e..93499141ca 100644 --- a/src/Umbraco.Core/Persistence/Migrations/Syntax/Alter/AlterSyntaxBuilder.cs +++ b/src/Umbraco.Core/Persistence/Migrations/Syntax/Alter/AlterSyntaxBuilder.cs @@ -15,14 +15,14 @@ namespace Umbraco.Core.Persistence.Migrations.Syntax.Alter public IAlterTableSyntax Table(string tableName) { - var expression = new AlterTableExpression { TableName = tableName }; + var expression = new AlterTableExpression(_context.SqlSyntax, _context.CurrentDatabaseProvider) { TableName = tableName }; //_context.Expressions.Add(expression); return new AlterTableBuilder(expression, _context); } public IAlterColumnSyntax Column(string columnName) { - var expression = new AlterColumnExpression { Column = { Name = columnName } }; + var expression = new AlterColumnExpression(_context.SqlSyntax, _context.CurrentDatabaseProvider) { Column = { Name = columnName } }; //_context.Expressions.Add(expression); return new AlterColumnBuilder(expression, _context); } diff --git a/src/Umbraco.Core/Persistence/Migrations/Syntax/Alter/Column/AlterColumnBuilder.cs b/src/Umbraco.Core/Persistence/Migrations/Syntax/Alter/Column/AlterColumnBuilder.cs index 3b77743b0d..3eaecb00bd 100644 --- a/src/Umbraco.Core/Persistence/Migrations/Syntax/Alter/Column/AlterColumnBuilder.cs +++ b/src/Umbraco.Core/Persistence/Migrations/Syntax/Alter/Column/AlterColumnBuilder.cs @@ -33,7 +33,7 @@ namespace Umbraco.Core.Persistence.Migrations.Syntax.Alter.Column public IAlterColumnOptionSyntax WithDefault(SystemMethods method) { - var dc = new AlterDefaultConstraintExpression + var dc = new AlterDefaultConstraintExpression(_context.SqlSyntax, _context.CurrentDatabaseProvider) { TableName = Expression.TableName, SchemaName = Expression.SchemaName, @@ -51,7 +51,7 @@ namespace Umbraco.Core.Persistence.Migrations.Syntax.Alter.Column public IAlterColumnOptionSyntax WithDefaultValue(object value) { - var dc = new AlterDefaultConstraintExpression + var dc = new AlterDefaultConstraintExpression(_context.SqlSyntax, _context.CurrentDatabaseProvider) { TableName = Expression.TableName, SchemaName = Expression.SchemaName, @@ -81,7 +81,7 @@ namespace Umbraco.Core.Persistence.Migrations.Syntax.Alter.Column { Expression.Column.IsIndexed = true; - var index = new CreateIndexExpression + var index = new CreateIndexExpression(_context.SqlSyntax, _context.CurrentDatabaseProvider) { Index = new IndexDefinition { @@ -135,7 +135,7 @@ namespace Umbraco.Core.Persistence.Migrations.Syntax.Alter.Column { Expression.Column.IsUnique = true; - var index = new CreateIndexExpression + var index = new CreateIndexExpression(_context.SqlSyntax, _context.CurrentDatabaseProvider) { Index = new IndexDefinition { @@ -172,7 +172,7 @@ namespace Umbraco.Core.Persistence.Migrations.Syntax.Alter.Column { Expression.Column.IsForeignKey = true; - var fk = new CreateForeignKeyExpression + var fk = new CreateForeignKeyExpression(_context.SqlSyntax, _context.CurrentDatabaseProvider) { ForeignKey = new ForeignKeyDefinition { @@ -212,7 +212,7 @@ namespace Umbraco.Core.Persistence.Migrations.Syntax.Alter.Column public IAlterColumnOptionForeignKeyCascadeSyntax ReferencedBy(string foreignKeyName, string foreignTableSchema, string foreignTableName, string foreignColumnName) { - var fk = new CreateForeignKeyExpression + var fk = new CreateForeignKeyExpression(_context.SqlSyntax, _context.CurrentDatabaseProvider) { ForeignKey = new ForeignKeyDefinition { diff --git a/src/Umbraco.Core/Persistence/Migrations/Syntax/Alter/Expressions/AlterColumnExpression.cs b/src/Umbraco.Core/Persistence/Migrations/Syntax/Alter/Expressions/AlterColumnExpression.cs index 43be956440..578210f018 100644 --- a/src/Umbraco.Core/Persistence/Migrations/Syntax/Alter/Expressions/AlterColumnExpression.cs +++ b/src/Umbraco.Core/Persistence/Migrations/Syntax/Alter/Expressions/AlterColumnExpression.cs @@ -6,32 +6,12 @@ namespace Umbraco.Core.Persistence.Migrations.Syntax.Alter.Expressions { public class AlterColumnExpression : MigrationExpressionBase { - public AlterColumnExpression(ISqlSyntaxProvider sqlSyntax) - : base(sqlSyntax) + public AlterColumnExpression(ISqlSyntaxProvider sqlSyntax, DatabaseProviders currentDatabaseProvider, DatabaseProviders[] supportedDatabaseProviders = null) + : base(sqlSyntax, currentDatabaseProvider, supportedDatabaseProviders) { Column = new ColumnDefinition() { ModificationType = ModificationType.Alter }; } - public AlterColumnExpression(DatabaseProviders current, DatabaseProviders[] databaseProviders, ISqlSyntaxProvider sqlSyntax) - : base(current, databaseProviders, sqlSyntax) - { - Column = new ColumnDefinition() { ModificationType = ModificationType.Alter }; - } - - [Obsolete("Use the constructor specifying an ISqlSyntaxProvider instead")] - public AlterColumnExpression() - : this(SqlSyntaxContext.SqlSyntaxProvider) - { - } - - [Obsolete("Use the constructor specifying an ISqlSyntaxProvider instead")] - public AlterColumnExpression(DatabaseProviders current, DatabaseProviders[] databaseProviders) - : this(current, databaseProviders, SqlSyntaxContext.SqlSyntaxProvider) - { - } - - - public virtual string SchemaName { get; set; } public virtual string TableName { get; set; } public virtual ColumnDefinition Column { get; set; } @@ -42,9 +22,10 @@ namespace Umbraco.Core.Persistence.Migrations.Syntax.Alter.Expressions // SqlSyntaxContext.SqlSyntaxProvider.GetQuotedColumnName(Column.Name), // SqlSyntaxContext.SqlSyntaxProvider.Format(Column)); - return string.Format(SqlSyntaxContext.SqlSyntaxProvider.AlterColumn, - SqlSyntaxContext.SqlSyntaxProvider.GetQuotedTableName(TableName), - SqlSyntaxContext.SqlSyntaxProvider.Format(Column)); + return string.Format( + SqlSyntax.AlterColumn, + SqlSyntax.GetQuotedTableName(TableName), + SqlSyntax.Format(Column)); //return string.Format(SqlSyntaxContext.SqlSyntaxProvider.AlterColumn, // SqlSyntaxContext.SqlSyntaxProvider.GetQuotedTableName(TableName), diff --git a/src/Umbraco.Core/Persistence/Migrations/Syntax/Alter/Expressions/AlterDefaultConstraintExpression.cs b/src/Umbraco.Core/Persistence/Migrations/Syntax/Alter/Expressions/AlterDefaultConstraintExpression.cs index cd99b6754f..9998db7fc4 100644 --- a/src/Umbraco.Core/Persistence/Migrations/Syntax/Alter/Expressions/AlterDefaultConstraintExpression.cs +++ b/src/Umbraco.Core/Persistence/Migrations/Syntax/Alter/Expressions/AlterDefaultConstraintExpression.cs @@ -4,11 +4,8 @@ namespace Umbraco.Core.Persistence.Migrations.Syntax.Alter.Expressions { public class AlterDefaultConstraintExpression : MigrationExpressionBase { - public AlterDefaultConstraintExpression() - { - } - - public AlterDefaultConstraintExpression(DatabaseProviders current, DatabaseProviders[] databaseProviders) : base(current, databaseProviders) + public AlterDefaultConstraintExpression(ISqlSyntaxProvider sqlSyntax, DatabaseProviders currentDatabaseProvider, DatabaseProviders[] supportedDatabaseProviders = null) + : base(sqlSyntax, currentDatabaseProvider, supportedDatabaseProviders) { } @@ -22,9 +19,9 @@ namespace Umbraco.Core.Persistence.Migrations.Syntax.Alter.Expressions { //NOTE Should probably investigate if Deleting a Default Constraint is different from deleting a 'regular' constraint - return string.Format(SqlSyntaxContext.SqlSyntaxProvider.DeleteConstraint, - SqlSyntaxContext.SqlSyntaxProvider.GetQuotedTableName(TableName), - SqlSyntaxContext.SqlSyntaxProvider.GetQuotedName(ConstraintName)); + return string.Format(SqlSyntax.DeleteConstraint, + SqlSyntax.GetQuotedTableName(TableName), + SqlSyntax.GetQuotedName(ConstraintName)); } } } \ No newline at end of file diff --git a/src/Umbraco.Core/Persistence/Migrations/Syntax/Alter/Expressions/AlterTableExpression.cs b/src/Umbraco.Core/Persistence/Migrations/Syntax/Alter/Expressions/AlterTableExpression.cs index 360b699cd8..9e09b39e70 100644 --- a/src/Umbraco.Core/Persistence/Migrations/Syntax/Alter/Expressions/AlterTableExpression.cs +++ b/src/Umbraco.Core/Persistence/Migrations/Syntax/Alter/Expressions/AlterTableExpression.cs @@ -1,12 +1,11 @@ -namespace Umbraco.Core.Persistence.Migrations.Syntax.Alter.Expressions +using Umbraco.Core.Persistence.SqlSyntax; + +namespace Umbraco.Core.Persistence.Migrations.Syntax.Alter.Expressions { public class AlterTableExpression : MigrationExpressionBase { - public AlterTableExpression() - { - } - - public AlterTableExpression(DatabaseProviders current, DatabaseProviders[] databaseProviders) : base(current, databaseProviders) + public AlterTableExpression(ISqlSyntaxProvider sqlSyntax, DatabaseProviders currentDatabaseProvider, DatabaseProviders[] supportedDatabaseProviders = null) + : base(sqlSyntax, currentDatabaseProvider, supportedDatabaseProviders) { } diff --git a/src/Umbraco.Core/Persistence/Migrations/Syntax/Alter/Table/AlterTableBuilder.cs b/src/Umbraco.Core/Persistence/Migrations/Syntax/Alter/Table/AlterTableBuilder.cs index a50e393e96..150d662b7b 100644 --- a/src/Umbraco.Core/Persistence/Migrations/Syntax/Alter/Table/AlterTableBuilder.cs +++ b/src/Umbraco.Core/Persistence/Migrations/Syntax/Alter/Table/AlterTableBuilder.cs @@ -36,7 +36,7 @@ namespace Umbraco.Core.Persistence.Migrations.Syntax.Alter.Table { if (CurrentColumn.ModificationType == ModificationType.Alter) { - var dc = new AlterDefaultConstraintExpression + var dc = new AlterDefaultConstraintExpression(_context.SqlSyntax, _context.CurrentDatabaseProvider) { TableName = Expression.TableName, SchemaName = Expression.SchemaName, @@ -66,7 +66,7 @@ namespace Umbraco.Core.Persistence.Migrations.Syntax.Alter.Table { CurrentColumn.IsIndexed = true; - var index = new CreateIndexExpression + var index = new CreateIndexExpression(_context.SqlSyntax, _context.CurrentDatabaseProvider) { Index = new IndexDefinition { @@ -120,7 +120,7 @@ namespace Umbraco.Core.Persistence.Migrations.Syntax.Alter.Table { CurrentColumn.IsUnique = true; - var index = new CreateIndexExpression + var index = new CreateIndexExpression(_context.SqlSyntax, _context.CurrentDatabaseProvider) { Index = new IndexDefinition { @@ -157,7 +157,7 @@ namespace Umbraco.Core.Persistence.Migrations.Syntax.Alter.Table { CurrentColumn.IsForeignKey = true; - var fk = new CreateForeignKeyExpression + var fk = new CreateForeignKeyExpression(_context.SqlSyntax, _context.CurrentDatabaseProvider) { ForeignKey = new ForeignKeyDefinition { @@ -197,7 +197,7 @@ namespace Umbraco.Core.Persistence.Migrations.Syntax.Alter.Table public IAlterTableColumnOptionForeignKeyCascadeSyntax ReferencedBy(string foreignKeyName, string foreignTableSchema, string foreignTableName, string foreignColumnName) { - var fk = new CreateForeignKeyExpression + var fk = new CreateForeignKeyExpression(_context.SqlSyntax, _context.CurrentDatabaseProvider) { ForeignKey = new ForeignKeyDefinition { @@ -220,7 +220,7 @@ namespace Umbraco.Core.Persistence.Migrations.Syntax.Alter.Table public IAlterTableColumnTypeSyntax AddColumn(string name) { var column = new ColumnDefinition { Name = name, ModificationType = ModificationType.Create }; - var createColumn = new CreateColumnExpression + var createColumn = new CreateColumnExpression(_context.SqlSyntax, _context.CurrentDatabaseProvider) { Column = column, SchemaName = Expression.SchemaName, @@ -236,7 +236,7 @@ namespace Umbraco.Core.Persistence.Migrations.Syntax.Alter.Table public IAlterTableColumnTypeSyntax AlterColumn(string name) { var column = new ColumnDefinition { Name = name, ModificationType = ModificationType.Alter }; - var alterColumn = new AlterColumnExpression + var alterColumn = new AlterColumnExpression(_context.SqlSyntax, _context.CurrentDatabaseProvider) { Column = column, SchemaName = Expression.SchemaName, diff --git a/src/Umbraco.Core/Persistence/Migrations/Syntax/Create/Column/CreateColumnBuilder.cs b/src/Umbraco.Core/Persistence/Migrations/Syntax/Create/Column/CreateColumnBuilder.cs index 439733bc46..b494d858dc 100644 --- a/src/Umbraco.Core/Persistence/Migrations/Syntax/Create/Column/CreateColumnBuilder.cs +++ b/src/Umbraco.Core/Persistence/Migrations/Syntax/Create/Column/CreateColumnBuilder.cs @@ -56,7 +56,7 @@ namespace Umbraco.Core.Persistence.Migrations.Syntax.Create.Column { Expression.Column.IsIndexed = true; - var index = new CreateIndexExpression + var index = new CreateIndexExpression(_context.SqlSyntax, _context.CurrentDatabaseProvider) { Index = new IndexDefinition { @@ -110,7 +110,7 @@ namespace Umbraco.Core.Persistence.Migrations.Syntax.Create.Column { Expression.Column.IsUnique = true; - var index = new CreateIndexExpression + var index = new CreateIndexExpression(_context.SqlSyntax, _context.CurrentDatabaseProvider) { Index = new IndexDefinition { @@ -147,7 +147,7 @@ namespace Umbraco.Core.Persistence.Migrations.Syntax.Create.Column { Expression.Column.IsForeignKey = true; - var fk = new CreateForeignKeyExpression + var fk = new CreateForeignKeyExpression(_context.SqlSyntax, _context.CurrentDatabaseProvider) { ForeignKey = new ForeignKeyDefinition { @@ -187,7 +187,7 @@ namespace Umbraco.Core.Persistence.Migrations.Syntax.Create.Column public ICreateColumnOptionForeignKeyCascadeSyntax ReferencedBy(string foreignKeyName, string foreignTableSchema, string foreignTableName, string foreignColumnName) { - var fk = new CreateForeignKeyExpression + var fk = new CreateForeignKeyExpression(_context.SqlSyntax, _context.CurrentDatabaseProvider) { ForeignKey = new ForeignKeyDefinition { diff --git a/src/Umbraco.Core/Persistence/Migrations/Syntax/Create/CreateBuilder.cs b/src/Umbraco.Core/Persistence/Migrations/Syntax/Create/CreateBuilder.cs index 4f2666d032..56e0d5632d 100644 --- a/src/Umbraco.Core/Persistence/Migrations/Syntax/Create/CreateBuilder.cs +++ b/src/Umbraco.Core/Persistence/Migrations/Syntax/Create/CreateBuilder.cs @@ -14,80 +14,78 @@ namespace Umbraco.Core.Persistence.Migrations.Syntax.Create public class CreateBuilder : ICreateBuilder { private readonly IMigrationContext _context; - private readonly ISqlSyntaxProvider _sqlSyntax; private readonly DatabaseProviders[] _databaseProviders; - public CreateBuilder(IMigrationContext context, ISqlSyntaxProvider sqlSyntax, params DatabaseProviders[] databaseProviders) + public CreateBuilder(IMigrationContext context, params DatabaseProviders[] databaseProviders) { _context = context; - _sqlSyntax = sqlSyntax; _databaseProviders = databaseProviders; } - [Obsolete("Use alternate ctor specifying ISqlSyntaxProvider instead")] - public CreateBuilder(IMigrationContext context, params DatabaseProviders[] databaseProviders) - :this(context, SqlSyntaxContext.SqlSyntaxProvider, databaseProviders) - { - } - public ICreateTableWithColumnSyntax Table(string tableName) { - var expression = new CreateTableExpression { TableName = tableName }; + var expression = new CreateTableExpression(_context.SqlSyntax, _context.CurrentDatabaseProvider, _databaseProviders) + { + TableName = tableName + }; _context.Expressions.Add(expression); return new CreateTableBuilder(expression, _context); } public ICreateColumnOnTableSyntax Column(string columnName) { - var expression = _databaseProviders == null - ? new CreateColumnExpression { Column = { Name = columnName } } - : new CreateColumnExpression(_context.CurrentDatabaseProvider, _databaseProviders) { Column = { Name = columnName } }; + var expression = new CreateColumnExpression(_context.SqlSyntax, _context.CurrentDatabaseProvider, _databaseProviders) + { + Column = { Name = columnName } + }; _context.Expressions.Add(expression); return new CreateColumnBuilder(expression, _context); } public ICreateForeignKeyFromTableSyntax ForeignKey() { - var expression = _databaseProviders == null - ? new CreateForeignKeyExpression() - : new CreateForeignKeyExpression(_context.CurrentDatabaseProvider, _databaseProviders); + var expression = new CreateForeignKeyExpression(_context.SqlSyntax, _context.CurrentDatabaseProvider, _databaseProviders); _context.Expressions.Add(expression); return new CreateForeignKeyBuilder(expression); } public ICreateForeignKeyFromTableSyntax ForeignKey(string foreignKeyName) { - var expression = _databaseProviders == null - ? new CreateForeignKeyExpression { ForeignKey = { Name = foreignKeyName } } - : new CreateForeignKeyExpression(_context.CurrentDatabaseProvider, _databaseProviders) { ForeignKey = { Name = foreignKeyName } }; + var expression = new CreateForeignKeyExpression(_context.SqlSyntax, _context.CurrentDatabaseProvider, _databaseProviders) + { + ForeignKey = { Name = foreignKeyName } + }; _context.Expressions.Add(expression); return new CreateForeignKeyBuilder(expression); } public ICreateIndexForTableSyntax Index() { - var expression = new CreateIndexExpression(_sqlSyntax); + var expression = new CreateIndexExpression(_context.SqlSyntax, _context.CurrentDatabaseProvider, _databaseProviders); _context.Expressions.Add(expression); return new CreateIndexBuilder(expression); } public ICreateIndexForTableSyntax Index(string indexName) { - var expression = new CreateIndexExpression(_sqlSyntax) { Index = { Name = indexName } }; + var expression = new CreateIndexExpression(_context.SqlSyntax, _context.CurrentDatabaseProvider, _databaseProviders) + { + Index = { Name = indexName } + }; _context.Expressions.Add(expression); return new CreateIndexBuilder(expression); } public ICreateConstraintOnTableSyntax PrimaryKey() { - var expression = new CreateConstraintExpression(ConstraintType.PrimaryKey); + var expression = new CreateConstraintExpression(_context.SqlSyntax, _context.CurrentDatabaseProvider, ConstraintType.PrimaryKey, _databaseProviders); _context.Expressions.Add(expression); return new CreateConstraintBuilder(expression); } public ICreateConstraintOnTableSyntax PrimaryKey(string primaryKeyName) { - var expression = new CreateConstraintExpression(ConstraintType.PrimaryKey); + var expression = new CreateConstraintExpression(_context.SqlSyntax, _context.CurrentDatabaseProvider, ConstraintType.PrimaryKey, _databaseProviders); expression.Constraint.ConstraintName = primaryKeyName; _context.Expressions.Add(expression); return new CreateConstraintBuilder(expression); @@ -95,14 +93,14 @@ namespace Umbraco.Core.Persistence.Migrations.Syntax.Create public ICreateConstraintOnTableSyntax UniqueConstraint() { - var expression = new CreateConstraintExpression(ConstraintType.Unique); + var expression = new CreateConstraintExpression(_context.SqlSyntax, _context.CurrentDatabaseProvider, ConstraintType.Unique, _databaseProviders); _context.Expressions.Add(expression); return new CreateConstraintBuilder(expression); } public ICreateConstraintOnTableSyntax UniqueConstraint(string constraintName) { - var expression = new CreateConstraintExpression(ConstraintType.Unique); + var expression = new CreateConstraintExpression(_context.SqlSyntax, _context.CurrentDatabaseProvider, ConstraintType.Unique, _databaseProviders); expression.Constraint.ConstraintName = constraintName; _context.Expressions.Add(expression); return new CreateConstraintBuilder(expression); @@ -110,7 +108,7 @@ namespace Umbraco.Core.Persistence.Migrations.Syntax.Create public ICreateConstraintOnTableSyntax Constraint(string constraintName) { - var expression = new CreateConstraintExpression(ConstraintType.NonUnique); + var expression = new CreateConstraintExpression(_context.SqlSyntax, _context.CurrentDatabaseProvider, ConstraintType.NonUnique, _databaseProviders); expression.Constraint.ConstraintName = constraintName; _context.Expressions.Add(expression); return new CreateConstraintBuilder(expression); diff --git a/src/Umbraco.Core/Persistence/Migrations/Syntax/Create/Expressions/CreateConstraintExpression.cs b/src/Umbraco.Core/Persistence/Migrations/Syntax/Create/Expressions/CreateConstraintExpression.cs index b575a89c49..1184114bd4 100644 --- a/src/Umbraco.Core/Persistence/Migrations/Syntax/Create/Expressions/CreateConstraintExpression.cs +++ b/src/Umbraco.Core/Persistence/Migrations/Syntax/Create/Expressions/CreateConstraintExpression.cs @@ -6,9 +6,10 @@ namespace Umbraco.Core.Persistence.Migrations.Syntax.Create.Expressions { public class CreateConstraintExpression : MigrationExpressionBase { - public CreateConstraintExpression(ConstraintType type) + public CreateConstraintExpression(ISqlSyntaxProvider sqlSyntax, DatabaseProviders currentDatabaseProvider, ConstraintType constraintType, DatabaseProviders[] supportedDatabaseProviders = null) + : base(sqlSyntax, currentDatabaseProvider, supportedDatabaseProviders) { - Constraint = new ConstraintDefinition(type); + Constraint = new ConstraintDefinition(constraintType); } public ConstraintDefinition Constraint { get; private set; } @@ -17,7 +18,7 @@ namespace Umbraco.Core.Persistence.Migrations.Syntax.Create.Expressions { var constraintType = (Constraint.IsPrimaryKeyConstraint) ? "PRIMARY KEY" : "UNIQUE"; - if (Constraint.IsPrimaryKeyConstraint && SqlSyntaxContext.SqlSyntaxProvider.SupportsClustered()) + if (Constraint.IsPrimaryKeyConstraint && SqlSyntax.SupportsClustered()) constraintType += " CLUSTERED"; if (Constraint.IsNonUniqueConstraint) @@ -27,12 +28,12 @@ namespace Umbraco.Core.Persistence.Migrations.Syntax.Create.Expressions for (int i = 0; i < Constraint.Columns.Count; i++) { - columns[i] = SqlSyntaxContext.SqlSyntaxProvider.GetQuotedColumnName(Constraint.Columns.ElementAt(i)); + columns[i] = SqlSyntax.GetQuotedColumnName(Constraint.Columns.ElementAt(i)); } - return string.Format(SqlSyntaxContext.SqlSyntaxProvider.CreateConstraint, - SqlSyntaxContext.SqlSyntaxProvider.GetQuotedTableName(Constraint.TableName), - SqlSyntaxContext.SqlSyntaxProvider.GetQuotedName(Constraint.ConstraintName), + return string.Format(SqlSyntax.CreateConstraint, + SqlSyntax.GetQuotedTableName(Constraint.TableName), + SqlSyntax.GetQuotedName(Constraint.ConstraintName), constraintType, string.Join(", ", columns)); } diff --git a/src/Umbraco.Core/Persistence/Migrations/Syntax/Create/Expressions/CreateTableExpression.cs b/src/Umbraco.Core/Persistence/Migrations/Syntax/Create/Expressions/CreateTableExpression.cs index c048bda198..8755306b13 100644 --- a/src/Umbraco.Core/Persistence/Migrations/Syntax/Create/Expressions/CreateTableExpression.cs +++ b/src/Umbraco.Core/Persistence/Migrations/Syntax/Create/Expressions/CreateTableExpression.cs @@ -7,27 +7,8 @@ namespace Umbraco.Core.Persistence.Migrations.Syntax.Create.Expressions { public class CreateTableExpression : MigrationExpressionBase { - [Obsolete("Use the other constructors specifying an ISqlSyntaxProvider instead")] - public CreateTableExpression() - { - Columns = new List(); - } - - [Obsolete("Use the other constructors specifying an ISqlSyntaxProvider instead")] - public CreateTableExpression(DatabaseProviders current, DatabaseProviders[] databaseProviders) - : base(current, databaseProviders) - { - Columns = new List(); - } - - public CreateTableExpression(ISqlSyntaxProvider sqlSyntax) - : base(sqlSyntax) - { - Columns = new List(); - } - - public CreateTableExpression(DatabaseProviders current, DatabaseProviders[] databaseProviders, ISqlSyntaxProvider sqlSyntax) - : base(current, databaseProviders, sqlSyntax) + public CreateTableExpression(ISqlSyntaxProvider sqlSyntax, DatabaseProviders currentDatabaseProvider, DatabaseProviders[] supportedDatabaseProviders = null) + : base(sqlSyntax, currentDatabaseProvider, supportedDatabaseProviders) { Columns = new List(); } diff --git a/src/Umbraco.Core/Persistence/Migrations/Syntax/Create/Table/CreateTableBuilder.cs b/src/Umbraco.Core/Persistence/Migrations/Syntax/Create/Table/CreateTableBuilder.cs index 58eef672eb..636d35084f 100644 --- a/src/Umbraco.Core/Persistence/Migrations/Syntax/Create/Table/CreateTableBuilder.cs +++ b/src/Umbraco.Core/Persistence/Migrations/Syntax/Create/Table/CreateTableBuilder.cs @@ -62,7 +62,7 @@ namespace Umbraco.Core.Persistence.Migrations.Syntax.Create.Table { CurrentColumn.IsIndexed = true; - var index = new CreateIndexExpression + var index = new CreateIndexExpression(_context.SqlSyntax, _context.CurrentDatabaseProvider) { Index = new IndexDefinition { @@ -86,7 +86,7 @@ namespace Umbraco.Core.Persistence.Migrations.Syntax.Create.Table { CurrentColumn.IsPrimaryKey = true; - var expression = new CreateConstraintExpression(ConstraintType.PrimaryKey) + var expression = new CreateConstraintExpression(_context.SqlSyntax, _context.CurrentDatabaseProvider, ConstraintType.PrimaryKey) { Constraint = { @@ -104,7 +104,7 @@ namespace Umbraco.Core.Persistence.Migrations.Syntax.Create.Table CurrentColumn.IsPrimaryKey = true; CurrentColumn.PrimaryKeyName = primaryKeyName; - var expression = new CreateConstraintExpression(ConstraintType.PrimaryKey) + var expression = new CreateConstraintExpression(_context.SqlSyntax, _context.CurrentDatabaseProvider, ConstraintType.PrimaryKey) { Constraint = { @@ -139,7 +139,7 @@ namespace Umbraco.Core.Persistence.Migrations.Syntax.Create.Table { CurrentColumn.IsUnique = true; - var index = new CreateIndexExpression + var index = new CreateIndexExpression(_context.SqlSyntax, _context.CurrentDatabaseProvider) { Index = new IndexDefinition { @@ -176,7 +176,7 @@ namespace Umbraco.Core.Persistence.Migrations.Syntax.Create.Table { CurrentColumn.IsForeignKey = true; - var fk = new CreateForeignKeyExpression + var fk = new CreateForeignKeyExpression(_context.SqlSyntax, _context.CurrentDatabaseProvider) { ForeignKey = new ForeignKeyDefinition { @@ -216,7 +216,7 @@ namespace Umbraco.Core.Persistence.Migrations.Syntax.Create.Table public ICreateTableColumnOptionForeignKeyCascadeSyntax ReferencedBy(string foreignKeyName, string foreignTableSchema, string foreignTableName, string foreignColumnName) { - var fk = new CreateForeignKeyExpression + var fk = new CreateForeignKeyExpression(_context.SqlSyntax, _context.CurrentDatabaseProvider) { ForeignKey = new ForeignKeyDefinition { diff --git a/src/Umbraco.Core/Persistence/Migrations/Syntax/Delete/DeleteBuilder.cs b/src/Umbraco.Core/Persistence/Migrations/Syntax/Delete/DeleteBuilder.cs index f70de5b548..878c2b8108 100644 --- a/src/Umbraco.Core/Persistence/Migrations/Syntax/Delete/DeleteBuilder.cs +++ b/src/Umbraco.Core/Persistence/Migrations/Syntax/Delete/DeleteBuilder.cs @@ -13,79 +13,80 @@ namespace Umbraco.Core.Persistence.Migrations.Syntax.Delete public class DeleteBuilder : IDeleteBuilder { private readonly IMigrationContext _context; - private readonly ISqlSyntaxProvider _sqlSyntax; private readonly DatabaseProviders[] _databaseProviders; - public DeleteBuilder(IMigrationContext context, ISqlSyntaxProvider sqlSyntax, params DatabaseProviders[] databaseProviders) + public DeleteBuilder(IMigrationContext context, params DatabaseProviders[] databaseProviders) { _context = context; - _sqlSyntax = sqlSyntax; _databaseProviders = databaseProviders; } - [Obsolete("Use the other constructor specifying an ISqlSyntaxProvider instead")] - public DeleteBuilder(IMigrationContext context, params DatabaseProviders[] databaseProviders) - : this(context, SqlSyntaxContext.SqlSyntaxProvider, databaseProviders) - { - } - public void Table(string tableName) { - var expression = new DeleteTableExpression { TableName = tableName }; + var expression = new DeleteTableExpression(_context.SqlSyntax, _context.CurrentDatabaseProvider, _databaseProviders) + { + TableName = tableName + }; _context.Expressions.Add(expression); } public IDeleteColumnFromTableSyntax Column(string columnName) { - var expression = _databaseProviders == null - ? new DeleteColumnExpression { ColumnNames = { columnName } } - : new DeleteColumnExpression(_context.CurrentDatabaseProvider, _databaseProviders) { ColumnNames = { columnName } }; + var expression = new DeleteColumnExpression(_context.SqlSyntax, _context.CurrentDatabaseProvider, _databaseProviders) + { + ColumnNames = { columnName } + }; _context.Expressions.Add(expression); return new DeleteColumnBuilder(expression); } public IDeleteForeignKeyFromTableSyntax ForeignKey() { - var expression = _databaseProviders == null - ? new DeleteForeignKeyExpression(_sqlSyntax) - : new DeleteForeignKeyExpression(_context.CurrentDatabaseProvider, _databaseProviders, _sqlSyntax); + var expression = new DeleteForeignKeyExpression(_context.SqlSyntax, _context.CurrentDatabaseProvider, _databaseProviders); _context.Expressions.Add(expression); return new DeleteForeignKeyBuilder(expression); } public IDeleteForeignKeyOnTableSyntax ForeignKey(string foreignKeyName) { - var expression = _databaseProviders == null - ? new DeleteForeignKeyExpression(_sqlSyntax) { ForeignKey = { Name = foreignKeyName } } - : new DeleteForeignKeyExpression(_context.CurrentDatabaseProvider, _databaseProviders, _sqlSyntax) { ForeignKey = { Name = foreignKeyName } }; + var expression = new DeleteForeignKeyExpression(_context.SqlSyntax, _context.CurrentDatabaseProvider, _databaseProviders) + { + ForeignKey = { Name = foreignKeyName } + }; _context.Expressions.Add(expression); return new DeleteForeignKeyBuilder(expression); } public IDeleteDataSyntax FromTable(string tableName) { - var expression = new DeleteDataExpression { TableName = tableName }; + var expression = new DeleteDataExpression(_context.SqlSyntax, _context.CurrentDatabaseProvider, _databaseProviders) + { + TableName = tableName + }; _context.Expressions.Add(expression); return new DeleteDataBuilder(expression); } public IDeleteIndexForTableSyntax Index() { - var expression = new DeleteIndexExpression(); + var expression = new DeleteIndexExpression(_context.SqlSyntax, _context.CurrentDatabaseProvider, _databaseProviders); _context.Expressions.Add(expression); return new DeleteIndexBuilder(expression); } public IDeleteIndexForTableSyntax Index(string indexName) { - var expression = new DeleteIndexExpression { Index = { Name = indexName } }; + var expression = new DeleteIndexExpression(_context.SqlSyntax, _context.CurrentDatabaseProvider, _databaseProviders) + { + Index = { Name = indexName } + }; _context.Expressions.Add(expression); return new DeleteIndexBuilder(expression); } public IDeleteConstraintOnTableSyntax PrimaryKey(string primaryKeyName) { - var expression = new DeleteConstraintExpression(_context.CurrentDatabaseProvider, _databaseProviders, ConstraintType.PrimaryKey) + var expression = new DeleteConstraintExpression(_context.SqlSyntax, _context.CurrentDatabaseProvider, ConstraintType.PrimaryKey, _databaseProviders) { Constraint = { ConstraintName = primaryKeyName } }; @@ -95,7 +96,7 @@ namespace Umbraco.Core.Persistence.Migrations.Syntax.Delete public IDeleteConstraintOnTableSyntax UniqueConstraint(string constraintName) { - var expression = new DeleteConstraintExpression(ConstraintType.Unique) + var expression = new DeleteConstraintExpression(_context.SqlSyntax, _context.CurrentDatabaseProvider, ConstraintType.Unique, _databaseProviders) { Constraint = { ConstraintName = constraintName } }; @@ -105,9 +106,7 @@ namespace Umbraco.Core.Persistence.Migrations.Syntax.Delete public IDeleteDefaultConstraintOnTableSyntax DefaultConstraint() { - var expression = _databaseProviders == null - ? new DeleteDefaultConstraintExpression() - : new DeleteDefaultConstraintExpression(_context.CurrentDatabaseProvider, _databaseProviders); + var expression = new DeleteDefaultConstraintExpression(_context.SqlSyntax, _context.CurrentDatabaseProvider, _databaseProviders); _context.Expressions.Add(expression); return new DeleteDefaultConstraintBuilder(expression); } diff --git a/src/Umbraco.Core/Persistence/Migrations/Syntax/Delete/Expressions/DeleteColumnExpression.cs b/src/Umbraco.Core/Persistence/Migrations/Syntax/Delete/Expressions/DeleteColumnExpression.cs index c9f8c8d04d..4792da1d41 100644 --- a/src/Umbraco.Core/Persistence/Migrations/Syntax/Delete/Expressions/DeleteColumnExpression.cs +++ b/src/Umbraco.Core/Persistence/Migrations/Syntax/Delete/Expressions/DeleteColumnExpression.cs @@ -7,13 +7,8 @@ namespace Umbraco.Core.Persistence.Migrations.Syntax.Delete.Expressions { public class DeleteColumnExpression : MigrationExpressionBase { - public DeleteColumnExpression() - { - ColumnNames = new List(); - } - - public DeleteColumnExpression(DatabaseProviders current, DatabaseProviders[] databaseProviders) - : base(current, databaseProviders) + public DeleteColumnExpression(ISqlSyntaxProvider sqlSyntax, DatabaseProviders currentDatabaseProvider, DatabaseProviders[] supportedDatabaseProviders = null) + : base(sqlSyntax, currentDatabaseProvider, supportedDatabaseProviders) { ColumnNames = new List(); } @@ -31,9 +26,9 @@ namespace Umbraco.Core.Persistence.Migrations.Syntax.Delete.Expressions foreach (string columnName in ColumnNames) { if (ColumnNames.First() != columnName) sb.AppendLine(";"); - sb.AppendFormat(SqlSyntaxContext.SqlSyntaxProvider.DropColumn, - SqlSyntaxContext.SqlSyntaxProvider.GetQuotedTableName(TableName), - SqlSyntaxContext.SqlSyntaxProvider.GetQuotedColumnName(columnName)); + sb.AppendFormat(SqlSyntax.DropColumn, + SqlSyntax.GetQuotedTableName(TableName), + SqlSyntax.GetQuotedColumnName(columnName)); } return sb.ToString(); diff --git a/src/Umbraco.Core/Persistence/Migrations/Syntax/Delete/Expressions/DeleteConstraintExpression.cs b/src/Umbraco.Core/Persistence/Migrations/Syntax/Delete/Expressions/DeleteConstraintExpression.cs index 39f250532d..3f089aee34 100644 --- a/src/Umbraco.Core/Persistence/Migrations/Syntax/Delete/Expressions/DeleteConstraintExpression.cs +++ b/src/Umbraco.Core/Persistence/Migrations/Syntax/Delete/Expressions/DeleteConstraintExpression.cs @@ -5,13 +5,8 @@ namespace Umbraco.Core.Persistence.Migrations.Syntax.Delete.Expressions { public class DeleteConstraintExpression : MigrationExpressionBase { - public DeleteConstraintExpression(ConstraintType type) - { - Constraint = new ConstraintDefinition(type); - } - - public DeleteConstraintExpression(DatabaseProviders current, DatabaseProviders[] databaseProviders, ConstraintType type) - : base(current, databaseProviders) + public DeleteConstraintExpression(ISqlSyntaxProvider sqlSyntax, DatabaseProviders current, ConstraintType type, DatabaseProviders[] databaseProviders = null) + : base(sqlSyntax, current, databaseProviders) { Constraint = new ConstraintDefinition(type); } @@ -25,24 +20,27 @@ namespace Umbraco.Core.Persistence.Migrations.Syntax.Delete.Expressions { if (Constraint.IsPrimaryKeyConstraint) { - return string.Format(SqlSyntaxContext.SqlSyntaxProvider.DeleteConstraint, - SqlSyntaxContext.SqlSyntaxProvider.GetQuotedTableName(Constraint.TableName), - "PRIMARY KEY", - ""); + return string.Format( + SqlSyntax.DeleteConstraint, + SqlSyntax.GetQuotedTableName(Constraint.TableName), + "PRIMARY KEY", + ""); } else { - return string.Format(SqlSyntaxContext.SqlSyntaxProvider.DeleteConstraint, - SqlSyntaxContext.SqlSyntaxProvider.GetQuotedTableName(Constraint.TableName), - "FOREIGN KEY", - ""); + return string.Format( + SqlSyntax.DeleteConstraint, + SqlSyntax.GetQuotedTableName(Constraint.TableName), + "FOREIGN KEY", + ""); } } else { - return string.Format(SqlSyntaxContext.SqlSyntaxProvider.DeleteConstraint, - SqlSyntaxContext.SqlSyntaxProvider.GetQuotedTableName(Constraint.TableName), - SqlSyntaxContext.SqlSyntaxProvider.GetQuotedName(Constraint.ConstraintName)); + return string.Format( + SqlSyntax.DeleteConstraint, + SqlSyntax.GetQuotedTableName(Constraint.TableName), + SqlSyntax.GetQuotedName(Constraint.ConstraintName)); } } } diff --git a/src/Umbraco.Core/Persistence/Migrations/Syntax/Delete/Expressions/DeleteDataExpression.cs b/src/Umbraco.Core/Persistence/Migrations/Syntax/Delete/Expressions/DeleteDataExpression.cs index 2131a7b106..f62c97da07 100644 --- a/src/Umbraco.Core/Persistence/Migrations/Syntax/Delete/Expressions/DeleteDataExpression.cs +++ b/src/Umbraco.Core/Persistence/Migrations/Syntax/Delete/Expressions/DeleteDataExpression.cs @@ -9,11 +9,9 @@ namespace Umbraco.Core.Persistence.Migrations.Syntax.Delete.Expressions { private readonly List _rows = new List(); - public DeleteDataExpression() - { - } - public DeleteDataExpression(DatabaseProviders current, DatabaseProviders[] databaseProviders) : base(current, databaseProviders) + public DeleteDataExpression(ISqlSyntaxProvider sqlSyntax, DatabaseProviders currentDatabaseProvider, DatabaseProviders[] supportedDatabaseProviders = null) + : base(sqlSyntax, currentDatabaseProvider, supportedDatabaseProviders) { } @@ -32,7 +30,9 @@ namespace Umbraco.Core.Persistence.Migrations.Syntax.Delete.Expressions if (IsAllRows) { - deleteItems.Add(string.Format(SqlSyntaxContext.SqlSyntaxProvider.DeleteData, SqlSyntaxContext.SqlSyntaxProvider.GetQuotedTableName(TableName), "1 = 1")); + deleteItems.Add(string.Format( + SqlSyntax.DeleteData, + SqlSyntax.GetQuotedTableName(TableName), "1 = 1")); } else { @@ -42,13 +42,13 @@ namespace Umbraco.Core.Persistence.Migrations.Syntax.Delete.Expressions foreach (KeyValuePair item in row) { whereClauses.Add(string.Format("{0} {1} {2}", - SqlSyntaxContext.SqlSyntaxProvider.GetQuotedColumnName(item.Key), + SqlSyntax.GetQuotedColumnName(item.Key), item.Value == null ? "IS" : "=", - SqlSyntaxContext.SqlSyntaxProvider.GetQuotedValue(item.Value.ToString()))); + SqlSyntax.GetQuotedValue(item.Value.ToString()))); } - deleteItems.Add(string.Format(SqlSyntaxContext.SqlSyntaxProvider.DeleteData, - SqlSyntaxContext.SqlSyntaxProvider.GetQuotedTableName(TableName), + deleteItems.Add(string.Format(SqlSyntax.DeleteData, + SqlSyntax.GetQuotedTableName(TableName), String.Join(" AND ", whereClauses.ToArray()))); } } diff --git a/src/Umbraco.Core/Persistence/Migrations/Syntax/Delete/Expressions/DeleteDefaultConstraintExpression.cs b/src/Umbraco.Core/Persistence/Migrations/Syntax/Delete/Expressions/DeleteDefaultConstraintExpression.cs index 43677d23e3..c610d8bdc1 100644 --- a/src/Umbraco.Core/Persistence/Migrations/Syntax/Delete/Expressions/DeleteDefaultConstraintExpression.cs +++ b/src/Umbraco.Core/Persistence/Migrations/Syntax/Delete/Expressions/DeleteDefaultConstraintExpression.cs @@ -4,12 +4,8 @@ namespace Umbraco.Core.Persistence.Migrations.Syntax.Delete.Expressions { public class DeleteDefaultConstraintExpression : MigrationExpressionBase { - public DeleteDefaultConstraintExpression() - { - } - - public DeleteDefaultConstraintExpression(DatabaseProviders current, DatabaseProviders[] databaseProviders) - : base(current, databaseProviders) + public DeleteDefaultConstraintExpression(ISqlSyntaxProvider sqlSyntax, DatabaseProviders currentDatabaseProvider, DatabaseProviders[] supportedDatabaseProviders = null) + : base(sqlSyntax, currentDatabaseProvider, supportedDatabaseProviders) { } @@ -22,7 +18,7 @@ namespace Umbraco.Core.Persistence.Migrations.Syntax.Delete.Expressions if (IsExpressionSupported() == false) return string.Empty; - return string.Format(SqlSyntaxContext.SqlSyntaxProvider.DeleteDefaultConstraint, + return string.Format(SqlSyntax.DeleteDefaultConstraint, TableName, ColumnName); } diff --git a/src/Umbraco.Core/Persistence/Migrations/Syntax/Delete/Expressions/DeleteForeignKeyExpression.cs b/src/Umbraco.Core/Persistence/Migrations/Syntax/Delete/Expressions/DeleteForeignKeyExpression.cs index 34e3bd65c5..7173beea99 100644 --- a/src/Umbraco.Core/Persistence/Migrations/Syntax/Delete/Expressions/DeleteForeignKeyExpression.cs +++ b/src/Umbraco.Core/Persistence/Migrations/Syntax/Delete/Expressions/DeleteForeignKeyExpression.cs @@ -8,31 +8,12 @@ namespace Umbraco.Core.Persistence.Migrations.Syntax.Delete.Expressions { public class DeleteForeignKeyExpression : MigrationExpressionBase { - [Obsolete("Use the other constructors specifying an ILogger instead")] - public DeleteForeignKeyExpression() + public DeleteForeignKeyExpression(ISqlSyntaxProvider sqlSyntax, DatabaseProviders currentDatabaseProvider, DatabaseProviders[] supportedDatabaseProviders = null) + : base(sqlSyntax, currentDatabaseProvider, supportedDatabaseProviders) { ForeignKey = new ForeignKeyDefinition(); } - [Obsolete("Use the other constructors specifying an ILogger instead")] - public DeleteForeignKeyExpression(DatabaseProviders current, DatabaseProviders[] databaseProviders) - : base(current, databaseProviders) - { - ForeignKey = new ForeignKeyDefinition(); - } - - public DeleteForeignKeyExpression(ISqlSyntaxProvider sqlSyntax) - : base(sqlSyntax) - { - ForeignKey = new ForeignKeyDefinition(); - } - - public DeleteForeignKeyExpression(DatabaseProviders current, DatabaseProviders[] databaseProviders, ISqlSyntaxProvider sqlSyntax) - : base(current, databaseProviders, sqlSyntax) - { - ForeignKey = new ForeignKeyDefinition(); - } - public virtual ForeignKeyDefinition ForeignKey { get; set; } public override string ToString() diff --git a/src/Umbraco.Core/Persistence/Migrations/Syntax/Delete/Expressions/DeleteIndexExpression.cs b/src/Umbraco.Core/Persistence/Migrations/Syntax/Delete/Expressions/DeleteIndexExpression.cs index 3e1a959925..203ffa09d1 100644 --- a/src/Umbraco.Core/Persistence/Migrations/Syntax/Delete/Expressions/DeleteIndexExpression.cs +++ b/src/Umbraco.Core/Persistence/Migrations/Syntax/Delete/Expressions/DeleteIndexExpression.cs @@ -5,12 +5,8 @@ namespace Umbraco.Core.Persistence.Migrations.Syntax.Delete.Expressions { public class DeleteIndexExpression : MigrationExpressionBase { - public DeleteIndexExpression() - { - Index = new IndexDefinition(); - } - - public DeleteIndexExpression(DatabaseProviders current, DatabaseProviders[] databaseProviders) : base(current, databaseProviders) + public DeleteIndexExpression(ISqlSyntaxProvider sqlSyntax, DatabaseProviders currentDatabaseProvider, DatabaseProviders[] supportedDatabaseProviders = null) + : base(sqlSyntax, currentDatabaseProvider, supportedDatabaseProviders) { Index = new IndexDefinition(); } @@ -19,9 +15,9 @@ namespace Umbraco.Core.Persistence.Migrations.Syntax.Delete.Expressions public override string ToString() { - return string.Format(SqlSyntaxContext.SqlSyntaxProvider.DropIndex, - SqlSyntaxContext.SqlSyntaxProvider.GetQuotedName(Index.Name), - SqlSyntaxContext.SqlSyntaxProvider.GetQuotedTableName(Index.TableName)); + return string.Format(SqlSyntax.DropIndex, + SqlSyntax.GetQuotedName(Index.Name), + SqlSyntax.GetQuotedTableName(Index.TableName)); } } } \ No newline at end of file diff --git a/src/Umbraco.Core/Persistence/Migrations/Syntax/Delete/Expressions/DeleteTableExpression.cs b/src/Umbraco.Core/Persistence/Migrations/Syntax/Delete/Expressions/DeleteTableExpression.cs index 2fff4e75e0..133cc4b7d8 100644 --- a/src/Umbraco.Core/Persistence/Migrations/Syntax/Delete/Expressions/DeleteTableExpression.cs +++ b/src/Umbraco.Core/Persistence/Migrations/Syntax/Delete/Expressions/DeleteTableExpression.cs @@ -4,11 +4,8 @@ namespace Umbraco.Core.Persistence.Migrations.Syntax.Delete.Expressions { public class DeleteTableExpression : MigrationExpressionBase { - public DeleteTableExpression() - { - } - - public DeleteTableExpression(DatabaseProviders current, DatabaseProviders[] databaseProviders) : base(current, databaseProviders) + public DeleteTableExpression(ISqlSyntaxProvider sqlSyntax, DatabaseProviders currentDatabaseProvider, DatabaseProviders[] supportedDatabaseProviders = null) + : base(sqlSyntax, currentDatabaseProvider, supportedDatabaseProviders) { } @@ -17,8 +14,8 @@ namespace Umbraco.Core.Persistence.Migrations.Syntax.Delete.Expressions public override string ToString() { - return string.Format(SqlSyntaxContext.SqlSyntaxProvider.DropTable, - SqlSyntaxContext.SqlSyntaxProvider.GetQuotedTableName(TableName)); + return string.Format(SqlSyntax.DropTable, + SqlSyntax.GetQuotedTableName(TableName)); } } } \ No newline at end of file diff --git a/src/Umbraco.Core/Persistence/Migrations/Syntax/Execute/ExecuteBuilder.cs b/src/Umbraco.Core/Persistence/Migrations/Syntax/Execute/ExecuteBuilder.cs index e537253664..3ecffa46ba 100644 --- a/src/Umbraco.Core/Persistence/Migrations/Syntax/Execute/ExecuteBuilder.cs +++ b/src/Umbraco.Core/Persistence/Migrations/Syntax/Execute/ExecuteBuilder.cs @@ -16,19 +16,19 @@ namespace Umbraco.Core.Persistence.Migrations.Syntax.Execute public void Sql(string sqlStatement) { - var expression = _databaseProviders == null - ? new ExecuteSqlStatementExpression {SqlStatement = sqlStatement} - : new ExecuteSqlStatementExpression(_context.CurrentDatabaseProvider, - _databaseProviders) {SqlStatement = sqlStatement}; + var expression = new ExecuteSqlStatementExpression( + _context.SqlSyntax, + _context.CurrentDatabaseProvider, + _databaseProviders) {SqlStatement = sqlStatement}; _context.Expressions.Add(expression); } public void Code(Func codeStatement) { - var expression = _databaseProviders == null - ? new ExecuteCodeStatementExpression { CodeStatement = codeStatement } - : new ExecuteCodeStatementExpression(_context.CurrentDatabaseProvider, - _databaseProviders) { CodeStatement = codeStatement }; + var expression = new ExecuteCodeStatementExpression( + _context.SqlSyntax, + _context.CurrentDatabaseProvider, + _databaseProviders) {CodeStatement = codeStatement}; _context.Expressions.Add(expression); } } diff --git a/src/Umbraco.Core/Persistence/Migrations/Syntax/Execute/Expressions/ExecuteCodeStatementExpression.cs b/src/Umbraco.Core/Persistence/Migrations/Syntax/Execute/Expressions/ExecuteCodeStatementExpression.cs index 0f88fe2ee6..dc3ace9760 100644 --- a/src/Umbraco.Core/Persistence/Migrations/Syntax/Execute/Expressions/ExecuteCodeStatementExpression.cs +++ b/src/Umbraco.Core/Persistence/Migrations/Syntax/Execute/Expressions/ExecuteCodeStatementExpression.cs @@ -1,15 +1,12 @@ using System; +using Umbraco.Core.Persistence.SqlSyntax; namespace Umbraco.Core.Persistence.Migrations.Syntax.Execute.Expressions { public class ExecuteCodeStatementExpression : MigrationExpressionBase { - public ExecuteCodeStatementExpression() - { - } - - public ExecuteCodeStatementExpression(DatabaseProviders current, DatabaseProviders[] databaseProviders) - : base(current, databaseProviders) + public ExecuteCodeStatementExpression(ISqlSyntaxProvider sqlSyntax, DatabaseProviders currentDatabaseProvider, DatabaseProviders[] supportedDatabaseProviders = null) + : base(sqlSyntax, currentDatabaseProvider, supportedDatabaseProviders) { } @@ -17,7 +14,7 @@ namespace Umbraco.Core.Persistence.Migrations.Syntax.Execute.Expressions public override string Process(Database database) { - if(CodeStatement != null) + if (CodeStatement != null) return CodeStatement(database); return base.Process(database); diff --git a/src/Umbraco.Core/Persistence/Migrations/Syntax/Execute/Expressions/ExecuteSqlStatementExpression.cs b/src/Umbraco.Core/Persistence/Migrations/Syntax/Execute/Expressions/ExecuteSqlStatementExpression.cs index 308a7719dd..152fa749ef 100644 --- a/src/Umbraco.Core/Persistence/Migrations/Syntax/Execute/Expressions/ExecuteSqlStatementExpression.cs +++ b/src/Umbraco.Core/Persistence/Migrations/Syntax/Execute/Expressions/ExecuteSqlStatementExpression.cs @@ -1,12 +1,11 @@ -namespace Umbraco.Core.Persistence.Migrations.Syntax.Execute.Expressions +using Umbraco.Core.Persistence.SqlSyntax; + +namespace Umbraco.Core.Persistence.Migrations.Syntax.Execute.Expressions { public class ExecuteSqlStatementExpression : MigrationExpressionBase { - public ExecuteSqlStatementExpression() - { - } - - public ExecuteSqlStatementExpression(DatabaseProviders current, DatabaseProviders[] databaseProviders) : base(current, databaseProviders) + public ExecuteSqlStatementExpression(ISqlSyntaxProvider sqlSyntax, DatabaseProviders currentDatabaseProvider, DatabaseProviders[] supportedDatabaseProviders = null) + : base(sqlSyntax, currentDatabaseProvider, supportedDatabaseProviders) { } diff --git a/src/Umbraco.Core/Persistence/Migrations/Syntax/Expressions/CreateColumnExpression.cs b/src/Umbraco.Core/Persistence/Migrations/Syntax/Expressions/CreateColumnExpression.cs index 5c7bf3c0b7..14eb5eeb4d 100644 --- a/src/Umbraco.Core/Persistence/Migrations/Syntax/Expressions/CreateColumnExpression.cs +++ b/src/Umbraco.Core/Persistence/Migrations/Syntax/Expressions/CreateColumnExpression.cs @@ -5,13 +5,8 @@ namespace Umbraco.Core.Persistence.Migrations.Syntax.Expressions { public class CreateColumnExpression : MigrationExpressionBase { - public CreateColumnExpression() - { - Column = new ColumnDefinition { ModificationType = ModificationType.Create }; - } - - public CreateColumnExpression(DatabaseProviders current, DatabaseProviders[] databaseProviders) - : base(current, databaseProviders) + public CreateColumnExpression(ISqlSyntaxProvider sqlSyntax, DatabaseProviders currentDatabaseProvider, DatabaseProviders[] supportedDatabaseProviders = null) + : base(sqlSyntax, currentDatabaseProvider, supportedDatabaseProviders) { Column = new ColumnDefinition { ModificationType = ModificationType.Create }; } @@ -28,9 +23,9 @@ namespace Umbraco.Core.Persistence.Migrations.Syntax.Expressions if (string.IsNullOrEmpty(Column.TableName)) Column.TableName = TableName; - return string.Format(SqlSyntaxContext.SqlSyntaxProvider.AddColumn, - SqlSyntaxContext.SqlSyntaxProvider.GetQuotedTableName(Column.TableName), - SqlSyntaxContext.SqlSyntaxProvider.Format(Column)); + return string.Format(SqlSyntax.AddColumn, + SqlSyntax.GetQuotedTableName(Column.TableName), + SqlSyntax.Format(Column)); } } } \ No newline at end of file diff --git a/src/Umbraco.Core/Persistence/Migrations/Syntax/Expressions/CreateForeignKeyExpression.cs b/src/Umbraco.Core/Persistence/Migrations/Syntax/Expressions/CreateForeignKeyExpression.cs index c6c0c437ef..57836281d3 100644 --- a/src/Umbraco.Core/Persistence/Migrations/Syntax/Expressions/CreateForeignKeyExpression.cs +++ b/src/Umbraco.Core/Persistence/Migrations/Syntax/Expressions/CreateForeignKeyExpression.cs @@ -5,13 +5,8 @@ namespace Umbraco.Core.Persistence.Migrations.Syntax.Expressions { public class CreateForeignKeyExpression : MigrationExpressionBase { - public CreateForeignKeyExpression() - { - ForeignKey = new ForeignKeyDefinition(); - } - - public CreateForeignKeyExpression(DatabaseProviders current, DatabaseProviders[] databaseProviders) - : base(current, databaseProviders) + public CreateForeignKeyExpression(ISqlSyntaxProvider sqlSyntax, DatabaseProviders currentDatabaseProvider, DatabaseProviders[] supportedDatabaseProviders = null) + : base(sqlSyntax, currentDatabaseProvider, supportedDatabaseProviders) { ForeignKey = new ForeignKeyDefinition(); } @@ -23,7 +18,7 @@ namespace Umbraco.Core.Persistence.Migrations.Syntax.Expressions if (IsExpressionSupported() == false) return string.Empty; - return SqlSyntaxContext.SqlSyntaxProvider.Format(ForeignKey); + return SqlSyntax.Format(ForeignKey); } } } \ No newline at end of file diff --git a/src/Umbraco.Core/Persistence/Migrations/Syntax/Expressions/CreateIndexExpression.cs b/src/Umbraco.Core/Persistence/Migrations/Syntax/Expressions/CreateIndexExpression.cs index eadb30cd9e..b4ad3dcade 100644 --- a/src/Umbraco.Core/Persistence/Migrations/Syntax/Expressions/CreateIndexExpression.cs +++ b/src/Umbraco.Core/Persistence/Migrations/Syntax/Expressions/CreateIndexExpression.cs @@ -6,30 +6,11 @@ namespace Umbraco.Core.Persistence.Migrations.Syntax.Expressions { public class CreateIndexExpression : MigrationExpressionBase { - public CreateIndexExpression(ISqlSyntaxProvider sqlSyntax) - : base(sqlSyntax) + public CreateIndexExpression(ISqlSyntaxProvider sqlSyntax, DatabaseProviders currentDatabaseProvider, DatabaseProviders[] supportedDatabaseProviders = null) + : base(sqlSyntax, currentDatabaseProvider, supportedDatabaseProviders) { Index = new IndexDefinition(); } - - public CreateIndexExpression(DatabaseProviders current, DatabaseProviders[] databaseProviders, ISqlSyntaxProvider sqlSyntax) - : base(current, databaseProviders, sqlSyntax) - { - Index = new IndexDefinition(); - } - - [Obsolete("Use alternate ctor specifying ISqlSyntaxProvider instead")] - public CreateIndexExpression() - : this(SqlSyntaxContext.SqlSyntaxProvider) - { - - } - - [Obsolete("Use alternate ctor specifying ISqlSyntaxProvider instead")] - public CreateIndexExpression(DatabaseProviders current, DatabaseProviders[] databaseProviders) - : this(current, databaseProviders, SqlSyntaxContext.SqlSyntaxProvider) - { - } public virtual IndexDefinition Index { get; set; } diff --git a/src/Umbraco.Core/Persistence/Migrations/Syntax/Insert/Expressions/InsertDataExpression.cs b/src/Umbraco.Core/Persistence/Migrations/Syntax/Insert/Expressions/InsertDataExpression.cs index b9f076ac7f..cf68ebd842 100644 --- a/src/Umbraco.Core/Persistence/Migrations/Syntax/Insert/Expressions/InsertDataExpression.cs +++ b/src/Umbraco.Core/Persistence/Migrations/Syntax/Insert/Expressions/InsertDataExpression.cs @@ -9,24 +9,21 @@ namespace Umbraco.Core.Persistence.Migrations.Syntax.Insert.Expressions { private readonly List _rows = new List(); - public InsertDataExpression() - { - } - - public InsertDataExpression(DatabaseProviders current, DatabaseProviders[] databaseProviders) : base(current, databaseProviders) + public InsertDataExpression(ISqlSyntaxProvider sqlSyntax, DatabaseProviders currentDatabaseProvider, DatabaseProviders[] supportedDatabaseProviders = null) + : base(sqlSyntax, currentDatabaseProvider, supportedDatabaseProviders) { } public string SchemaName { get; set; } public string TableName { get; set; } - + public List Rows { get { return _rows; } } - + public override string ToString() { @@ -36,7 +33,7 @@ namespace Umbraco.Core.Persistence.Migrations.Syntax.Insert.Expressions return string.Empty; var insertItems = new List(); - + foreach (var item in Rows) { var cols = ""; @@ -50,10 +47,11 @@ namespace Umbraco.Core.Persistence.Migrations.Syntax.Insert.Expressions vals = vals.TrimEnd(','); - var sql = string.Format(SqlSyntaxContext.SqlSyntaxProvider.InsertData, - SqlSyntaxContext.SqlSyntaxProvider.GetQuotedTableName(TableName), - cols, vals); - + var sql = string.Format( + SqlSyntax.InsertData, + SqlSyntax.GetQuotedTableName(TableName), + cols, vals); + insertItems.Add(sql); } @@ -64,12 +62,12 @@ namespace Umbraco.Core.Persistence.Migrations.Syntax.Insert.Expressions { var type = val.GetType(); switch (Type.GetTypeCode(type)) - { + { case TypeCode.Boolean: - return ((bool) val) ? "1" : "0"; + return ((bool)val) ? "1" : "0"; case TypeCode.Single: case TypeCode.Double: - case TypeCode.Decimal: + case TypeCode.Decimal: case TypeCode.SByte: case TypeCode.Int16: case TypeCode.Int32: @@ -80,7 +78,7 @@ namespace Umbraco.Core.Persistence.Migrations.Syntax.Insert.Expressions case TypeCode.UInt64: return val.ToString(); default: - return SqlSyntaxContext.SqlSyntaxProvider.GetQuotedValue(val.ToString()); + return SqlSyntax.GetQuotedValue(val.ToString()); } } } diff --git a/src/Umbraco.Core/Persistence/Migrations/Syntax/Insert/InsertBuilder.cs b/src/Umbraco.Core/Persistence/Migrations/Syntax/Insert/InsertBuilder.cs index 889c3e4008..d80be1cb39 100644 --- a/src/Umbraco.Core/Persistence/Migrations/Syntax/Insert/InsertBuilder.cs +++ b/src/Umbraco.Core/Persistence/Migrations/Syntax/Insert/InsertBuilder.cs @@ -13,7 +13,7 @@ namespace Umbraco.Core.Persistence.Migrations.Syntax.Insert public IInsertDataSyntax IntoTable(string tableName) { - var expression = new InsertDataExpression { TableName = tableName }; + var expression = new InsertDataExpression(_context.SqlSyntax, _context.CurrentDatabaseProvider) { TableName = tableName }; _context.Expressions.Add(expression); return new InsertDataBuilder(expression); } diff --git a/src/Umbraco.Core/Persistence/Migrations/Syntax/Rename/Expressions/RenameColumnExpression.cs b/src/Umbraco.Core/Persistence/Migrations/Syntax/Rename/Expressions/RenameColumnExpression.cs index 4f626e2117..445eed65f2 100644 --- a/src/Umbraco.Core/Persistence/Migrations/Syntax/Rename/Expressions/RenameColumnExpression.cs +++ b/src/Umbraco.Core/Persistence/Migrations/Syntax/Rename/Expressions/RenameColumnExpression.cs @@ -4,12 +4,8 @@ namespace Umbraco.Core.Persistence.Migrations.Syntax.Rename.Expressions { public class RenameColumnExpression : MigrationExpressionBase { - public RenameColumnExpression() - { - } - - public RenameColumnExpression(DatabaseProviders current, DatabaseProviders[] databaseProviders) - : base(current, databaseProviders) + public RenameColumnExpression(ISqlSyntaxProvider sqlSyntax, DatabaseProviders currentDatabaseProvider, DatabaseProviders[] supportedDatabaseProviders = null) + : base(sqlSyntax, currentDatabaseProvider, supportedDatabaseProviders) { } @@ -52,7 +48,7 @@ SELECT CONCAT( if (IsExpressionSupported() == false) return string.Empty; - return SqlSyntaxContext.SqlSyntaxProvider.FormatColumnRename(TableName, OldName, NewName); + return SqlSyntax.FormatColumnRename(TableName, OldName, NewName); } } } \ No newline at end of file diff --git a/src/Umbraco.Core/Persistence/Migrations/Syntax/Rename/Expressions/RenameTableExpression.cs b/src/Umbraco.Core/Persistence/Migrations/Syntax/Rename/Expressions/RenameTableExpression.cs index 956cc32bfc..930d6eca8d 100644 --- a/src/Umbraco.Core/Persistence/Migrations/Syntax/Rename/Expressions/RenameTableExpression.cs +++ b/src/Umbraco.Core/Persistence/Migrations/Syntax/Rename/Expressions/RenameTableExpression.cs @@ -4,12 +4,8 @@ namespace Umbraco.Core.Persistence.Migrations.Syntax.Rename.Expressions { public class RenameTableExpression : MigrationExpressionBase { - public RenameTableExpression() - { - } - - public RenameTableExpression(DatabaseProviders current, DatabaseProviders[] databaseProviders) - : base(current, databaseProviders) + public RenameTableExpression(ISqlSyntaxProvider sqlSyntax, DatabaseProviders currentDatabaseProvider, DatabaseProviders[] supportedDatabaseProviders = null) + : base(sqlSyntax, currentDatabaseProvider, supportedDatabaseProviders) { } @@ -21,8 +17,8 @@ namespace Umbraco.Core.Persistence.Migrations.Syntax.Rename.Expressions { if (IsExpressionSupported() == false) return string.Empty; - - return SqlSyntaxContext.SqlSyntaxProvider.FormatTableRename(OldName, NewName); + + return SqlSyntax.FormatTableRename(OldName, NewName); } } } \ No newline at end of file diff --git a/src/Umbraco.Core/Persistence/Migrations/Syntax/Rename/RenameBuilder.cs b/src/Umbraco.Core/Persistence/Migrations/Syntax/Rename/RenameBuilder.cs index 7116935d77..2e5d7cb55b 100644 --- a/src/Umbraco.Core/Persistence/Migrations/Syntax/Rename/RenameBuilder.cs +++ b/src/Umbraco.Core/Persistence/Migrations/Syntax/Rename/RenameBuilder.cs @@ -17,18 +17,18 @@ namespace Umbraco.Core.Persistence.Migrations.Syntax.Rename public IRenameTableSyntax Table(string oldName) { - var expression = _databaseProviders == null - ? new RenameTableExpression {OldName = oldName} - : new RenameTableExpression(_context.CurrentDatabaseProvider, _databaseProviders) { OldName = oldName }; + var expression = new RenameTableExpression( + _context.SqlSyntax, + _context.CurrentDatabaseProvider, _databaseProviders) {OldName = oldName}; _context.Expressions.Add(expression); return new RenameTableBuilder(expression); } public IRenameColumnTableSyntax Column(string oldName) { - var expression = _databaseProviders == null - ? new RenameColumnExpression {OldName = oldName} - : new RenameColumnExpression(_context.CurrentDatabaseProvider, _databaseProviders) { OldName = oldName }; + var expression = new RenameColumnExpression( + _context.SqlSyntax, + _context.CurrentDatabaseProvider, _databaseProviders) {OldName = oldName}; _context.Expressions.Add(expression); return new RenameColumnBuilder(expression); } diff --git a/src/Umbraco.Core/Persistence/Migrations/Syntax/Update/Expressions/UpdateDataExpression.cs b/src/Umbraco.Core/Persistence/Migrations/Syntax/Update/Expressions/UpdateDataExpression.cs index a5a3204974..37516f8b5b 100644 --- a/src/Umbraco.Core/Persistence/Migrations/Syntax/Update/Expressions/UpdateDataExpression.cs +++ b/src/Umbraco.Core/Persistence/Migrations/Syntax/Update/Expressions/UpdateDataExpression.cs @@ -5,11 +5,8 @@ namespace Umbraco.Core.Persistence.Migrations.Syntax.Update.Expressions { public class UpdateDataExpression : MigrationExpressionBase { - public UpdateDataExpression() - { - } - - public UpdateDataExpression(DatabaseProviders current, DatabaseProviders[] databaseProviders) : base(current, databaseProviders) + public UpdateDataExpression(ISqlSyntaxProvider sqlSyntax, DatabaseProviders currentDatabaseProvider, DatabaseProviders[] supportedDatabaseProviders = null) + : base(sqlSyntax, currentDatabaseProvider, supportedDatabaseProviders) { } @@ -31,8 +28,8 @@ namespace Umbraco.Core.Persistence.Migrations.Syntax.Update.Expressions foreach (var item in Set) { updateItems.Add(string.Format("{0} = {1}", - SqlSyntaxContext.SqlSyntaxProvider.GetQuotedColumnName(item.Key), - SqlSyntaxContext.SqlSyntaxProvider.GetQuotedValue(item.Value.ToString()))); + SqlSyntax.GetQuotedColumnName(item.Key), + SqlSyntax.GetQuotedValue(item.Value.ToString()))); } if (IsAllRows) @@ -44,14 +41,14 @@ namespace Umbraco.Core.Persistence.Migrations.Syntax.Update.Expressions foreach (var item in Where) { whereClauses.Add(string.Format("{0} {1} {2}", - SqlSyntaxContext.SqlSyntaxProvider.GetQuotedColumnName(item.Key), + SqlSyntax.GetQuotedColumnName(item.Key), item.Value == null ? "IS" : "=", - SqlSyntaxContext.SqlSyntaxProvider.GetQuotedValue(item.Value.ToString()))); + SqlSyntax.GetQuotedValue(item.Value.ToString()))); } } - return string.Format(SqlSyntaxContext.SqlSyntaxProvider.UpdateData, - SqlSyntaxContext.SqlSyntaxProvider.GetQuotedTableName(TableName), - string.Join(", ", updateItems.ToArray()), + return string.Format(SqlSyntax.UpdateData, + SqlSyntax.GetQuotedTableName(TableName), + string.Join(", ", updateItems.ToArray()), string.Join(" AND ", whereClauses.ToArray())); } } diff --git a/src/Umbraco.Core/Persistence/Migrations/Syntax/Update/UpdateBuilder.cs b/src/Umbraco.Core/Persistence/Migrations/Syntax/Update/UpdateBuilder.cs index e2e118c05f..325a231211 100644 --- a/src/Umbraco.Core/Persistence/Migrations/Syntax/Update/UpdateBuilder.cs +++ b/src/Umbraco.Core/Persistence/Migrations/Syntax/Update/UpdateBuilder.cs @@ -15,9 +15,11 @@ namespace Umbraco.Core.Persistence.Migrations.Syntax.Update public IUpdateSetSyntax Table(string tableName) { - var expression = _databaseProviders == null - ? new UpdateDataExpression { TableName = tableName } - : new UpdateDataExpression(_context.CurrentDatabaseProvider, _databaseProviders) { TableName = tableName }; + var expression = new UpdateDataExpression( + _context.SqlSyntax, + _context.CurrentDatabaseProvider, + _databaseProviders) {TableName = tableName}; + _context.Expressions.Add(expression); return new UpdateDataBuilder(expression, _context); } diff --git a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionFourNineZero/RemoveUmbracoAppConstraints.cs b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionFourNineZero/RemoveUmbracoAppConstraints.cs index 38cc00e48e..b05772dcd6 100644 --- a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionFourNineZero/RemoveUmbracoAppConstraints.cs +++ b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionFourNineZero/RemoveUmbracoAppConstraints.cs @@ -1,6 +1,7 @@ using System.Data; using System.Linq; using Umbraco.Core.Configuration; +using Umbraco.Core.Logging; using Umbraco.Core.Persistence.SqlSyntax; namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionFourNineZero @@ -8,6 +9,11 @@ namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionFourNineZero [MigrationAttribute("4.9.0", 0, GlobalSettings.UmbracoMigrationName)] public class RemoveUmbracoAppConstraints : MigrationBase { + public RemoveUmbracoAppConstraints(ISqlSyntaxProvider sqlSyntax, ILogger logger) + : base(sqlSyntax, logger) + { + } + public override void Up() { //This will work on mysql and should work on mssql however the old keys were not named consistently with how the keys are @@ -27,15 +33,15 @@ namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionFourNineZero { Delete.ForeignKey("FK_umbracoUser2app_umbracoApp").OnTable("umbracoUser2app"); //name this migration, this is a hack for DeleteAppTables to ensure it's not executed twice - ((MigrationExpressionBase) Context.Expressions.Last()).Name = "FK_umbracoUser2app_umbracoApp"; + ((MigrationExpressionBase)Context.Expressions.Last()).Name = "FK_umbracoUser2app_umbracoApp"; } if (constraints.Any(x => x.Item1.InvariantEquals("umbracoUser2app") && x.Item3.InvariantEquals("FK_umbracoUser2app_umbracoUser"))) { Delete.ForeignKey("FK_umbracoUser2app_umbracoUser").OnTable("umbracoUser2app"); } - + } - + } public override void Down() diff --git a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSeven/AddIndexToCmsMacroPropertyTable.cs b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSeven/AddIndexToCmsMacroPropertyTable.cs index 96c902884c..ae1e05fae2 100644 --- a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSeven/AddIndexToCmsMacroPropertyTable.cs +++ b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSeven/AddIndexToCmsMacroPropertyTable.cs @@ -21,14 +21,14 @@ namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSeven _skipIndexCheck = skipIndexCheck; } - public AddIndexToCmsMacroPropertyTable() + public AddIndexToCmsMacroPropertyTable(ISqlSyntaxProvider sqlSyntax, ILogger logger) + : base(sqlSyntax, logger) { - } public override void Up() { - var dbIndexes = _skipIndexCheck ? new DbIndexDefinition[]{} : SqlSyntax.GetDefinedIndexes(Context.Database) + var dbIndexes = _skipIndexCheck ? new DbIndexDefinition[] { } : SqlSyntax.GetDefinedIndexes(Context.Database) .Select(x => new DbIndexDefinition() { TableName = x.Item1, @@ -47,7 +47,7 @@ namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSeven .Unique(); } - + } public override void Down() diff --git a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSeven/AddIndexToCmsMacroTable.cs b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSeven/AddIndexToCmsMacroTable.cs index 704d09dd15..e48a26b303 100644 --- a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSeven/AddIndexToCmsMacroTable.cs +++ b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSeven/AddIndexToCmsMacroTable.cs @@ -22,9 +22,9 @@ namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSeven _skipIndexCheck = skipIndexCheck; } - public AddIndexToCmsMacroTable() + public AddIndexToCmsMacroTable(ISqlSyntaxProvider sqlSyntax, ILogger logger) + : base(sqlSyntax, logger) { - } public override void Up() @@ -41,9 +41,9 @@ namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSeven //make sure it doesn't already exist if (dbIndexes.Any(x => x.IndexName.InvariantEquals("IX_cmsMacro_Alias")) == false) { - Create.Index("IX_cmsMacro_Alias").OnTable("cmsMacro").OnColumn("macroAlias").Unique(); + Create.Index("IX_cmsMacro_Alias").OnTable("cmsMacro").OnColumn("macroAlias").Unique(); } - + } public override void Down() diff --git a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSeven/AddPropertyEditorAliasColumn.cs b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSeven/AddPropertyEditorAliasColumn.cs index 06fe7456d9..271d843075 100644 --- a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSeven/AddPropertyEditorAliasColumn.cs +++ b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSeven/AddPropertyEditorAliasColumn.cs @@ -1,5 +1,7 @@ using System; using Umbraco.Core.Configuration; +using Umbraco.Core.Logging; +using Umbraco.Core.Persistence.SqlSyntax; namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSeven { @@ -7,8 +9,13 @@ namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSeven [Migration("7.0.0", 0, GlobalSettings.UmbracoMigrationName)] public class AddPropertyEditorAliasColumn : MigrationBase { + public AddPropertyEditorAliasColumn(ISqlSyntaxProvider sqlSyntax, ILogger logger) + : base(sqlSyntax, logger) + { + } + public override void Up() - { + { Alter.Table("cmsDataType").AddColumn("propertyEditorAlias").AsString(255).NotNullable().WithDefaultValue(""); } diff --git a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSeven/AlterCmsMacroPropertyTable.cs b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSeven/AlterCmsMacroPropertyTable.cs index 87289bdd9d..51cbf6b48d 100644 --- a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSeven/AlterCmsMacroPropertyTable.cs +++ b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSeven/AlterCmsMacroPropertyTable.cs @@ -1,6 +1,7 @@ using System; using System.Linq; using Umbraco.Core.Configuration; +using Umbraco.Core.Logging; using Umbraco.Core.Persistence.DatabaseModelDefinitions; using Umbraco.Core.Persistence.Migrations.Syntax.Delete.DefaultConstraint; using Umbraco.Core.Persistence.Migrations.Syntax.Delete.Expressions; @@ -19,11 +20,16 @@ namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSeven [Migration("7.0.0", 6, GlobalSettings.UmbracoMigrationName)] public class AlterCmsMacroPropertyTable : MigrationBase { + public AlterCmsMacroPropertyTable(ISqlSyntaxProvider sqlSyntax, ILogger logger) + : base(sqlSyntax, logger) + { + } + public override void Up() { //now that the controlId column is renamed and now a string we need to convert if (Context == null || Context.Database == null) return; - + //var cpt = SqlSyntaxContext.SqlSyntaxProvider.GetConstraintsPerTable(Context.Database); //var di = SqlSyntaxContext.SqlSyntaxProvider.GetDefinedIndexes(Context.Database); @@ -68,7 +74,7 @@ namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSeven Delete.ForeignKey(constraint.Item3).OnTable("cmsMacroProperty"); } } - + Alter.Table("cmsMacroProperty").AddColumn("editorAlias").AsString(255).NotNullable().WithDefaultValue(""); //we need to get the data and create the migration scripts before we change the actual schema bits below! diff --git a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSeven/AlterTagRelationsTable.cs b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSeven/AlterTagRelationsTable.cs index f9a8f3951c..d4789b51c9 100644 --- a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSeven/AlterTagRelationsTable.cs +++ b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSeven/AlterTagRelationsTable.cs @@ -12,6 +12,11 @@ namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSeven [Migration("7.0.0", 8, GlobalSettings.UmbracoMigrationName)] public class AlterTagRelationsTable : MigrationBase { + public AlterTagRelationsTable(ISqlSyntaxProvider sqlSyntax, ILogger logger) + : base(sqlSyntax, logger) + { + } + public override void Up() { if (Context == null || Context.Database == null) return; @@ -52,7 +57,7 @@ namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSeven // at least since 6.0 and the new installation way but perhaps it had them way back in 4.x so we need to check // it exists before trying to drop it. if (Context.CurrentDatabaseProvider == DatabaseProviders.MySql) - { + { //this will let us know if this pk exists on this table if (constraints.Count(x => x.Item1.InvariantEquals("cmsTagRelationship") && x.Item3.InvariantEquals("PRIMARY")) > 0) { @@ -65,10 +70,10 @@ namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSeven var pkName = constraints.FirstOrDefault(x => x.Item1.InvariantEquals("cmsTagRelationship") && x.Item3.InvariantStartsWith("PK_")); if (pkName != null) { - Delete.PrimaryKey(pkName.Item3).FromTable("cmsTagRelationship"); + Delete.PrimaryKey(pkName.Item3).FromTable("cmsTagRelationship"); } } - + } private void Upgrade() diff --git a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSeven/AlterTagsTable.cs b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSeven/AlterTagsTable.cs index da3bfa9a7b..b16ceb032c 100644 --- a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSeven/AlterTagsTable.cs +++ b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSeven/AlterTagsTable.cs @@ -2,6 +2,7 @@ using System.Data; using System.Linq; using Umbraco.Core.Configuration; +using Umbraco.Core.Logging; using Umbraco.Core.Persistence.DatabaseModelDefinitions; using Umbraco.Core.Persistence.SqlSyntax; @@ -10,6 +11,11 @@ namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSeven [Migration("7.0.0", 9, GlobalSettings.UmbracoMigrationName)] public class AlterTagsTable : MigrationBase { + public AlterTagsTable(ISqlSyntaxProvider sqlSyntax, ILogger logger) + : base(sqlSyntax, logger) + { + } + public override void Up() { var dbIndexes = SqlSyntax.GetDefinedIndexes(Context.Database) @@ -20,7 +26,7 @@ namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSeven ColumnName = x.Item3, IsUnique = x.Item4 }).ToArray(); - + //add a foreign key to the parent id column too! Create.ForeignKey("FK_cmsTags_cmsTags") .FromTable("cmsTags") @@ -28,7 +34,7 @@ namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSeven .ToTable("cmsTags") .PrimaryColumn("id") .OnDelete(Rule.None) - .OnUpdate(Rule.None); + .OnUpdate(Rule.None); //make sure it doesn't already exist if (dbIndexes.Any(x => x.IndexName.InvariantEquals("IX_cmsTags")) == false) @@ -36,7 +42,7 @@ namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSeven //add an index to tag/group since it's queried often Create.Index("IX_cmsTags").OnTable("cmsTags").OnColumn("tag").Ascending().OnColumn("group").Ascending().WithOptions().NonClustered(); } - + } public override void Down() diff --git a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSeven/AlterUserTable.cs b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSeven/AlterUserTable.cs index a9b8e382d0..ba2b070d3f 100644 --- a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSeven/AlterUserTable.cs +++ b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSeven/AlterUserTable.cs @@ -1,11 +1,18 @@ using System; using Umbraco.Core.Configuration; +using Umbraco.Core.Logging; +using Umbraco.Core.Persistence.SqlSyntax; namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSeven { [Migration("7.0.0", 3, GlobalSettings.UmbracoMigrationName)] public class AlterUserTable : MigrationBase { + public AlterUserTable(ISqlSyntaxProvider sqlSyntax, ILogger logger) + : base(sqlSyntax, logger) + { + } + public override void Up() { Delete.Column("userDefaultPermissions").FromTable("umbracoUser"); diff --git a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSeven/AssignMissingKeysAndIndexes.cs b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSeven/AssignMissingKeysAndIndexes.cs index 577ce1dc66..49342397c5 100644 --- a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSeven/AssignMissingKeysAndIndexes.cs +++ b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSeven/AssignMissingKeysAndIndexes.cs @@ -1,6 +1,7 @@ using System.Data; using System.Linq; using Umbraco.Core.Configuration; +using Umbraco.Core.Logging; using Umbraco.Core.Persistence.DatabaseModelDefinitions; using Umbraco.Core.Persistence.SqlSyntax; @@ -14,6 +15,11 @@ namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSeven [Migration("7.0.0", 0, GlobalSettings.UmbracoMigrationName)] public class AssignMissingKeysAndIndexes : MigrationBase { + public AssignMissingKeysAndIndexes(ISqlSyntaxProvider sqlSyntax, ILogger logger) + : base(sqlSyntax, logger) + { + } + public override void Up() { @@ -33,7 +39,7 @@ namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSeven Create.Index("IX_cmsContent").OnTable("cmsContent").OnColumn("nodeId").Ascending().WithOptions().Unique(); } - if (Context.CurrentDatabaseProvider == DatabaseProviders.SqlServer + if (Context.CurrentDatabaseProvider == DatabaseProviders.SqlServer || Context.CurrentDatabaseProvider == DatabaseProviders.SqlServerCE) { var constraints = SqlSyntax.GetConstraintsPerColumn(Context.Database).Distinct().ToArray(); diff --git a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSeven/DropControlIdColumn.cs b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSeven/DropControlIdColumn.cs index 2148b0ccbc..07c3e754f7 100644 --- a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSeven/DropControlIdColumn.cs +++ b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSeven/DropControlIdColumn.cs @@ -1,11 +1,18 @@ using System; using Umbraco.Core.Configuration; +using Umbraco.Core.Logging; +using Umbraco.Core.Persistence.SqlSyntax; namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSeven { [Migration("7.0.0", 2, GlobalSettings.UmbracoMigrationName)] public class DropControlIdColumn : MigrationBase { + public DropControlIdColumn(ISqlSyntaxProvider sqlSyntax, ILogger logger) + : base(sqlSyntax, logger) + { + } + public override void Up() { Delete.Column("controlId").FromTable("cmsDataType"); diff --git a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSeven/RemoveCmsMacroPropertyTypeTable.cs b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSeven/RemoveCmsMacroPropertyTypeTable.cs index 9264fdc646..103c5422d8 100644 --- a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSeven/RemoveCmsMacroPropertyTypeTable.cs +++ b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSeven/RemoveCmsMacroPropertyTypeTable.cs @@ -1,11 +1,18 @@ using System; using Umbraco.Core.Configuration; +using Umbraco.Core.Logging; +using Umbraco.Core.Persistence.SqlSyntax; namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSeven { [Migration("7.0.0", 7, GlobalSettings.UmbracoMigrationName)] public class RemoveCmsMacroPropertyTypeTable : MigrationBase { + public RemoveCmsMacroPropertyTypeTable(ISqlSyntaxProvider sqlSyntax, ILogger logger) + : base(sqlSyntax, logger) + { + } + public override void Up() { Delete.Table("cmsMacroPropertyType"); diff --git a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSeven/UpdateControlIdToPropertyEditorAlias.cs b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSeven/UpdateControlIdToPropertyEditorAlias.cs index 12ad0b4f34..7b8daa31e0 100644 --- a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSeven/UpdateControlIdToPropertyEditorAlias.cs +++ b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSeven/UpdateControlIdToPropertyEditorAlias.cs @@ -1,5 +1,7 @@ using System; using Umbraco.Core.Configuration; +using Umbraco.Core.Logging; +using Umbraco.Core.Persistence.SqlSyntax; using Umbraco.Core.PropertyEditors; namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSeven @@ -10,6 +12,11 @@ namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSeven [Migration("7.0.0", 1, GlobalSettings.UmbracoMigrationName)] public class UpdateControlIdToPropertyEditorAlias : MigrationBase { + public UpdateControlIdToPropertyEditorAlias(ISqlSyntaxProvider sqlSyntax, ILogger logger) + : base(sqlSyntax, logger) + { + } + public override void Up() { //now that the controlId column is renamed and now a string we need to convert diff --git a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSeven/UpdateRelatedLinksData.cs b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSeven/UpdateRelatedLinksData.cs index 218724e053..5056c1775b 100644 --- a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSeven/UpdateRelatedLinksData.cs +++ b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSeven/UpdateRelatedLinksData.cs @@ -12,12 +12,18 @@ using Newtonsoft.Json; using Umbraco.Core.Configuration; using Umbraco.Core.Logging; using Umbraco.Core.Models.Rdbms; +using Umbraco.Core.Persistence.SqlSyntax; namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSeven { [Migration("7.0.0", 10, GlobalSettings.UmbracoMigrationName)] public class UpdateRelatedLinksData : MigrationBase { + public UpdateRelatedLinksData(ISqlSyntaxProvider sqlSyntax, ILogger logger) + : base(sqlSyntax, logger) + { + } + public override void Up() { Execute.Code(UpdateRelatedLinksDataDo); @@ -27,7 +33,8 @@ namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSeven { if (database != null) { - var dtSql = new Sql().Select("nodeId").From().Where(dto => dto.PropertyEditorAlias == Constants.PropertyEditors.RelatedLinksAlias); + var dtSql = new Sql().Select("nodeId").From(SqlSyntax) + .Where(SqlSyntax, dto => dto.PropertyEditorAlias == Constants.PropertyEditors.RelatedLinksAlias); var dataTypeIds = database.Fetch(dtSql); if (!dataTypeIds.Any()) return string.Empty; @@ -64,9 +71,9 @@ namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSeven xml = new XmlDocument(); xml.LoadXml(data.Text); } - catch (Exception ex) + catch (Exception ex) { - Logger.Error("The data stored for property id " + data.Id + " on document " + data.NodeId + + Logger.Error("The data stored for property id " + data.Id + " on document " + data.NodeId + " is not valid XML, the data will be removed because it cannot be converted to the new format. The value was: " + data.Text, ex); data.Text = ""; diff --git a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSevenOneZero/AssignMissingPrimaryForMySqlKeys.cs b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSevenOneZero/AssignMissingPrimaryForMySqlKeys.cs index b26ecca330..b837e7d31a 100644 --- a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSevenOneZero/AssignMissingPrimaryForMySqlKeys.cs +++ b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSevenOneZero/AssignMissingPrimaryForMySqlKeys.cs @@ -1,5 +1,6 @@ using System.Linq; using Umbraco.Core.Configuration; +using Umbraco.Core.Logging; using Umbraco.Core.Persistence.SqlSyntax; namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSevenOneZero @@ -13,12 +14,17 @@ namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSevenOneZero [Migration("7.0.0", "7.1.0", 0, GlobalSettings.UmbracoMigrationName)] public class AssignMissingPrimaryForMySqlKeys : MigrationBase { + public AssignMissingPrimaryForMySqlKeys(ISqlSyntaxProvider sqlSyntax, ILogger logger) + : base(sqlSyntax, logger) + { + } + public override void Up() { if (Context.CurrentDatabaseProvider == DatabaseProviders.MySql) { var constraints = SqlSyntax.GetConstraintsPerColumn(Context.Database).Distinct().ToArray(); - + //This should be 3 because this table has 3 keys if (constraints.Count(x => x.Item1.InvariantEquals("cmsTagRelationship") && x.Item3.InvariantEquals("PRIMARY")) == 0) { diff --git a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSevenThreeZero/AddPublicAccessTables.cs b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSevenThreeZero/AddPublicAccessTables.cs index e2a5318051..572e54de05 100644 --- a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSevenThreeZero/AddPublicAccessTables.cs +++ b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSevenThreeZero/AddPublicAccessTables.cs @@ -1,11 +1,18 @@ using System.Linq; using Umbraco.Core.Configuration; +using Umbraco.Core.Logging; +using Umbraco.Core.Persistence.SqlSyntax; namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSevenThreeZero { [Migration("7.3.0", 5, GlobalSettings.UmbracoMigrationName)] public class AddPublicAccessTables : MigrationBase { + public AddPublicAccessTables(ISqlSyntaxProvider sqlSyntax, ILogger logger) + : base(sqlSyntax, logger) + { + } + public override void Up() { //Don't exeucte if the table is already there diff --git a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSevenThreeZero/AddRelationTypeForDocumentOnDelete.cs b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSevenThreeZero/AddRelationTypeForDocumentOnDelete.cs index c656376a9f..800da45729 100644 --- a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSevenThreeZero/AddRelationTypeForDocumentOnDelete.cs +++ b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSevenThreeZero/AddRelationTypeForDocumentOnDelete.cs @@ -1,12 +1,19 @@ using System; using Umbraco.Core.Configuration; +using Umbraco.Core.Logging; using Umbraco.Core.Models.Rdbms; +using Umbraco.Core.Persistence.SqlSyntax; namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSevenThreeZero { [Migration("7.3.0", 0, GlobalSettings.UmbracoMigrationName)] public class AddRelationTypeForDocumentOnDelete : MigrationBase { + public AddRelationTypeForDocumentOnDelete(ISqlSyntaxProvider sqlSyntax, ILogger logger) + : base(sqlSyntax, logger) + { + } + public override void Up() { Insert.IntoTable("umbracoRelationType").Row(new diff --git a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSevenThreeZero/MigrateAndRemoveTemplateMasterColumn.cs b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSevenThreeZero/MigrateAndRemoveTemplateMasterColumn.cs index 0fe8c3c36c..0c0227d520 100644 --- a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSevenThreeZero/MigrateAndRemoveTemplateMasterColumn.cs +++ b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSevenThreeZero/MigrateAndRemoveTemplateMasterColumn.cs @@ -1,6 +1,7 @@ using System.Collections.Generic; using System.Linq; using Umbraco.Core.Configuration; +using Umbraco.Core.Logging; using Umbraco.Core.Models.Rdbms; using Umbraco.Core.Persistence.SqlSyntax; @@ -12,6 +13,11 @@ namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSevenThreeZe [Migration("7.3.0", 1, GlobalSettings.UmbracoMigrationName)] public class MigrateAndRemoveTemplateMasterColumn : MigrationBase { + public MigrateAndRemoveTemplateMasterColumn(ISqlSyntaxProvider sqlSyntax, ILogger logger) + : base(sqlSyntax, logger) + { + } + public override void Up() { @@ -24,14 +30,14 @@ namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSevenThreeZe //update the parentId column for all templates to be correct so it matches the current 'master' template //NOTE: we are using dynamic because we need to get the data in a column that no longer exists in the schema - var templates = Context.Database.Fetch(new Sql().Select("*").From()); + var templates = Context.Database.Fetch(new Sql().Select("*").From(SqlSyntax)); foreach (var template in templates) { - Update.Table("umbracoNode").Set(new {parentID = template.master ?? -1}).Where(new {id = template.nodeId}); + Update.Table("umbracoNode").Set(new { parentID = template.master ?? -1 }).Where(new { id = template.nodeId }); //now build the correct path for the template - Update.Table("umbracoNode").Set(new { path = BuildPath (template, templates)}).Where(new { id = template.nodeId }); - + Update.Table("umbracoNode").Set(new { path = BuildPath(template, templates) }).Where(new { id = template.nodeId }); + } //now remove the master column and key @@ -46,7 +52,7 @@ namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSevenThreeZe if (constraints.Any(x => x.Item1.InvariantEquals("cmsTemplate") && x.Item3.InvariantEquals("FK_cmsTemplate_cmsTemplate"))) { - Delete.ForeignKey("FK_cmsTemplate_cmsTemplate").OnTable("cmsTemplate"); + Delete.ForeignKey("FK_cmsTemplate_cmsTemplate").OnTable("cmsTemplate"); } //TODO: Hopefully it's not named something else silly in some crazy old versions @@ -55,7 +61,7 @@ namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSevenThreeZe var columns = SqlSyntax.GetColumnsInSchema(Context.Database).Distinct().ToArray(); if (columns.Any(x => x.ColumnName.InvariantEquals("master") && x.TableName.InvariantEquals("cmsTemplate"))) { - Delete.Column("master").FromTable("cmsTemplate"); + Delete.Column("master").FromTable("cmsTemplate"); } } diff --git a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSevenThreeZero/MigrateStylesheetDataToFile.cs b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSevenThreeZero/MigrateStylesheetDataToFile.cs index 05a5b54f5f..35e4befc55 100644 --- a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSevenThreeZero/MigrateStylesheetDataToFile.cs +++ b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSevenThreeZero/MigrateStylesheetDataToFile.cs @@ -4,7 +4,9 @@ using System.Linq; using System.Text; using Umbraco.Core.Configuration; using Umbraco.Core.IO; +using Umbraco.Core.Logging; using Umbraco.Core.Models; +using Umbraco.Core.Persistence.SqlSyntax; using File = System.IO.File; namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSevenThreeZero @@ -21,6 +23,11 @@ namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSevenThreeZe [Migration("7.3.0", 2, GlobalSettings.UmbracoMigrationName)] public class MigrateStylesheetDataToFile : MigrationBase { + public MigrateStylesheetDataToFile(ISqlSyntaxProvider sqlSyntax, ILogger logger) + : base(sqlSyntax, logger) + { + } + public override void Up() { //Don't exeucte if the stylesheet table is not there @@ -30,7 +37,7 @@ namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSevenThreeZe //This is all rather nasty but it's how stylesheets used to work in the 2 various ugly ways so we just have to // deal with that to get this migration done - + var tempFolder = IOHelper.MapPath("~/App_Data/TEMP/CssMigration/"); if (Directory.Exists(tempFolder)) { @@ -44,7 +51,7 @@ namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSevenThreeZe } //create the temp folder var tempDir = Directory.CreateDirectory(IOHelper.MapPath("~/App_Data/TEMP/CssMigration/")); - + var sheets = Context.Database.Fetch("SELECT * FROM cmsStylesheet INNER JOIN umbracoNode on cmsStylesheet.nodeId = umbracoNode.id"); foreach (var sheet in sheets) @@ -55,7 +62,7 @@ namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSevenThreeZe //we will always use the file content over the db content if there is any using (var memStream = new MemoryStream(Encoding.UTF8.GetBytes(sheet.content))) { - dbContent = GetContentAboveUmbracoProps(memStream); + dbContent = GetContentAboveUmbracoProps(memStream); } var fileContent = string.Empty; @@ -69,7 +76,7 @@ namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSevenThreeZe { using (var stream = File.OpenRead(filePath)) { - fileContent = GetContentAboveUmbracoProps(stream); + fileContent = GetContentAboveUmbracoProps(stream); } } @@ -86,10 +93,10 @@ namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSevenThreeZe { if (stylesheetInstance.Properties.Any(x => x.Name == prop.text) == false) { - stylesheetInstance.AddProperty(new StylesheetProperty(prop.text, prop.stylesheetPropertyAlias, prop.stylesheetPropertyValue)); + stylesheetInstance.AddProperty(new StylesheetProperty(prop.text, prop.stylesheetPropertyAlias, prop.stylesheetPropertyValue)); } } - + //Save to temp folder //ensure the folder for the file exists since it could be in a sub folder @@ -97,7 +104,7 @@ namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSevenThreeZe Directory.CreateDirectory(Path.GetDirectoryName(tempFilePath)); File.WriteAllText(tempFilePath, stylesheetInstance.Content, Encoding.UTF8); - + } } diff --git a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSevenThreeZero/RemoveLanguageLocaleColumn.cs b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSevenThreeZero/RemoveLanguageLocaleColumn.cs index 9e28994ca4..a793cc6bbc 100644 --- a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSevenThreeZero/RemoveLanguageLocaleColumn.cs +++ b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSevenThreeZero/RemoveLanguageLocaleColumn.cs @@ -1,11 +1,18 @@ using System.Linq; using Umbraco.Core.Configuration; +using Umbraco.Core.Logging; +using Umbraco.Core.Persistence.SqlSyntax; namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSevenThreeZero { [Migration("7.3.0", 4, GlobalSettings.UmbracoMigrationName)] public class RemoveLanguageLocaleColumn : MigrationBase { + public RemoveLanguageLocaleColumn(ISqlSyntaxProvider sqlSyntax, ILogger logger) + : base(sqlSyntax, logger) + { + } + public override void Up() { var columns = SqlSyntax.GetColumnsInSchema(Context.Database).Distinct().ToArray(); diff --git a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSevenThreeZero/RemoveStylesheetDataAndTables.cs b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSevenThreeZero/RemoveStylesheetDataAndTables.cs index a47c00c501..da6d1b957d 100644 --- a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSevenThreeZero/RemoveStylesheetDataAndTables.cs +++ b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSevenThreeZero/RemoveStylesheetDataAndTables.cs @@ -1,12 +1,19 @@ using System; using System.Linq; using Umbraco.Core.Configuration; +using Umbraco.Core.Logging; +using Umbraco.Core.Persistence.SqlSyntax; namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSevenThreeZero { [Migration("7.3.0", 3, GlobalSettings.UmbracoMigrationName)] public class RemoveStylesheetDataAndTables : MigrationBase { + public RemoveStylesheetDataAndTables(ISqlSyntaxProvider sqlSyntax, ILogger logger) + : base(sqlSyntax, logger) + { + } + public override void Up() { //Clear all stylesheet data if the tables exist diff --git a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSevenTwoZero/AddIndexToUmbracoNodeTable.cs b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSevenTwoZero/AddIndexToUmbracoNodeTable.cs index 24affa73a4..6a897e746d 100644 --- a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSevenTwoZero/AddIndexToUmbracoNodeTable.cs +++ b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSevenTwoZero/AddIndexToUmbracoNodeTable.cs @@ -1,5 +1,6 @@ using System.Linq; using Umbraco.Core.Configuration; +using Umbraco.Core.Logging; using Umbraco.Core.Persistence.DatabaseModelDefinitions; using Umbraco.Core.Persistence.SqlSyntax; @@ -10,13 +11,15 @@ namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSevenTwoZero { private readonly bool _skipIndexCheck; - internal AddIndexToUmbracoNodeTable(bool skipIndexCheck) - { - _skipIndexCheck = skipIndexCheck; + public AddIndexToUmbracoNodeTable(ISqlSyntaxProvider sqlSyntax, ILogger logger) + : base(sqlSyntax, logger) + { } - public AddIndexToUmbracoNodeTable() + internal AddIndexToUmbracoNodeTable(ISqlSyntaxProvider sqlSyntax, ILogger logger, bool skipIndexCheck) + : base(sqlSyntax, logger) { + _skipIndexCheck = skipIndexCheck; } public override void Up() @@ -33,7 +36,7 @@ namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSevenTwoZero //make sure it doesn't already exist if (dbIndexes.Any(x => x.IndexName.InvariantEquals("IX_umbracoNodeUniqueID")) == false) { - Create.Index("IX_umbracoNodeUniqueID").OnTable("umbracoNode").OnColumn("uniqueID").Ascending().WithOptions().NonClustered(); + Create.Index("IX_umbracoNodeUniqueID").OnTable("umbracoNode").OnColumn("uniqueID").Ascending().WithOptions().NonClustered(); } } diff --git a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSevenTwoZero/AddMissingForeignKeyForContentType.cs b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSevenTwoZero/AddMissingForeignKeyForContentType.cs index 0f5cc7da72..eaa6953df5 100644 --- a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSevenTwoZero/AddMissingForeignKeyForContentType.cs +++ b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSevenTwoZero/AddMissingForeignKeyForContentType.cs @@ -1,6 +1,7 @@ using System.Data; using System.Linq; using Umbraco.Core.Configuration; +using Umbraco.Core.Logging; using Umbraco.Core.Models.Rdbms; using Umbraco.Core.Persistence.DatabaseModelDefinitions; using Umbraco.Core.Persistence.SqlSyntax; @@ -10,6 +11,11 @@ namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSevenTwoZero [Migration("7.2.0", 1, GlobalSettings.UmbracoMigrationName)] public class AddMissingForeignKeyForContentType : MigrationBase { + public AddMissingForeignKeyForContentType(ISqlSyntaxProvider sqlSyntax, ILogger logger) + : base(sqlSyntax, logger) + { + } + public override void Up() { @@ -43,7 +49,7 @@ namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSevenTwoZero //Some very old schemas don't have an index on the cmsContentType.nodeId column, I'm not actually sure when it was added but // it is absolutely required to exist in order to add other foreign keys and much better for perf, so we'll need to check it's existence // this came to light from this issue: http://issues.umbraco.org/issue/U4-4133 - var dbIndexes = SqlSyntaxContext.SqlSyntaxProvider.GetDefinedIndexes(Context.Database) + var dbIndexes = SqlSyntax.GetDefinedIndexes(Context.Database) .Select(x => new DbIndexDefinition() { TableName = x.Item1, @@ -69,7 +75,7 @@ namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSevenTwoZero .OnUpdate(Rule.None); } - + } public override void Down() diff --git a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSevenTwoZero/AlterDataTypePreValueTable.cs b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSevenTwoZero/AlterDataTypePreValueTable.cs index 47a1189b3a..ac9c42e964 100644 --- a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSevenTwoZero/AlterDataTypePreValueTable.cs +++ b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSevenTwoZero/AlterDataTypePreValueTable.cs @@ -1,32 +1,38 @@ using System.Linq; using AutoMapper; using Umbraco.Core.Configuration; +using Umbraco.Core.Logging; using Umbraco.Core.Persistence.DatabaseAnnotations; using Umbraco.Core.Persistence.SqlSyntax; namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSevenTwoZero { - + [Migration("7.2.0", 0, GlobalSettings.UmbracoMigrationName)] public class AlterDataTypePreValueTable : MigrationBase { + public AlterDataTypePreValueTable(ISqlSyntaxProvider sqlSyntax, ILogger logger) + : base(sqlSyntax, logger) + { + } + public override void Up() { var columns = SqlSyntax.GetColumnsInSchema(Context.Database).Distinct().ToArray(); //Check if it's already text - if (columns.Any(x => x.ColumnName.InvariantEquals("value") && x.TableName.InvariantEquals("cmsDataTypePreValues") + if (columns.Any(x => x.ColumnName.InvariantEquals("value") && x.TableName.InvariantEquals("cmsDataTypePreValues") //mysql check - && (x.DataType.InvariantEquals("longtext") == false - //sql server check + && (x.DataType.InvariantEquals("longtext") == false + //sql server check && x.DataType.InvariantEquals("ntext") == false))) { //To text var textType = SqlSyntax.GetSpecialDbType(SpecialDbTypes.NTEXT); Alter.Table("cmsDataTypePreValues").AlterColumn("value").AsCustom(textType).Nullable(); } - + } public override void Down() diff --git a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSevenTwoZero/RemoveCmsDocumentAliasColumn.cs b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSevenTwoZero/RemoveCmsDocumentAliasColumn.cs index a6a41387fc..acd923d8a0 100644 --- a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSevenTwoZero/RemoveCmsDocumentAliasColumn.cs +++ b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSevenTwoZero/RemoveCmsDocumentAliasColumn.cs @@ -1,5 +1,6 @@ using System.Linq; using Umbraco.Core.Configuration; +using Umbraco.Core.Logging; using Umbraco.Core.Persistence.SqlSyntax; namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSevenTwoZero @@ -7,13 +8,18 @@ namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSevenTwoZero [Migration("7.2.0", 2, GlobalSettings.UmbracoMigrationName)] public class RemoveCmsDocumentAliasColumn : MigrationBase { + public RemoveCmsDocumentAliasColumn(ISqlSyntaxProvider sqlSyntax, ILogger logger) + : base(sqlSyntax, logger) + { + } + public override void Up() { var columns = SqlSyntax.GetColumnsInSchema(Context.Database).Distinct().ToArray(); if (columns.Any(x => x.ColumnName.InvariantEquals("alias") && x.TableName.InvariantEquals("cmsDocument"))) { - Delete.Column("alias").FromTable("cmsDocument"); + Delete.Column("alias").FromTable("cmsDocument"); } } diff --git a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSix/DeleteAppTables.cs b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSix/DeleteAppTables.cs index 52fdf0281d..9da4c8ee14 100644 --- a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSix/DeleteAppTables.cs +++ b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSix/DeleteAppTables.cs @@ -1,13 +1,19 @@ using System.Linq; using Umbraco.Core.Configuration; +using Umbraco.Core.Logging; using Umbraco.Core.Persistence.SqlSyntax; namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSix { - + [Migration("6.0.0", 10, GlobalSettings.UmbracoMigrationName)] public class DeleteAppTables : MigrationBase { + public DeleteAppTables(ISqlSyntaxProvider sqlSyntax, ILogger logger) + : base(sqlSyntax, logger) + { + } + public override void Up() { Delete.Table("umbracoAppTree"); @@ -34,7 +40,7 @@ namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSix if (constraints.Any(x => x.Item1.InvariantEquals("umbracoUser2app") && x.Item3.InvariantEquals("FK_umbracoUser2app_umbracoUser"))) { Delete.ForeignKey("FK_umbracoUser2app_umbracoUser").OnTable("umbracoUser2app"); - } + } } Delete.Table("umbracoApp"); diff --git a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSix/EnsureAppsTreesUpdated.cs b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSix/EnsureAppsTreesUpdated.cs index 2da4abf34e..7bcfa83461 100644 --- a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSix/EnsureAppsTreesUpdated.cs +++ b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSix/EnsureAppsTreesUpdated.cs @@ -1,11 +1,18 @@ using System; using Umbraco.Core.Configuration; +using Umbraco.Core.Logging; +using Umbraco.Core.Persistence.SqlSyntax; namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSix { [Migration("6.0.0", 9, GlobalSettings.UmbracoMigrationName)] public class EnsureAppsTreesUpdated : MigrationBase { + public EnsureAppsTreesUpdated(ISqlSyntaxProvider sqlSyntax, ILogger logger) + : base(sqlSyntax, logger) + { + } + public override void Up() { var e = new UpgradingEventArgs(); @@ -20,6 +27,6 @@ namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSix public static event EventHandler Upgrading; - public class UpgradingEventArgs : EventArgs{} + public class UpgradingEventArgs : EventArgs { } } } \ No newline at end of file diff --git a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSix/MoveMasterContentTypeData.cs b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSix/MoveMasterContentTypeData.cs index 482c02381f..ed1c0066ec 100644 --- a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSix/MoveMasterContentTypeData.cs +++ b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSix/MoveMasterContentTypeData.cs @@ -1,10 +1,17 @@ using Umbraco.Core.Configuration; +using Umbraco.Core.Logging; +using Umbraco.Core.Persistence.SqlSyntax; namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSix { [Migration("6.0.0", 5, GlobalSettings.UmbracoMigrationName)] public class MoveMasterContentTypeData : MigrationBase { + public MoveMasterContentTypeData(ISqlSyntaxProvider sqlSyntax, ILogger logger) + : base(sqlSyntax, logger) + { + } + public override void Up() { //Reading entries from the cmsContentType table in order to update the parentID on the umbracoNode table. diff --git a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSix/NewCmsContentType2ContentTypeTable.cs b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSix/NewCmsContentType2ContentTypeTable.cs index 7ff03087c4..edde4bada3 100644 --- a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSix/NewCmsContentType2ContentTypeTable.cs +++ b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSix/NewCmsContentType2ContentTypeTable.cs @@ -1,10 +1,17 @@ using Umbraco.Core.Configuration; +using Umbraco.Core.Logging; +using Umbraco.Core.Persistence.SqlSyntax; namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSix { [Migration("6.0.0", 4, GlobalSettings.UmbracoMigrationName)] public class NewCmsContentType2ContentTypeTable : MigrationBase { + public NewCmsContentType2ContentTypeTable(ISqlSyntaxProvider sqlSyntax, ILogger logger) + : base(sqlSyntax, logger) + { + } + public override void Up() { Create.Table("cmsContentType2ContentType") @@ -13,7 +20,7 @@ namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSix Create.PrimaryKey("PK_cmsContentType2ContentType") .OnTable("cmsContentType2ContentType") - .Columns(new[] {"parentContentTypeId", "childContentTypeId"}); + .Columns(new[] { "parentContentTypeId", "childContentTypeId" }); } public override void Down() diff --git a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSix/RemoveMasterContentTypeColumn.cs b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSix/RemoveMasterContentTypeColumn.cs index 680b2001a0..af1cf97087 100644 --- a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSix/RemoveMasterContentTypeColumn.cs +++ b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSix/RemoveMasterContentTypeColumn.cs @@ -1,10 +1,17 @@ using Umbraco.Core.Configuration; +using Umbraco.Core.Logging; +using Umbraco.Core.Persistence.SqlSyntax; namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSix { [Migration("6.0.0", 6, GlobalSettings.UmbracoMigrationName)] public class RemoveMasterContentTypeColumn : MigrationBase { + public RemoveMasterContentTypeColumn(ISqlSyntaxProvider sqlSyntax, ILogger logger) + : base(sqlSyntax, logger) + { + } + public override void Up() { //NOTE Don't think we can remove this column yet as it seems to be used by some starterkits diff --git a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSix/RenameCmsTabTable.cs b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSix/RenameCmsTabTable.cs index 0f8635af09..cc223bb8e9 100644 --- a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSix/RenameCmsTabTable.cs +++ b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSix/RenameCmsTabTable.cs @@ -1,10 +1,17 @@ using Umbraco.Core.Configuration; +using Umbraco.Core.Logging; +using Umbraco.Core.Persistence.SqlSyntax; namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSix { [Migration("6.0.0", 0, GlobalSettings.UmbracoMigrationName)] public class RenameCmsTabTable : MigrationBase { + public RenameCmsTabTable(ISqlSyntaxProvider sqlSyntax, ILogger logger) + : base(sqlSyntax, logger) + { + } + public override void Up() { Rename.Table("cmsTab").To("cmsPropertyTypeGroup"); diff --git a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSix/RenameTabIdColumn.cs b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSix/RenameTabIdColumn.cs index 6f3f7edc80..b6aa0a47ab 100644 --- a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSix/RenameTabIdColumn.cs +++ b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSix/RenameTabIdColumn.cs @@ -1,11 +1,18 @@ using System.Data; using Umbraco.Core.Configuration; +using Umbraco.Core.Logging; +using Umbraco.Core.Persistence.SqlSyntax; namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSix { [Migration("6.0.0", 7, GlobalSettings.UmbracoMigrationName)] public class RenameTabIdColumn : MigrationBase { + public RenameTabIdColumn(ISqlSyntaxProvider sqlSyntax, ILogger logger) + : base(sqlSyntax, logger) + { + } + public override void Up() { //Conditional Create-column for Sql Ce databases diff --git a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSix/UpdateCmsContentTypeAllowedContentTypeTable.cs b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSix/UpdateCmsContentTypeAllowedContentTypeTable.cs index be704466a8..796a89e88f 100644 --- a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSix/UpdateCmsContentTypeAllowedContentTypeTable.cs +++ b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSix/UpdateCmsContentTypeAllowedContentTypeTable.cs @@ -1,10 +1,17 @@ using Umbraco.Core.Configuration; +using Umbraco.Core.Logging; +using Umbraco.Core.Persistence.SqlSyntax; namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSix { [Migration("6.0.0", 3, GlobalSettings.UmbracoMigrationName)] public class UpdateCmsContentTypeAllowedContentTypeTable : MigrationBase { + public UpdateCmsContentTypeAllowedContentTypeTable(ISqlSyntaxProvider sqlSyntax, ILogger logger) + : base(sqlSyntax, logger) + { + } + public override void Up() { Alter.Table("cmsContentTypeAllowedContentType").AddColumn("sortOrder").AsInt16().NotNullable().WithDefaultValue(1); diff --git a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSix/UpdateCmsContentTypeTable.cs b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSix/UpdateCmsContentTypeTable.cs index 55362c3da0..d742f069af 100644 --- a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSix/UpdateCmsContentTypeTable.cs +++ b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSix/UpdateCmsContentTypeTable.cs @@ -1,5 +1,6 @@ using System.Linq; using Umbraco.Core.Configuration; +using Umbraco.Core.Logging; using Umbraco.Core.Persistence.DatabaseModelDefinitions; using Umbraco.Core.Persistence.SqlSyntax; @@ -8,11 +9,16 @@ namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSix [Migration("6.0.0", 2, GlobalSettings.UmbracoMigrationName)] public class UpdateCmsContentTypeTable : MigrationBase { + public UpdateCmsContentTypeTable(ISqlSyntaxProvider sqlSyntax, ILogger logger) + : base(sqlSyntax, logger) + { + } + public override void Up() { Alter.Table("cmsContentType").AddColumn("isContainer").AsBoolean().NotNullable().WithDefaultValue(0); - Alter.Table("cmsContentType").AddColumn("allowAtRoot").AsBoolean().NotNullable().WithDefaultValue(0); + Alter.Table("cmsContentType").AddColumn("allowAtRoot").AsBoolean().NotNullable().WithDefaultValue(0); } public override void Down() diff --git a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSix/UpdateCmsContentVersionTable.cs b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSix/UpdateCmsContentVersionTable.cs index 1dc8998e68..772821b065 100644 --- a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSix/UpdateCmsContentVersionTable.cs +++ b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSix/UpdateCmsContentVersionTable.cs @@ -1,10 +1,17 @@ using Umbraco.Core.Configuration; +using Umbraco.Core.Logging; +using Umbraco.Core.Persistence.SqlSyntax; namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSix { [Migration("6.0.0", 8, GlobalSettings.UmbracoMigrationName)] public class UpdateCmsContentVersionTable : MigrationBase { + public UpdateCmsContentVersionTable(ISqlSyntaxProvider sqlSyntax, ILogger logger) + : base(sqlSyntax, logger) + { + } + public override void Up() { Alter.Table("cmsContentVersion").AddColumn("LanguageLocale").AsString(10).Nullable(); diff --git a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSix/UpdateCmsPropertyTypeGroupTable.cs b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSix/UpdateCmsPropertyTypeGroupTable.cs index 25efd73082..cc9b3c9a4c 100644 --- a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSix/UpdateCmsPropertyTypeGroupTable.cs +++ b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSix/UpdateCmsPropertyTypeGroupTable.cs @@ -1,11 +1,18 @@ using System.Data; using Umbraco.Core.Configuration; +using Umbraco.Core.Logging; +using Umbraco.Core.Persistence.SqlSyntax; namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSix { [Migration("6.0.0", 1, GlobalSettings.UmbracoMigrationName)] public class UpdateCmsPropertyTypeGroupTable : MigrationBase { + public UpdateCmsPropertyTypeGroupTable(ISqlSyntaxProvider sqlSyntax, ILogger logger) + : base(sqlSyntax, logger) + { + } + public override void Up() { Alter.Table("cmsPropertyTypeGroup").AddColumn("parentGroupId").AsInt16().Nullable(); @@ -18,7 +25,7 @@ namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSix public override void Down() { Delete.ForeignKey().FromTable("cmsPropertyTypeGroup").ForeignColumn("parentGroupId").ToTable("cmsPropertyTypeGroup").PrimaryColumn("id"); - + Delete.Column("parentGroupId").FromTable("cmsPropertyTypeGroup"); } } diff --git a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSixOneZero/CreateServerRegistryTable.cs b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSixOneZero/CreateServerRegistryTable.cs index b9ab37e4b7..872067aa1f 100644 --- a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSixOneZero/CreateServerRegistryTable.cs +++ b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSixOneZero/CreateServerRegistryTable.cs @@ -3,21 +3,27 @@ using System.Collections.Generic; using System.Linq; using System.Text; using Umbraco.Core.Configuration; +using Umbraco.Core.Logging; using Umbraco.Core.Models.Rdbms; using Umbraco.Core.Persistence.SqlSyntax; namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSixOneZero { - + [Migration("6.1.0", 0, GlobalSettings.UmbracoMigrationName)] public class CreateServerRegistryTable : MigrationBase { + public CreateServerRegistryTable(ISqlSyntaxProvider sqlSyntax, ILogger logger) + : base(sqlSyntax, logger) + { + } + public override void Up() { var schemaHelper = new DatabaseSchemaHelper(Context.Database, Logger, SqlSyntax); //NOTE: This isn't the correct way to do this but to manually create this table with the Create syntax is a pain in the arse - schemaHelper.CreateTable(); + schemaHelper.CreateTable(); } public override void Down() diff --git a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSixTwoZero/AddChangeDocumentTypePermission.cs b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSixTwoZero/AddChangeDocumentTypePermission.cs index 5c36826d02..be62f33d1c 100644 --- a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSixTwoZero/AddChangeDocumentTypePermission.cs +++ b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSixTwoZero/AddChangeDocumentTypePermission.cs @@ -1,6 +1,8 @@ using System.Linq; using Umbraco.Core.Configuration; +using Umbraco.Core.Logging; using Umbraco.Core.Models.Rdbms; +using Umbraco.Core.Persistence.SqlSyntax; namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSixTwoZero { @@ -8,6 +10,11 @@ namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSixTwoZero [Migration("6.2.0", 3, GlobalSettings.UmbracoMigrationName)] public class AddChangeDocumentTypePermission : MigrationBase { + public AddChangeDocumentTypePermission(ISqlSyntaxProvider sqlSyntax, ILogger logger) + : base(sqlSyntax, logger) + { + } + public override void Up() { Execute.Code(AddChangeDocumentTypePermissionDo); @@ -21,7 +28,7 @@ namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSixTwoZero private static string AddChangeDocumentTypePermissionDo(Database database) { var adminUserType = database.Fetch("WHERE Id = 1").FirstOrDefault(); - + if (adminUserType != null) { if (adminUserType.DefaultPermissions.Contains("7") == false) @@ -37,7 +44,7 @@ namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSixTwoZero private static string UndoChangeDocumentTypePermissionDo(Database database) { var adminUserType = database.Fetch("WHERE Id = 1").FirstOrDefault(); - + if (adminUserType != null) { if (adminUserType.DefaultPermissions.Contains("7")) diff --git a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSixTwoZero/AdditionalIndexesAndKeys.cs b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSixTwoZero/AdditionalIndexesAndKeys.cs index 561cd04a53..c36a3b03a8 100644 --- a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSixTwoZero/AdditionalIndexesAndKeys.cs +++ b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSixTwoZero/AdditionalIndexesAndKeys.cs @@ -1,6 +1,7 @@ using System; using System.Linq; using Umbraco.Core.Configuration; +using Umbraco.Core.Logging; using Umbraco.Core.Persistence.DatabaseModelDefinitions; using Umbraco.Core.Persistence.Migrations.Initial; using Umbraco.Core.Persistence.SqlSyntax; @@ -11,6 +12,11 @@ namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSixTwoZero [Migration("6.2.0", 1, GlobalSettings.UmbracoMigrationName)] public class AdditionalIndexesAndKeys : MigrationBase { + public AdditionalIndexesAndKeys(ISqlSyntaxProvider sqlSyntax, ILogger logger) + : base(sqlSyntax, logger) + { + } + public override void Up() { @@ -27,7 +33,7 @@ namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSixTwoZero if (dbIndexes.Any(x => x.IndexName.InvariantEquals("IX_umbracoNodeTrashed")) == false) { - Create.Index("IX_umbracoNodeTrashed").OnTable("umbracoNode").OnColumn("trashed").Ascending().WithOptions().NonClustered(); + Create.Index("IX_umbracoNodeTrashed").OnTable("umbracoNode").OnColumn("trashed").Ascending().WithOptions().NonClustered(); } if (dbIndexes.Any(x => x.IndexName.InvariantEquals("IX_cmsContentVersion_ContentId")) == false) { @@ -52,7 +58,7 @@ namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSixTwoZero // it follows the standard naming convention if (dbIndexes.Any(x => x.IndexName.InvariantEquals("umbracoUserLogins_Index"))) { - Delete.Index("umbracoUserLogins_Index").OnTable("umbracoUserLogins"); + Delete.Index("umbracoUserLogins_Index").OnTable("umbracoUserLogins"); } if (dbIndexes.Any(x => x.IndexName.InvariantEquals("IX_umbracoUserLogins_Index")) == false) { diff --git a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSixTwoZero/AssignMissingPrimaryForMySqlKeys.cs b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSixTwoZero/AssignMissingPrimaryForMySqlKeys.cs index b7aa05c366..5302539d4d 100644 --- a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSixTwoZero/AssignMissingPrimaryForMySqlKeys.cs +++ b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSixTwoZero/AssignMissingPrimaryForMySqlKeys.cs @@ -1,22 +1,28 @@ using System.Linq; using System.Web.UI; using Umbraco.Core.Configuration; +using Umbraco.Core.Logging; using Umbraco.Core.Persistence.SqlSyntax; namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSixTwoZero { - + //see: http://issues.umbraco.org/issue/U4-4430 [Migration("7.1.0", 0, GlobalSettings.UmbracoMigrationName)] [Migration("6.2.0", 0, GlobalSettings.UmbracoMigrationName)] public class AssignMissingPrimaryForMySqlKeys : MigrationBase { + public AssignMissingPrimaryForMySqlKeys(ISqlSyntaxProvider sqlSyntax, ILogger logger) + : base(sqlSyntax, logger) + { + } + public override void Up() { if (Context.CurrentDatabaseProvider == DatabaseProviders.MySql) { var constraints = SqlSyntax.GetConstraintsPerColumn(Context.Database).Distinct().ToArray(); - + //This should be 2 because this table has 2 keys if (constraints.Count(x => x.Item1.InvariantEquals("cmsContentTypeAllowedContentType") && x.Item3.InvariantEquals("PRIMARY")) == 0) { diff --git a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSixTwoZero/AssignMissingPrimaryForMySqlKeys2.cs b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSixTwoZero/AssignMissingPrimaryForMySqlKeys2.cs index bbb51ea73f..633091f2fa 100644 --- a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSixTwoZero/AssignMissingPrimaryForMySqlKeys2.cs +++ b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSixTwoZero/AssignMissingPrimaryForMySqlKeys2.cs @@ -1,15 +1,21 @@ using System.Linq; using Umbraco.Core.Configuration; +using Umbraco.Core.Logging; using Umbraco.Core.Persistence.SqlSyntax; namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSixTwoZero -{ +{ //We have to target this specifically to ensure this DOES NOT execute if upgrading from a version previous to 6.0, // this is because when the 6.0.0 migrations are executed, this primary key get's created so if this migration is also executed // we will get exceptions because it is trying to create the PK two times. [Migration("6.0.0", "6.2.0", 0, GlobalSettings.UmbracoMigrationName)] public class AssignMissingPrimaryForMySqlKeys2 : MigrationBase { + public AssignMissingPrimaryForMySqlKeys2(ISqlSyntaxProvider sqlSyntax, ILogger logger) + : base(sqlSyntax, logger) + { + } + public override void Up() { if (Context.CurrentDatabaseProvider == DatabaseProviders.MySql) @@ -21,7 +27,7 @@ namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSixTwoZero { Create.PrimaryKey("PK_cmsContentType2ContentType") .OnTable("cmsContentType2ContentType") - .Columns(new[] {"parentContentTypeId", "childContentTypeId"}); + .Columns(new[] { "parentContentTypeId", "childContentTypeId" }); } } } diff --git a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSixTwoZero/ChangePasswordColumn.cs b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSixTwoZero/ChangePasswordColumn.cs index 437a188013..e7dead2e42 100644 --- a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSixTwoZero/ChangePasswordColumn.cs +++ b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSixTwoZero/ChangePasswordColumn.cs @@ -1,5 +1,7 @@ using System; using Umbraco.Core.Configuration; +using Umbraco.Core.Logging; +using Umbraco.Core.Persistence.SqlSyntax; namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSixTwoZero { @@ -7,6 +9,11 @@ namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSixTwoZero [Migration("6.2.0", 2, GlobalSettings.UmbracoMigrationName)] public class ChangePasswordColumn : MigrationBase { + public ChangePasswordColumn(ISqlSyntaxProvider sqlSyntax, ILogger logger) + : base(sqlSyntax, logger) + { + } + public override void Up() { //up to 500 chars diff --git a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSixTwoZero/UpdateToNewMemberPropertyAliases.cs b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSixTwoZero/UpdateToNewMemberPropertyAliases.cs index 127aa92d22..22d3e24274 100644 --- a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSixTwoZero/UpdateToNewMemberPropertyAliases.cs +++ b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSixTwoZero/UpdateToNewMemberPropertyAliases.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using Umbraco.Core.Configuration; using Umbraco.Core.Logging; using Umbraco.Core.Models.Rdbms; +using Umbraco.Core.Persistence.SqlSyntax; namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSixTwoZero { @@ -10,6 +11,11 @@ namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSixTwoZero [Migration("6.2.0", 4, GlobalSettings.UmbracoMigrationName)] public class UpdateToNewMemberPropertyAliases : MigrationBase { + public UpdateToNewMemberPropertyAliases(ISqlSyntaxProvider sqlSyntax, ILogger logger) + : base(sqlSyntax, logger) + { + } + public override void Up() { Execute.Code(Update); diff --git a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSixZeroOne/UpdatePropertyTypesAndGroups.cs b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSixZeroOne/UpdatePropertyTypesAndGroups.cs index 9984776cb3..e999f5a963 100644 --- a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSixZeroOne/UpdatePropertyTypesAndGroups.cs +++ b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSixZeroOne/UpdatePropertyTypesAndGroups.cs @@ -1,13 +1,20 @@ using System; using System.Linq; using Umbraco.Core.Configuration; +using Umbraco.Core.Logging; using Umbraco.Core.Models.Rdbms; +using Umbraco.Core.Persistence.SqlSyntax; namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSixZeroOne { [Migration("6.0.2", 0, GlobalSettings.UmbracoMigrationName)] public class UpdatePropertyTypesAndGroups : MigrationBase { + public UpdatePropertyTypesAndGroups(ISqlSyntaxProvider sqlSyntax, ILogger logger) + : base(sqlSyntax, logger) + { + } + public override void Up() { Execute.Code(UpdatePropertyTypesAndGroupsDo); @@ -15,7 +22,7 @@ namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSixZeroOne public override void Down() { - + } public static string UpdatePropertyTypesAndGroupsDo(Database database) diff --git a/src/Umbraco.Core/Persistence/PetaPoco.cs b/src/Umbraco.Core/Persistence/PetaPoco.cs index 2d57f99285..f3293dc555 100644 --- a/src/Umbraco.Core/Persistence/PetaPoco.cs +++ b/src/Umbraco.Core/Persistence/PetaPoco.cs @@ -2295,11 +2295,6 @@ namespace Umbraco.Core.Persistence _args = args; } - public static Sql Builder - { - get { return new Sql(); } - } - string _sql; object[] _args; Sql _rhs; diff --git a/src/Umbraco.Core/Persistence/PetaPocoExtensions.cs b/src/Umbraco.Core/Persistence/PetaPocoExtensions.cs index 3af35db44c..9789f45ad4 100644 --- a/src/Umbraco.Core/Persistence/PetaPocoExtensions.cs +++ b/src/Umbraco.Core/Persistence/PetaPocoExtensions.cs @@ -121,23 +121,8 @@ namespace Umbraco.Core.Persistence } - [Obsolete("Use the DatabaseSchemaHelper instead")] - public static void CreateTable(this Database db) - where T : new() - { - var creator = new DatabaseSchemaHelper(db, LoggerResolver.Current.Logger, SqlSyntaxContext.SqlSyntaxProvider); - creator.CreateTable(); - } - [Obsolete("Use the DatabaseSchemaHelper instead")] - public static void CreateTable(this Database db, bool overwrite) - where T : new() - { - var creator = new DatabaseSchemaHelper(db, LoggerResolver.Current.Logger, SqlSyntaxContext.SqlSyntaxProvider); - creator.CreateTable(overwrite); - } - - public static void BulkInsertRecords(this Database db, IEnumerable collection) + public static void BulkInsertRecords(this Database db, ISqlSyntaxProvider sqlSyntax, IEnumerable collection) { //don't do anything if there are no records. if (collection.Any() == false) @@ -145,7 +130,7 @@ namespace Umbraco.Core.Persistence using (var tr = db.GetTransaction()) { - db.BulkInsertRecords(collection, tr, true); + db.BulkInsertRecords(sqlSyntax, collection, tr, true); } } @@ -155,10 +140,11 @@ namespace Umbraco.Core.Persistence /// /// /// + /// /// /// /// - public static void BulkInsertRecords(this Database db, IEnumerable collection, Transaction tr, bool commitTrans = false) + public static void BulkInsertRecords(this Database db, ISqlSyntaxProvider sqlSyntax, IEnumerable collection, Transaction tr, bool commitTrans = false) { //don't do anything if there are no records. if (collection.Any() == false) @@ -167,9 +153,9 @@ namespace Umbraco.Core.Persistence try { //if it is sql ce or it is a sql server version less than 2008, we need to do individual inserts. - var sqlServerSyntax = SqlSyntaxContext.SqlSyntaxProvider as SqlServerSyntaxProvider; - if ((sqlServerSyntax != null && (int)sqlServerSyntax.VersionName.Value < (int)SqlServerVersionName.V2008) - || SqlSyntaxContext.SqlSyntaxProvider is SqlCeSyntaxProvider) + var sqlServerSyntax = sqlSyntax as SqlServerSyntaxProvider; + if ((sqlServerSyntax != null && (int)sqlServerSyntax.VersionName.Value < (int)SqlServerVersionName.V2008) + || sqlSyntax is SqlCeSyntaxProvider) { //SqlCe doesn't support bulk insert statements! @@ -295,80 +281,14 @@ namespace Umbraco.Core.Persistence return commands.ToArray(); } - [Obsolete("Use the DatabaseSchemaHelper instead")] - public static void CreateTable(this Database db, bool overwrite, Type modelType) - { - var creator = new DatabaseSchemaHelper(db, LoggerResolver.Current.Logger, SqlSyntaxContext.SqlSyntaxProvider); - creator.CreateTable(overwrite, modelType); - } - - [Obsolete("Use the DatabaseSchemaHelper instead")] - public static void DropTable(this Database db) - where T : new() - { - var helper = new DatabaseSchemaHelper(db, LoggerResolver.Current.Logger, SqlSyntaxContext.SqlSyntaxProvider); - helper.DropTable(); - } - - [Obsolete("Use the DatabaseSchemaHelper instead")] - public static void DropTable(this Database db, string tableName) - { - var helper = new DatabaseSchemaHelper(db, LoggerResolver.Current.Logger, SqlSyntaxContext.SqlSyntaxProvider); - helper.DropTable(tableName); - } - - public static void TruncateTable(this Database db, string tableName) + public static void TruncateTable(this Database db, ISqlSyntaxProvider sqlSyntax, string tableName) { var sql = new Sql(string.Format( - SqlSyntaxContext.SqlSyntaxProvider.TruncateTable, - SqlSyntaxContext.SqlSyntaxProvider.GetQuotedTableName(tableName))); + sqlSyntax.TruncateTable, + sqlSyntax.GetQuotedTableName(tableName))); db.Execute(sql); } - [Obsolete("Use the DatabaseSchemaHelper instead")] - public static bool TableExist(this Database db, string tableName) - { - return SqlSyntaxContext.SqlSyntaxProvider.DoesTableExist(db, tableName); - } - - [Obsolete("Use the DatabaseSchemaHelper instead")] - public static bool TableExist(this UmbracoDatabase db, string tableName) - { - return SqlSyntaxContext.SqlSyntaxProvider.DoesTableExist(db, tableName); - } - - /// - /// Creates the Umbraco db schema in the Database of the current Database. - /// Safe method that is only able to create the schema in non-configured - /// umbraco instances. - /// - /// Current PetaPoco object - [Obsolete("Use the DatabaseSchemaHelper instead")] - public static void CreateDatabaseSchema(this Database db) - { - CreateDatabaseSchema(db, true); - } - - /// - /// Creates the Umbraco db schema in the Database of the current Database - /// with the option to guard the db from having the schema created - /// multiple times. - /// - /// - /// - [Obsolete("Use the DatabaseSchemaHelper instead")] - public static void CreateDatabaseSchema(this Database db, bool guardConfiguration) - { - var helper = new DatabaseSchemaHelper(db, LoggerResolver.Current.Logger, SqlSyntaxContext.SqlSyntaxProvider); - helper.CreateDatabaseSchema(guardConfiguration, ApplicationContext.Current); - } - - //TODO: What the heck? This makes no sense at all - public static DatabaseProviders GetDatabaseProvider(this Database db) - { - return ApplicationContext.Current.DatabaseContext.DatabaseProvider; - } - } diff --git a/src/Umbraco.Core/Persistence/PetaPocoSqlExtensions.cs b/src/Umbraco.Core/Persistence/PetaPocoSqlExtensions.cs index 3cbd70803d..8603481376 100644 --- a/src/Umbraco.Core/Persistence/PetaPocoSqlExtensions.cs +++ b/src/Umbraco.Core/Persistence/PetaPocoSqlExtensions.cs @@ -13,11 +13,6 @@ namespace Umbraco.Core.Persistence /// public static class PetaPocoSqlExtensions { - [Obsolete("Use the overload specifying ISqlSyntaxProvider instead")] - public static Sql From(this Sql sql) - { - return From(sql, SqlSyntaxContext.SqlSyntaxProvider); - } public static Sql From(this Sql sql, ISqlSyntaxProvider sqlSyntax) { @@ -28,27 +23,21 @@ namespace Umbraco.Core.Persistence return sql.From(sqlSyntax.GetQuotedTableName(tableName)); } - public static Sql Where(this Sql sql, Expression> predicate) + public static Sql Where(this Sql sql, ISqlSyntaxProvider sqlSyntax, Expression> predicate) { - var expresionist = new PocoToSqlExpressionHelper(); + var expresionist = new PocoToSqlExpressionHelper(sqlSyntax); var whereExpression = expresionist.Visit(predicate); return sql.Where(whereExpression, expresionist.GetSqlParameters()); } - public static Sql WhereIn(this Sql sql, Expression> fieldSelector, IEnumerable values) + public static Sql WhereIn(this Sql sql, ISqlSyntaxProvider sqlSyntax, Expression> fieldSelector, IEnumerable values) { - var expresionist = new PocoToSqlExpressionHelper(); + var expresionist = new PocoToSqlExpressionHelper(sqlSyntax); var fieldExpression = expresionist.Visit(fieldSelector); return sql.Where(fieldExpression + " IN (@values)", new {@values = values}); } - [Obsolete("Use the overload specifying ISqlSyntaxProvider instead")] - public static Sql OrderBy(this Sql sql, Expression> columnMember) - { - return OrderBy(sql, columnMember, SqlSyntaxContext.SqlSyntaxProvider); - } - - public static Sql OrderBy(this Sql sql, Expression> columnMember, ISqlSyntaxProvider sqlSyntax) + public static Sql OrderBy(this Sql sql, ISqlSyntaxProvider sqlSyntax, Expression> columnMember) { var column = ExpressionHelper.FindProperty(columnMember) as PropertyInfo; var columnName = column.FirstAttribute().Name; @@ -65,13 +54,7 @@ namespace Umbraco.Core.Persistence return sql.OrderBy(syntax); } - [Obsolete("Use the overload specifying ISqlSyntaxProvider instead")] - public static Sql OrderByDescending(this Sql sql, Expression> columnMember) - { - return OrderByDescending(sql, columnMember, SqlSyntaxContext.SqlSyntaxProvider); - } - - public static Sql OrderByDescending(this Sql sql, Expression> columnMember, ISqlSyntaxProvider sqlSyntax) + public static Sql OrderByDescending(this Sql sql, ISqlSyntaxProvider sqlSyntax, Expression> columnMember) { var column = ExpressionHelper.FindProperty(columnMember) as PropertyInfo; var columnName = column.FirstAttribute().Name; @@ -87,13 +70,7 @@ namespace Umbraco.Core.Persistence return sql.OrderBy(syntax); } - [Obsolete("Use the overload specifying ISqlSyntaxProvider instead")] - public static Sql GroupBy(this Sql sql, Expression> columnMember) - { - return GroupBy(sql, columnMember, SqlSyntaxContext.SqlSyntaxProvider); - } - - public static Sql GroupBy(this Sql sql, Expression> columnMember, ISqlSyntaxProvider sqlProvider) + public static Sql GroupBy(this Sql sql, ISqlSyntaxProvider sqlProvider, Expression> columnMember) { var column = ExpressionHelper.FindProperty(columnMember) as PropertyInfo; var columnName = column.FirstAttribute().Name; @@ -101,12 +78,6 @@ namespace Umbraco.Core.Persistence return sql.GroupBy(sqlProvider.GetQuotedColumnName(columnName)); } - [Obsolete("Use the overload specifying ISqlSyntaxProvider instead")] - public static Sql.SqlJoinClause InnerJoin(this Sql sql) - { - return InnerJoin(sql, SqlSyntaxContext.SqlSyntaxProvider); - } - public static Sql.SqlJoinClause InnerJoin(this Sql sql, ISqlSyntaxProvider sqlSyntax) { var type = typeof(T); @@ -116,12 +87,6 @@ namespace Umbraco.Core.Persistence return sql.InnerJoin(sqlSyntax.GetQuotedTableName(tableName)); } - [Obsolete("Use the overload specifying ISqlSyntaxProvider instead")] - public static Sql.SqlJoinClause LeftJoin(this Sql sql) - { - return LeftJoin(sql, SqlSyntaxContext.SqlSyntaxProvider); - } - public static Sql.SqlJoinClause LeftJoin(this Sql sql, ISqlSyntaxProvider sqlSyntax) { var type = typeof(T); @@ -131,12 +96,6 @@ namespace Umbraco.Core.Persistence return sql.LeftJoin(sqlSyntax.GetQuotedTableName(tableName)); } - [Obsolete("Use the overload specifying ISqlSyntaxProvider instead")] - public static Sql.SqlJoinClause LeftOuterJoin(this Sql sql) - { - return LeftOuterJoin(sql, SqlSyntaxContext.SqlSyntaxProvider); - } - public static Sql.SqlJoinClause LeftOuterJoin(this Sql sql, ISqlSyntaxProvider sqlSyntax) { var type = typeof(T); @@ -146,12 +105,6 @@ namespace Umbraco.Core.Persistence return sql.LeftOuterJoin(sqlSyntax.GetQuotedTableName(tableName)); } - [Obsolete("Use the overload specifying ISqlSyntaxProvider instead")] - public static Sql.SqlJoinClause RightJoin(this Sql sql) - { - return RightJoin(sql, SqlSyntaxContext.SqlSyntaxProvider); - } - public static Sql.SqlJoinClause RightJoin(this Sql sql, ISqlSyntaxProvider sqlSyntax) { var type = typeof(T); @@ -161,13 +114,6 @@ namespace Umbraco.Core.Persistence return sql.RightJoin(sqlSyntax.GetQuotedTableName(tableName)); } - [Obsolete("Use the overload specifying ISqlSyntaxProvider instead")] - public static Sql On(this Sql.SqlJoinClause sql, Expression> leftMember, - Expression> rightMember, params object[] args) - { - return On(sql, SqlSyntaxContext.SqlSyntaxProvider, leftMember, rightMember, args); - } - public static Sql On(this Sql.SqlJoinClause sql, ISqlSyntaxProvider sqlSyntax, Expression> leftMember, Expression> rightMember, params object[] args) { diff --git a/src/Umbraco.Core/Persistence/Querying/BaseExpressionHelper.cs b/src/Umbraco.Core/Persistence/Querying/BaseExpressionHelper.cs index f3cbe5a583..f9c291c66f 100644 --- a/src/Umbraco.Core/Persistence/Querying/BaseExpressionHelper.cs +++ b/src/Umbraco.Core/Persistence/Querying/BaseExpressionHelper.cs @@ -12,6 +12,11 @@ namespace Umbraco.Core.Persistence.Querying { internal abstract class BaseExpressionHelper : BaseExpressionHelper { + protected BaseExpressionHelper(ISqlSyntaxProvider sqlSyntax) + : base(sqlSyntax) + { + } + protected abstract string VisitMemberAccess(MemberExpression m); protected internal virtual string Visit(Expression exp) @@ -96,7 +101,7 @@ namespace Umbraco.Core.Persistence.Querying protected virtual string VisitBinary(BinaryExpression b) { string left, right; - var operand = BindOperant(b.NodeType); + var operand = BindOperant(b.NodeType); if (operand == "AND" || operand == "OR") { MemberExpression m = b.Left as MemberExpression; @@ -190,7 +195,7 @@ namespace Umbraco.Core.Persistence.Querying //return GetQuotedValue(o, o.GetType()); } catch (InvalidOperationException) - { + { // FieldName ? List exprs = VisitExpressionList(nex.Arguments); var r = new StringBuilder(); @@ -240,10 +245,10 @@ namespace Umbraco.Core.Persistence.Querying case ExpressionType.MemberAccess: //In this case it wil be a false property , i.e. x => !Trashed SqlParameters.Add(true); - return string.Format("NOT ({0} = @0)", o); + return string.Format("NOT ({0} = @0)", o); default: //In this case it could be anything else, such as: x => !x.Path.StartsWith("-20") - return string.Format("NOT ({0})", o); + return string.Format("NOT ({0})", o); } default: return Visit(u.Operand); @@ -325,8 +330,8 @@ namespace Umbraco.Core.Persistence.Querying var objectForMethod = m.Object ?? m.Arguments[0]; var visitedObjectForMethod = Visit(objectForMethod); - var methodArgs = m.Object == null - ? m.Arguments.Skip(1).ToArray() + var methodArgs = m.Object == null + ? m.Arguments.Skip(1).ToArray() : m.Arguments.ToArray(); switch (m.Method.Name) @@ -351,7 +356,7 @@ namespace Umbraco.Core.Persistence.Querying case "InvariantEndsWith": case "InvariantContains": case "InvariantEquals": - + string compareValue; if (methodArgs[0].NodeType != ExpressionType.Constant) @@ -451,7 +456,7 @@ namespace Umbraco.Core.Persistence.Querying //case "As": // return string.Format("{0} As {1}", r, // GetQuotedColumnName(RemoveQuoteFromAlias(RemoveQuote(args[0].ToString())))); - + default: throw new ArgumentOutOfRangeException("No logic supported for " + m.Method.Name); @@ -523,8 +528,15 @@ namespace Umbraco.Core.Persistence.Querying /// /// Logic that is shared with the expression helpers /// - internal class BaseExpressionHelper + internal class BaseExpressionHelper { + public ISqlSyntaxProvider SqlSyntax { get; private set; } + + public BaseExpressionHelper(ISqlSyntaxProvider sqlSyntax) + { + SqlSyntax = sqlSyntax; + } + protected List SqlParameters = new List(); public object[] GetSqlParameters() @@ -538,25 +550,25 @@ namespace Umbraco.Core.Persistence.Querying { case "SqlWildcard": SqlParameters.Add(RemoveQuote(val)); - return SqlSyntaxContext.SqlSyntaxProvider.GetStringColumnWildcardComparison(col, SqlParameters.Count - 1, columnType); + return SqlSyntax.GetStringColumnWildcardComparison(col, SqlParameters.Count - 1, columnType); case "Equals": SqlParameters.Add(RemoveQuote(val)); - return SqlSyntaxContext.SqlSyntaxProvider.GetStringColumnEqualComparison(col, SqlParameters.Count - 1, columnType); + return SqlSyntax.GetStringColumnEqualComparison(col, SqlParameters.Count - 1, columnType); case "StartsWith": SqlParameters.Add(string.Format("{0}{1}", RemoveQuote(val), - SqlSyntaxContext.SqlSyntaxProvider.GetWildcardPlaceholder())); - return SqlSyntaxContext.SqlSyntaxProvider.GetStringColumnWildcardComparison(col, SqlParameters.Count - 1, columnType); + SqlSyntax.GetWildcardPlaceholder())); + return SqlSyntax.GetStringColumnWildcardComparison(col, SqlParameters.Count - 1, columnType); case "EndsWith": SqlParameters.Add(string.Format("{0}{1}", - SqlSyntaxContext.SqlSyntaxProvider.GetWildcardPlaceholder(), + SqlSyntax.GetWildcardPlaceholder(), RemoveQuote(val))); - return SqlSyntaxContext.SqlSyntaxProvider.GetStringColumnWildcardComparison(col, SqlParameters.Count - 1, columnType); + return SqlSyntax.GetStringColumnWildcardComparison(col, SqlParameters.Count - 1, columnType); case "Contains": SqlParameters.Add(string.Format("{0}{1}{0}", - SqlSyntaxContext.SqlSyntaxProvider.GetWildcardPlaceholder(), + SqlSyntax.GetWildcardPlaceholder(), RemoveQuote(val))); - return SqlSyntaxContext.SqlSyntaxProvider.GetStringColumnWildcardComparison(col, SqlParameters.Count - 1, columnType); + return SqlSyntax.GetStringColumnWildcardComparison(col, SqlParameters.Count - 1, columnType); case "InvariantEquals": case "SqlEquals": //recurse @@ -627,13 +639,13 @@ namespace Umbraco.Core.Persistence.Querying // : value.ToString(); //} - public virtual string EscapeParam(object paramValue) + public virtual string EscapeParam(object paramValue, ISqlSyntaxProvider sqlSyntax) { - return paramValue == null - ? string.Empty - : SqlSyntaxContext.SqlSyntaxProvider.EscapeString(paramValue.ToString()); + return paramValue == null + ? string.Empty + : sqlSyntax.EscapeString(paramValue.ToString()); } - + public virtual bool ShouldQuoteValue(Type fieldType) { return true; diff --git a/src/Umbraco.Core/Persistence/Querying/ModelToSqlExpressionHelper.cs b/src/Umbraco.Core/Persistence/Querying/ModelToSqlExpressionHelper.cs index a0ccfaa070..c9f8720674 100644 --- a/src/Umbraco.Core/Persistence/Querying/ModelToSqlExpressionHelper.cs +++ b/src/Umbraco.Core/Persistence/Querying/ModelToSqlExpressionHelper.cs @@ -13,34 +13,34 @@ namespace Umbraco.Core.Persistence.Querying { internal class ModelToSqlExpressionHelper : BaseExpressionHelper { - private readonly BaseMapper _mapper; - public ModelToSqlExpressionHelper() + public ModelToSqlExpressionHelper(ISqlSyntaxProvider sqlSyntax) + : base(sqlSyntax) { _mapper = MappingResolver.Current.ResolveMapperByType(typeof(T)); } - + protected override string VisitMemberAccess(MemberExpression m) { - if (m.Expression != null && - m.Expression.NodeType == ExpressionType.Parameter + if (m.Expression != null && + m.Expression.NodeType == ExpressionType.Parameter && m.Expression.Type == typeof(T)) { var field = _mapper.Map(m.Member.Name, true); - if (field.IsNullOrWhiteSpace()) + if (field.IsNullOrWhiteSpace()) throw new InvalidOperationException("The mapper returned an empty field for the member name: " + m.Member.Name); - return field; + return field; } if (m.Expression != null && m.Expression.NodeType == ExpressionType.Convert) { var field = _mapper.Map(m.Member.Name, true); - if (field.IsNullOrWhiteSpace()) + if (field.IsNullOrWhiteSpace()) throw new InvalidOperationException("The mapper returned an empty field for the member name: " + m.Member.Name); return field; } - + var member = Expression.Convert(m, typeof(object)); var lambda = Expression.Lambda>(member); var getter = lambda.Compile(); @@ -52,7 +52,7 @@ namespace Umbraco.Core.Persistence.Querying //return GetQuotedValue(o, o != null ? o.GetType() : null); } - + //protected bool IsFieldName(string quotedExp) //{ // //Not entirely sure this is reliable, but its better then simply returning true diff --git a/src/Umbraco.Core/Persistence/Querying/PocoToSqlExpressionHelper.cs b/src/Umbraco.Core/Persistence/Querying/PocoToSqlExpressionHelper.cs index bbdb7a5509..32e86f9512 100644 --- a/src/Umbraco.Core/Persistence/Querying/PocoToSqlExpressionHelper.cs +++ b/src/Umbraco.Core/Persistence/Querying/PocoToSqlExpressionHelper.cs @@ -13,11 +13,12 @@ namespace Umbraco.Core.Persistence.Querying { private readonly Database.PocoData _pd; - public PocoToSqlExpressionHelper() + public PocoToSqlExpressionHelper(ISqlSyntaxProvider sqlSyntaxProvider) + : base(sqlSyntaxProvider) { _pd = new Database.PocoData(typeof(T)); } - + protected override string VisitMemberAccess(MemberExpression m) { if (m.Expression != null && @@ -45,15 +46,15 @@ namespace Umbraco.Core.Persistence.Querying //return GetQuotedValue(o, o != null ? o.GetType() : null); } - + protected virtual string GetFieldName(Database.PocoData pocoData, string name) { var column = pocoData.Columns.FirstOrDefault(x => x.Value.PropertyInfo.Name == name); return string.Format("{0}.{1}", - SqlSyntaxContext.SqlSyntaxProvider.GetQuotedTableName(pocoData.TableInfo.TableName), - SqlSyntaxContext.SqlSyntaxProvider.GetQuotedColumnName(column.Value.ColumnName)); + SqlSyntax.GetQuotedTableName(pocoData.TableInfo.TableName), + SqlSyntax.GetQuotedColumnName(column.Value.ColumnName)); } - + //protected bool IsFieldName(string quotedExp) //{ // return true; diff --git a/src/Umbraco.Core/Persistence/Querying/Query.cs b/src/Umbraco.Core/Persistence/Querying/Query.cs index 4dd268268f..8f09e25037 100644 --- a/src/Umbraco.Core/Persistence/Querying/Query.cs +++ b/src/Umbraco.Core/Persistence/Querying/Query.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; +using Umbraco.Core.Persistence.SqlSyntax; namespace Umbraco.Core.Persistence.Querying { @@ -11,14 +12,12 @@ namespace Umbraco.Core.Persistence.Querying /// public class Query : IQuery { + private readonly ISqlSyntaxProvider _sqlSyntax; private readonly List> _wheres = new List>(); - /// - /// Helper method to be used instead of manually creating an instance - /// - public static IQuery Builder + public Query(ISqlSyntaxProvider sqlSyntax) { - get { return new Query(); } + _sqlSyntax = sqlSyntax; } /// @@ -30,7 +29,7 @@ namespace Umbraco.Core.Persistence.Querying { if (predicate != null) { - var expressionHelper = new ModelToSqlExpressionHelper(); + var expressionHelper = new ModelToSqlExpressionHelper(_sqlSyntax); string whereExpression = expressionHelper.Visit(predicate); _wheres.Add(new Tuple(whereExpression, expressionHelper.GetSqlParameters())); diff --git a/src/Umbraco.Core/Persistence/Repositories/ContentRepository.cs b/src/Umbraco.Core/Persistence/Repositories/ContentRepository.cs index 1cb3f89a88..6c106dd65c 100644 --- a/src/Umbraco.Core/Persistence/Repositories/ContentRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/ContentRepository.cs @@ -61,8 +61,8 @@ namespace Umbraco.Core.Persistence.Repositories { var sql = GetBaseQuery(false) .Where(GetBaseWhereClause(), new { Id = id }) - .Where(x => x.Newest) - .OrderByDescending(x => x.VersionDate); + .Where(SqlSyntax, x => x.Newest) + .OrderByDescending(SqlSyntax, x => x.VersionDate); var dto = Database.Fetch(sql).FirstOrDefault(); @@ -83,7 +83,7 @@ namespace Umbraco.Core.Persistence.Repositories } //we only want the newest ones with this method - sql.Where(x => x.Newest); + sql.Where(SqlSyntax, x => x.Newest); return ProcessQuery(sql); } @@ -93,9 +93,9 @@ namespace Umbraco.Core.Persistence.Repositories var sqlClause = GetBaseQuery(false); var translator = new SqlTranslator(sqlClause, query); var sql = translator.Translate() - .Where(x => x.Newest) - .OrderByDescending(x => x.VersionDate) - .OrderBy(x => x.SortOrder); + .Where(SqlSyntax, x => x.Newest) + .OrderByDescending(SqlSyntax, x => x.VersionDate) + .OrderBy(SqlSyntax, x => x.SortOrder); return ProcessQuery(sql); } @@ -108,14 +108,14 @@ namespace Umbraco.Core.Persistence.Repositories { var sql = new Sql(); sql.Select(isCount ? "COUNT(*)" : "*") - .From() - .InnerJoin() - .On(left => left.VersionId, right => right.VersionId) - .InnerJoin() - .On(left => left.NodeId, right => right.NodeId) - .InnerJoin() - .On(left => left.NodeId, right => right.NodeId) - .Where(x => x.NodeObjectType == NodeObjectTypeId); + .From(SqlSyntax) + .InnerJoin(SqlSyntax) + .On(SqlSyntax, left => left.VersionId, right => right.VersionId) + .InnerJoin(SqlSyntax) + .On(SqlSyntax, left => left.NodeId, right => right.NodeId) + .InnerJoin(SqlSyntax) + .On(SqlSyntax, left => left.NodeId, right => right.NodeId) + .Where(SqlSyntax, x => x.NodeObjectType == NodeObjectTypeId); return sql; } @@ -166,9 +166,9 @@ namespace Umbraco.Core.Persistence.Repositories { var subQuery = new Sql() .Select("DISTINCT cmsContentXml.nodeId") - .From() - .InnerJoin() - .On(left => left.NodeId, right => right.NodeId); + .From(SqlSyntax) + .InnerJoin(SqlSyntax) + .On(SqlSyntax, left => left.NodeId, right => right.NodeId); var deleteSql = SqlSyntax.GetDeleteSubquery("cmsContentXml", "nodeId", subQuery); Database.Execute(deleteSql); @@ -180,11 +180,11 @@ namespace Umbraco.Core.Persistence.Repositories var id1 = id; var subQuery = new Sql() .Select("cmsDocument.nodeId") - .From() - .InnerJoin() - .On(left => left.NodeId, right => right.NodeId) - .Where(dto => dto.Published) - .Where(dto => dto.ContentTypeId == id1); + .From(SqlSyntax) + .InnerJoin(SqlSyntax) + .On(SqlSyntax, left => left.NodeId, right => right.NodeId) + .Where(SqlSyntax, dto => dto.Published) + .Where(SqlSyntax, dto => dto.ContentTypeId == id1); var deleteSql = SqlSyntax.GetDeleteSubquery("cmsContentXml", "nodeId", subQuery); Database.Execute(deleteSql); @@ -194,7 +194,7 @@ namespace Umbraco.Core.Persistence.Repositories //now insert the data, again if something fails here, the whole transaction is reversed if (contentTypeIds == null) { - var query = Query.Builder.Where(x => x.Published == true); + var query = Query.Where(x => x.Published == true); RebuildXmlStructuresProcessQuery(serializer, query, tr, groupSize); } else @@ -203,7 +203,7 @@ namespace Umbraco.Core.Persistence.Repositories { //copy local var id = contentTypeId; - var query = Query.Builder.Where(x => x.Published == true && x.ContentTypeId == id && x.Trashed == false); + var query = Query.Where(x => x.Published == true && x.ContentTypeId == id && x.Trashed == false); RebuildXmlStructuresProcessQuery(serializer, query, tr, groupSize); } } @@ -226,7 +226,7 @@ namespace Umbraco.Core.Persistence.Repositories select new ContentXmlDto { NodeId = descendant.Id, Xml = xml.ToString(SaveOptions.None) }).ToArray(); //bulk insert it into the database - Database.BulkInsertRecords(xmlItems, tr); + Database.BulkInsertRecords(SqlSyntax, xmlItems, tr); processed += xmlItems.Length; @@ -238,7 +238,7 @@ namespace Umbraco.Core.Persistence.Repositories { var sql = GetBaseQuery(false); sql.Where("cmsContentVersion.VersionId = @VersionId", new { VersionId = versionId }); - sql.OrderByDescending(x => x.VersionDate); + sql.OrderByDescending(SqlSyntax, x => x.VersionDate); var dto = Database.Fetch(sql).FirstOrDefault(); @@ -254,10 +254,10 @@ namespace Umbraco.Core.Persistence.Repositories { var sql = new Sql() .Select("*") - .From() - .InnerJoin().On(left => left.VersionId, right => right.VersionId) - .Where(x => x.VersionId == versionId) - .Where(x => x.Newest != true); + .From(SqlSyntax) + .InnerJoin(SqlSyntax).On(SqlSyntax, left => left.VersionId, right => right.VersionId) + .Where(SqlSyntax, x => x.VersionId == versionId) + .Where(SqlSyntax, x => x.Newest != true); var dto = Database.Fetch(sql).FirstOrDefault(); if (dto == null) return; @@ -274,11 +274,11 @@ namespace Umbraco.Core.Persistence.Repositories { var sql = new Sql() .Select("*") - .From() - .InnerJoin().On(left => left.VersionId, right => right.VersionId) - .Where(x => x.NodeId == id) - .Where(x => x.VersionDate < versionDate) - .Where(x => x.Newest != true); + .From(SqlSyntax) + .InnerJoin(SqlSyntax).On(SqlSyntax, left => left.VersionId, right => right.VersionId) + .Where(SqlSyntax, x => x.NodeId == id) + .Where(SqlSyntax, x => x.VersionDate < versionDate) + .Where(SqlSyntax, x => x.Newest != true); var list = Database.Fetch(sql); if (list.Any() == false) return; @@ -578,9 +578,9 @@ namespace Umbraco.Core.Persistence.Repositories var sqlClause = GetBaseQuery(false); var translator = new SqlTranslator(sqlClause, query); var sql = translator.Translate() - .Where(x => x.Published) - .OrderBy(x => x.Level) - .OrderBy(x => x.SortOrder); + .Where(SqlSyntax, x => x.Published) + .OrderBy(SqlSyntax, x => x.Level) + .OrderBy(SqlSyntax, x => x.SortOrder); //NOTE: This doesn't allow properties to be part of the query var dtos = Database.Fetch(sql); @@ -606,9 +606,9 @@ namespace Umbraco.Core.Persistence.Repositories public int CountPublished() { - var sql = GetBaseQuery(true).Where(x => x.Trashed == false) - .Where(x => x.Published == true) - .Where(x => x.Newest == true); + var sql = GetBaseQuery(true).Where(SqlSyntax, x => x.Trashed == false) + .Where(SqlSyntax, x => x.Published == true) + .Where(SqlSyntax, x => x.Newest == true); return Database.ExecuteScalar(sql); } @@ -851,8 +851,8 @@ namespace Umbraco.Core.Persistence.Repositories var sql = new Sql(); sql.Select("*") - .From() - .Where(x => x.NodeObjectType == NodeObjectTypeId && x.ParentId == parentId && x.Text.StartsWith(nodeName)); + .From(SqlSyntax) + .Where(SqlSyntax, x => x.NodeObjectType == NodeObjectTypeId && x.ParentId == parentId && x.Text.StartsWith(nodeName)); int uniqueNumber = 1; var currentName = nodeName; diff --git a/src/Umbraco.Core/Persistence/Repositories/ContentTypeBaseRepository.cs b/src/Umbraco.Core/Persistence/Repositories/ContentTypeBaseRepository.cs index 4e3acfa885..bd3f12b8c6 100644 --- a/src/Umbraco.Core/Persistence/Repositories/ContentTypeBaseRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/ContentTypeBaseRepository.cs @@ -42,15 +42,15 @@ namespace Umbraco.Core.Persistence.Repositories { var sqlClause = new Sql(); sqlClause.Select("*") - .From() - .RightJoin() - .On(left => left.Id, right => right.PropertyTypeGroupId) - .InnerJoin() - .On(left => left.DataTypeId, right => right.DataTypeId); + .From(SqlSyntax) + .RightJoin(SqlSyntax) + .On(SqlSyntax, left => left.Id, right => right.PropertyTypeGroupId) + .InnerJoin(SqlSyntax) + .On(SqlSyntax, left => left.DataTypeId, right => right.DataTypeId); var translator = new SqlTranslator(sqlClause, query); var sql = translator.Translate() - .OrderBy(x => x.PropertyTypeGroupId); + .OrderBy(SqlSyntax, x => x.PropertyTypeGroupId); var dtos = Database.Fetch(new GroupPropertyTypeRelator().Map, sql); @@ -222,11 +222,11 @@ AND umbracoNode.id <> @id", //Find Content based on the current ContentType var sql = new Sql(); sql.Select("*") - .From() - .InnerJoin() - .On(left => left.NodeId, right => right.NodeId) - .Where(x => x.NodeObjectType == new Guid(Constants.ObjectTypes.Document)) - .Where(x => x.ContentTypeId == entity.Id); + .From(SqlSyntax) + .InnerJoin(SqlSyntax) + .On(SqlSyntax, left => left.NodeId, right => right.NodeId) + .Where(SqlSyntax, x => x.NodeObjectType == new Guid(Constants.ObjectTypes.Document)) + .Where(SqlSyntax, x => x.ContentTypeId == entity.Id); var contentDtos = Database.Fetch(sql); //Loop through all tracked keys, which corresponds to the ContentTypes that has been removed from the composition @@ -243,12 +243,12 @@ AND umbracoNode.id <> @id", var nodeId = contentDto.NodeId; var propertyTypeId = propertyType.Id; var propertySql = new Sql().Select("cmsPropertyData.id") - .From() - .InnerJoin() - .On( + .From(SqlSyntax) + .InnerJoin(SqlSyntax) + .On(SqlSyntax, left => left.PropertyTypeId, right => right.Id) - .Where(x => x.NodeId == nodeId) - .Where(x => x.Id == propertyTypeId); + .Where(SqlSyntax, x => x.NodeId == nodeId) + .Where(SqlSyntax, x => x.Id == propertyTypeId); //Finally delete the properties that match our criteria for removing a ContentType from the composition Database.Delete(new Sql("WHERE id IN (" + propertySql.SQL + ")", propertySql.Arguments)); @@ -404,10 +404,10 @@ AND umbracoNode.id <> @id", { var sql = new Sql(); sql.Select("*") - .From() - .LeftJoin() - .On(left => left.AllowedId, right => right.NodeId) - .Where(x => x.Id == id); + .From(SqlSyntax) + .LeftJoin(SqlSyntax) + .On(SqlSyntax, left => left.AllowedId, right => right.NodeId) + .Where(SqlSyntax, x => x.Id == id); var allowedContentTypeDtos = Database.Fetch(sql); return allowedContentTypeDtos.Select(x => new ContentTypeSort { Id = new Lazy(() => x.AllowedId), Alias = x.ContentTypeDto.Alias, SortOrder = x.SortOrder }).ToList(); @@ -417,13 +417,13 @@ AND umbracoNode.id <> @id", { var sql = new Sql(); sql.Select("*") - .From() - .LeftJoin() - .On(left => left.Id, right => right.PropertyTypeGroupId) - .LeftJoin() - .On(left => left.DataTypeId, right => right.DataTypeId) - .Where(x => x.ContentTypeNodeId == id) - .OrderBy(x => x.Id); + .From(SqlSyntax) + .LeftJoin(SqlSyntax) + .On(SqlSyntax, left => left.Id, right => right.PropertyTypeGroupId) + .LeftJoin(SqlSyntax) + .On(SqlSyntax, left => left.DataTypeId, right => right.DataTypeId) + .Where(SqlSyntax, x => x.ContentTypeNodeId == id) + .OrderBy(SqlSyntax, x => x.Id); var dtos = Database.Fetch(new GroupPropertyTypeRelator().Map, sql); @@ -436,10 +436,10 @@ AND umbracoNode.id <> @id", { var sql = new Sql(); sql.Select("*") - .From() - .InnerJoin() - .On(left => left.DataTypeId, right => right.DataTypeId) - .Where(x => x.ContentTypeId == id); + .From(SqlSyntax) + .InnerJoin(SqlSyntax) + .On(SqlSyntax, left => left.DataTypeId, right => right.DataTypeId) + .Where(SqlSyntax, x => x.ContentTypeId == id); var dtos = Database.Fetch(sql); @@ -512,9 +512,9 @@ AND umbracoNode.id <> @id", { var sql = new Sql() .Select("*") - .From() + .From(SqlSyntax) .Where("propertyEditorAlias = @propertyEditorAlias", new { propertyEditorAlias = propertyType.PropertyEditorAlias }) - .OrderBy(typeDto => typeDto.DataTypeId); + .OrderBy(SqlSyntax, typeDto => typeDto.DataTypeId); var datatype = Database.FirstOrDefault(sql); //we cannot assign a data type if one was not found if (datatype != null) diff --git a/src/Umbraco.Core/Persistence/Repositories/ContentTypeRepository.cs b/src/Umbraco.Core/Persistence/Repositories/ContentTypeRepository.cs index 40679af854..389469acc8 100644 --- a/src/Umbraco.Core/Persistence/Repositories/ContentTypeRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/ContentTypeRepository.cs @@ -46,7 +46,8 @@ namespace Umbraco.Core.Persistence.Repositories } else { - var sql = new Sql().Select("id").From().Where(dto => dto.NodeObjectType == NodeObjectTypeId); + var sql = new Sql().Select("id").From(SqlSyntax) + .Where(SqlSyntax, dto => dto.NodeObjectType == NodeObjectTypeId); var allIds = Database.Fetch(sql).ToArray(); return ContentTypeQueryMapper.GetContentTypes(allIds, Database, SqlSyntax, this, _templateRepository); } @@ -57,7 +58,7 @@ namespace Umbraco.Core.Persistence.Repositories var sqlClause = GetBaseQuery(false); var translator = new SqlTranslator(sqlClause, query); var sql = translator.Translate() - .OrderBy(x => x.Text); + .OrderBy(SqlSyntax, x => x.Text); var dtos = Database.Fetch(sql); return dtos.Any() @@ -96,12 +97,12 @@ namespace Umbraco.Core.Persistence.Repositories var sql = new Sql(); sql.Select(isCount ? "COUNT(*)" : "*") - .From() - .InnerJoin() - .On(left => left.NodeId, right => right.NodeId) - .LeftJoin() - .On(left => left.ContentTypeNodeId, right => right.NodeId) - .Where(x => x.NodeObjectType == NodeObjectTypeId); + .From(SqlSyntax) + .InnerJoin(SqlSyntax) + .On(SqlSyntax, left => left.NodeId, right => right.NodeId) + .LeftJoin(SqlSyntax) + .On(SqlSyntax, left => left.ContentTypeNodeId, right => right.NodeId) + .Where(SqlSyntax, x => x.NodeObjectType == NodeObjectTypeId); return sql; } @@ -149,7 +150,7 @@ namespace Umbraco.Core.Persistence.Repositories /// protected override void PersistDeletedItem(IContentType entity) { - var query = Query.Builder.Where(x => x.ParentId == entity.Id); + var query = Query.Where(x => x.ParentId == entity.Id); var children = GetByQuery(query); foreach (var child in children) { diff --git a/src/Umbraco.Core/Persistence/Repositories/DataTypeDefinitionRepository.cs b/src/Umbraco.Core/Persistence/Repositories/DataTypeDefinitionRepository.cs index 0ebbbeb6a5..7d0342903d 100644 --- a/src/Umbraco.Core/Persistence/Repositories/DataTypeDefinitionRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/DataTypeDefinitionRepository.cs @@ -54,7 +54,7 @@ namespace Umbraco.Core.Persistence.Repositories } else { - dataTypeSql.Where(x => x.NodeObjectType == NodeObjectTypeId); + dataTypeSql.Where(SqlSyntax, x => x.NodeObjectType == NodeObjectTypeId); } var dtos = Database.Fetch(dataTypeSql); @@ -81,7 +81,7 @@ namespace Umbraco.Core.Persistence.Repositories public override void Delete(IDataTypeDefinition entity) { //Find ContentTypes using this IDataTypeDefinition on a PropertyType - var query = Query.Builder.Where(x => x.DataTypeDefinitionId == entity.Id); + var query = new Query(SqlSyntax).Where(x => x.DataTypeDefinitionId == entity.Id); //TODO: Don't we need to be concerned about media and member types here too ? var contentTypes = _contentTypeRepository.GetByQuery(query); @@ -115,10 +115,10 @@ namespace Umbraco.Core.Persistence.Repositories { var sql = new Sql(); sql.Select(isCount ? "COUNT(*)" : "*") - .From() - .InnerJoin() - .On(left => left.DataTypeId, right => right.NodeId) - .Where(x => x.NodeObjectType == NodeObjectTypeId); + .From(SqlSyntax) + .InnerJoin(SqlSyntax) + .On(SqlSyntax, left => left.DataTypeId, right => right.NodeId) + .Where(SqlSyntax, x => x.NodeObjectType == NodeObjectTypeId); return sql; } @@ -326,9 +326,9 @@ AND umbracoNode.id <> @id", { //first just get all pre-values for this data type so we can compare them to see if we need to insert or update or replace var sql = new Sql().Select("*") - .From() - .Where(dto => dto.DataTypeNodeId == dataType.Id) - .OrderBy(dto => dto.SortOrder); + .From(SqlSyntax) + .Where(SqlSyntax, dto => dto.DataTypeNodeId == dataType.Id) + .OrderBy(SqlSyntax, dto => dto.SortOrder); currentVals = Database.Fetch(sql).ToArray(); } diff --git a/src/Umbraco.Core/Persistence/Repositories/DictionaryRepository.cs b/src/Umbraco.Core/Persistence/Repositories/DictionaryRepository.cs index a8dac969d3..6ec55da6be 100644 --- a/src/Umbraco.Core/Persistence/Repositories/DictionaryRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/DictionaryRepository.cs @@ -33,7 +33,7 @@ namespace Umbraco.Core.Persistence.Repositories { var sql = GetBaseQuery(false) .Where(GetBaseWhereClause(), new {Id = id}) - .OrderBy(x => x.UniqueId); + .OrderBy(SqlSyntax, x => x.UniqueId); var dto = Database.Fetch(new DictionaryLanguageTextRelator().Map, sql).FirstOrDefault(); if (dto == null) @@ -65,7 +65,7 @@ namespace Umbraco.Core.Persistence.Repositories var sqlClause = GetBaseQuery(false); var translator = new SqlTranslator(sqlClause, query); var sql = translator.Translate(); - sql.OrderBy(x => x.UniqueId); + sql.OrderBy(SqlSyntax, x => x.UniqueId); return Database.Fetch(new DictionaryLanguageTextRelator().Map, sql) .Select(ConvertFromDto); @@ -81,14 +81,14 @@ namespace Umbraco.Core.Persistence.Repositories if(isCount) { sql.Select("COUNT(*)") - .From(); + .From(SqlSyntax); } else { sql.Select("*") - .From() - .LeftJoin() - .On(left => left.UniqueId, right => right.UniqueId); + .From(SqlSyntax) + .LeftJoin(SqlSyntax) + .On(SqlSyntax, left => left.UniqueId, right => right.UniqueId); } return sql; } diff --git a/src/Umbraco.Core/Persistence/Repositories/DomainRepository.cs b/src/Umbraco.Core/Persistence/Repositories/DomainRepository.cs index 2adba8536a..f7c3119e74 100644 --- a/src/Umbraco.Core/Persistence/Repositories/DomainRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/DomainRepository.cs @@ -119,7 +119,7 @@ namespace Umbraco.Core.Persistence.Repositories { using (var repo = new CachedDomainRepository(this, UnitOfWork, RepositoryCache, Logger, SqlSyntax)) { - var query = new Query().Where(x => x.DomainName.InvariantEquals(domainName)); + var query = repo.Query.Where(x => x.DomainName.InvariantEquals(domainName)); return repo.GetByQuery(query).Any(); } } @@ -140,7 +140,7 @@ namespace Umbraco.Core.Persistence.Repositories { var factory = new DomainModelFactory(); - var query = new Query().Where(x => x.RootContentId == contentId); + var query = repo.Query.Where(x => x.RootContentId == contentId); return factory.BuildDomainEntities(repo.GetByQuery(query).ToArray(), _contentRepository, _languageRepository) .Where(x => includeWildcards || x.IsWildcard == false); diff --git a/src/Umbraco.Core/Persistence/Repositories/EntityRepository.cs b/src/Umbraco.Core/Persistence/Repositories/EntityRepository.cs index 55095e1f8e..e25c1b8183 100644 --- a/src/Umbraco.Core/Persistence/Repositories/EntityRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/EntityRepository.cs @@ -11,6 +11,7 @@ using Umbraco.Core.Models.EntityBase; using Umbraco.Core.Models.Rdbms; using Umbraco.Core.Persistence.Factories; using Umbraco.Core.Persistence.Querying; +using Umbraco.Core.Persistence.SqlSyntax; using Umbraco.Core.Persistence.UnitOfWork; using Umbraco.Core.Strings; @@ -25,11 +26,13 @@ namespace Umbraco.Core.Persistence.Repositories internal class EntityRepository : DisposableObject, IEntityRepository { private readonly IDatabaseUnitOfWork _work; + private readonly ISqlSyntaxProvider _sqlSyntax; - public EntityRepository(IDatabaseUnitOfWork work) - { - _work = work; - } + public EntityRepository(IDatabaseUnitOfWork work, ISqlSyntaxProvider sqlSyntax) + { + _work = work; + _sqlSyntax = sqlSyntax; + } /// /// Returns the Unit of Work added to the repository @@ -49,6 +52,11 @@ namespace Umbraco.Core.Persistence.Repositories #region Query Methods + public Query Query + { + get { return new Query(_sqlSyntax); } + } + public IUmbracoEntity GetByKey(Guid key) { var sql = GetBaseWhere(GetBase, false, false, key); @@ -246,6 +254,22 @@ namespace Umbraco.Core.Persistence.Repositories } } + public UmbracoObjectTypes GetObjectType(int id) + { + var sql = new Sql().Select("nodeObjectType").From(_sqlSyntax).Where(_sqlSyntax, x => x.NodeId == id); + var nodeObjectTypeId = _work.Database.ExecuteScalar(sql); + var objectTypeId = nodeObjectTypeId; + return UmbracoObjectTypesExtensions.GetUmbracoObjectType(objectTypeId); + } + + public UmbracoObjectTypes GetObjectType(Guid key) + { + var sql = new Sql().Select("nodeObjectType").From(_sqlSyntax).Where(_sqlSyntax, x => x.UniqueId == key); + var nodeObjectTypeId = _work.Database.ExecuteScalar(sql); + var objectTypeId = nodeObjectTypeId; + return UmbracoObjectTypesExtensions.GetUmbracoObjectType(objectTypeId); + } + #endregion @@ -284,13 +308,13 @@ namespace Umbraco.Core.Persistence.Repositories var joinSql = new Sql() .Select("contentNodeId, versionId, dataNvarchar, dataNtext, propertyEditorAlias, alias as propertyTypeAlias") - .From() - .InnerJoin() - .On(dto => dto.NodeId, dto => dto.NodeId) - .InnerJoin() - .On(dto => dto.Id, dto => dto.PropertyTypeId) - .InnerJoin() - .On(dto => dto.DataTypeId, dto => dto.DataTypeId) + .From(_sqlSyntax) + .InnerJoin(_sqlSyntax) + .On(_sqlSyntax, dto => dto.NodeId, dto => dto.NodeId) + .InnerJoin(_sqlSyntax) + .On(_sqlSyntax, dto => dto.Id, dto => dto.PropertyTypeId) + .InnerJoin(_sqlSyntax) + .On(_sqlSyntax, dto => dto.DataTypeId, dto => dto.DataTypeId) .Where("umbracoNode.nodeObjectType = @nodeObjectType", new {nodeObjectType = Constants.ObjectTypes.Media}); if (filter != null) diff --git a/src/Umbraco.Core/Persistence/Repositories/Interfaces/IEntityRepository.cs b/src/Umbraco.Core/Persistence/Repositories/Interfaces/IEntityRepository.cs index 3b73aabdf4..57e15a2998 100644 --- a/src/Umbraco.Core/Persistence/Repositories/Interfaces/IEntityRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/Interfaces/IEntityRepository.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using Umbraco.Core.Models; using Umbraco.Core.Models.EntityBase; using Umbraco.Core.Persistence.Querying; @@ -7,6 +8,8 @@ namespace Umbraco.Core.Persistence.Repositories { public interface IEntityRepository : IRepository { + Query Query { get; } + IUmbracoEntity GetByKey(Guid key); IUmbracoEntity GetByKey(Guid key, Guid objectTypeId); IUmbracoEntity Get(int id); @@ -15,5 +18,8 @@ namespace Umbraco.Core.Persistence.Repositories IEnumerable GetAll(Guid objectTypeId, params Guid[] keys); IEnumerable GetByQuery(IQuery query); IEnumerable GetByQuery(IQuery query, Guid objectTypeId); + + UmbracoObjectTypes GetObjectType(int id); + UmbracoObjectTypes GetObjectType(Guid key); } } \ No newline at end of file diff --git a/src/Umbraco.Core/Persistence/Repositories/Interfaces/IMediaRepository.cs b/src/Umbraco.Core/Persistence/Repositories/Interfaces/IMediaRepository.cs index f84844c177..7d706997bb 100644 --- a/src/Umbraco.Core/Persistence/Repositories/Interfaces/IMediaRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/Interfaces/IMediaRepository.cs @@ -9,7 +9,8 @@ namespace Umbraco.Core.Persistence.Repositories { public interface IMediaRepository : IRepositoryVersionable, IRecycleBinRepository { - + IMedia GetMediaByPath(string mediaPath); + /// /// Used to add/update published xml for the media item /// diff --git a/src/Umbraco.Core/Persistence/Repositories/Interfaces/IRepositoryQueryable.cs b/src/Umbraco.Core/Persistence/Repositories/Interfaces/IRepositoryQueryable.cs index c32f1b33a6..e6419fc370 100644 --- a/src/Umbraco.Core/Persistence/Repositories/Interfaces/IRepositoryQueryable.cs +++ b/src/Umbraco.Core/Persistence/Repositories/Interfaces/IRepositoryQueryable.cs @@ -11,6 +11,11 @@ namespace Umbraco.Core.Persistence.Repositories /// Type of the Id used for this entity public interface IRepositoryQueryable : IRepository { + /// + /// Creates a new query instance + /// + Query Query { get; } + /// /// Gets all entities of the specified type and query /// diff --git a/src/Umbraco.Core/Persistence/Repositories/Interfaces/ITaskRepository.cs b/src/Umbraco.Core/Persistence/Repositories/Interfaces/ITaskRepository.cs index d2b4770082..60f17c6de5 100644 --- a/src/Umbraco.Core/Persistence/Repositories/Interfaces/ITaskRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/Interfaces/ITaskRepository.cs @@ -4,11 +4,6 @@ using Umbraco.Core.Models; namespace Umbraco.Core.Persistence.Repositories { - public interface ITaskTypeRepository : IRepositoryQueryable - { - - } - public interface ITaskRepository : IRepositoryQueryable { IEnumerable GetTasks(int? itemId = null, int? assignedUser = null, int? ownerUser = null, string taskTypeAlias = null, bool includeClosed = false); diff --git a/src/Umbraco.Core/Persistence/Repositories/Interfaces/ITaskTypeRepository.cs b/src/Umbraco.Core/Persistence/Repositories/Interfaces/ITaskTypeRepository.cs new file mode 100644 index 0000000000..ed35543ef6 --- /dev/null +++ b/src/Umbraco.Core/Persistence/Repositories/Interfaces/ITaskTypeRepository.cs @@ -0,0 +1,9 @@ +using Umbraco.Core.Models; + +namespace Umbraco.Core.Persistence.Repositories +{ + public interface ITaskTypeRepository : IRepositoryQueryable + { + + } +} \ No newline at end of file diff --git a/src/Umbraco.Core/Persistence/Repositories/LanguageRepository.cs b/src/Umbraco.Core/Persistence/Repositories/LanguageRepository.cs index 1403d5e6c4..72f535dc9c 100644 --- a/src/Umbraco.Core/Persistence/Repositories/LanguageRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/LanguageRepository.cs @@ -53,7 +53,7 @@ namespace Umbraco.Core.Persistence.Repositories //this needs to be sorted since that is the way legacy worked - default language is the first one!! //even though legacy didn't sort, it should be by id - sql.OrderBy(dto => dto.Id, SqlSyntax); + sql.OrderBy(SqlSyntax, dto => dto.Id); return Database.Fetch(sql).Select(ConvertFromDto); diff --git a/src/Umbraco.Core/Persistence/Repositories/MacroRepository.cs b/src/Umbraco.Core/Persistence/Repositories/MacroRepository.cs index 4d21059758..4dc7d38db9 100644 --- a/src/Umbraco.Core/Persistence/Repositories/MacroRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/MacroRepository.cs @@ -95,7 +95,7 @@ namespace Umbraco.Core.Persistence.Repositories var sql = new Sql(); if (isCount) { - sql.Select("COUNT(*)").From(); + sql.Select("COUNT(*)").From(SqlSyntax); } else { @@ -104,13 +104,13 @@ namespace Umbraco.Core.Persistence.Repositories return sql; } - private static Sql GetBaseQuery() + private Sql GetBaseQuery() { var sql = new Sql(); sql.Select("*") - .From() - .LeftJoin() - .On(left => left.Id, right => right.Macro); + .From(SqlSyntax) + .LeftJoin(SqlSyntax) + .On(SqlSyntax, left => left.Id, right => right.Macro); return sql; } diff --git a/src/Umbraco.Core/Persistence/Repositories/MediaRepository.cs b/src/Umbraco.Core/Persistence/Repositories/MediaRepository.cs index c2355929e7..f066d14962 100644 --- a/src/Umbraco.Core/Persistence/Repositories/MediaRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/MediaRepository.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Globalization; using System.Linq; using System.Text; +using System.Text.RegularExpressions; using System.Xml.Linq; using Umbraco.Core.Configuration; using Umbraco.Core.Dynamics; @@ -51,7 +52,7 @@ namespace Umbraco.Core.Persistence.Repositories { var sql = GetBaseQuery(false); sql.Where(GetBaseWhereClause(), new { Id = id }); - sql.OrderByDescending(x => x.VersionDate); + sql.OrderByDescending(SqlSyntax, x => x.VersionDate); var dto = Database.Fetch(sql).FirstOrDefault(); @@ -79,7 +80,7 @@ namespace Umbraco.Core.Persistence.Repositories var sqlClause = GetBaseQuery(false); var translator = new SqlTranslator(sqlClause, query); var sql = translator.Translate() - .OrderBy(x => x.SortOrder); + .OrderBy(SqlSyntax, x => x.SortOrder); return ProcessQuery(sql); } @@ -92,12 +93,12 @@ namespace Umbraco.Core.Persistence.Repositories { var sql = new Sql(); sql.Select(isCount ? "COUNT(*)" : "*") - .From() - .InnerJoin() - .On(left => left.NodeId, right => right.NodeId) - .InnerJoin() - .On(left => left.NodeId, right => right.NodeId) - .Where(x => x.NodeObjectType == NodeObjectTypeId); + .From(SqlSyntax) + .InnerJoin(SqlSyntax) + .On(SqlSyntax, left => left.NodeId, right => right.NodeId) + .InnerJoin(SqlSyntax) + .On(SqlSyntax, left => left.NodeId, right => right.NodeId) + .Where(SqlSyntax, x => x.NodeObjectType == NodeObjectTypeId); return sql; } @@ -140,7 +141,7 @@ namespace Umbraco.Core.Persistence.Repositories { var sql = GetBaseQuery(false); sql.Where("cmsContentVersion.VersionId = @VersionId", new { VersionId = versionId }); - sql.OrderByDescending(x => x.VersionDate); + sql.OrderByDescending(SqlSyntax, x => x.VersionDate); var dto = Database.Fetch(sql).FirstOrDefault(); @@ -174,10 +175,10 @@ namespace Umbraco.Core.Persistence.Repositories var mediaObjectType = Guid.Parse(Constants.ObjectTypes.Media); var subQuery = new Sql() .Select("DISTINCT cmsContentXml.nodeId") - .From() - .InnerJoin() - .On(left => left.NodeId, right => right.NodeId) - .Where(dto => dto.NodeObjectType == mediaObjectType); + .From(SqlSyntax) + .InnerJoin(SqlSyntax) + .On(SqlSyntax, left => left.NodeId, right => right.NodeId) + .Where(SqlSyntax, dto => dto.NodeObjectType == mediaObjectType); var deleteSql = SqlSyntax.GetDeleteSubquery("cmsContentXml", "nodeId", subQuery); Database.Execute(deleteSql); @@ -190,13 +191,13 @@ namespace Umbraco.Core.Persistence.Repositories var mediaObjectType = Guid.Parse(Constants.ObjectTypes.Media); var subQuery = new Sql() .Select("DISTINCT cmsContentXml.nodeId") - .From() - .InnerJoin() - .On(left => left.NodeId, right => right.NodeId) - .InnerJoin() - .On(left => left.NodeId, right => right.NodeId) - .Where(dto => dto.NodeObjectType == mediaObjectType) - .Where(dto => dto.ContentTypeId == id1); + .From(SqlSyntax) + .InnerJoin(SqlSyntax) + .On(SqlSyntax, left => left.NodeId, right => right.NodeId) + .InnerJoin(SqlSyntax) + .On(SqlSyntax, left => left.NodeId, right => right.NodeId) + .Where(SqlSyntax, dto => dto.NodeObjectType == mediaObjectType) + .Where(SqlSyntax, dto => dto.ContentTypeId == id1); var deleteSql = SqlSyntax.GetDeleteSubquery("cmsContentXml", "nodeId", subQuery); Database.Execute(deleteSql); @@ -206,8 +207,7 @@ namespace Umbraco.Core.Persistence.Repositories //now insert the data, again if something fails here, the whole transaction is reversed if (contentTypeIds == null) { - var query = Query.Builder; - RebuildXmlStructuresProcessQuery(serializer, query, tr, groupSize); + RebuildXmlStructuresProcessQuery(serializer, Query, tr, groupSize); } else { @@ -215,7 +215,7 @@ namespace Umbraco.Core.Persistence.Repositories { //copy local var id = contentTypeId; - var query = Query.Builder.Where(x => x.ContentTypeId == id && x.Trashed == false); + var query = Query.Where(x => x.ContentTypeId == id && x.Trashed == false); RebuildXmlStructuresProcessQuery(serializer, query, tr, groupSize); } } @@ -238,7 +238,7 @@ namespace Umbraco.Core.Persistence.Repositories select new ContentXmlDto { NodeId = descendant.Id, Xml = xml.ToString(SaveOptions.None) }).ToArray(); //bulk insert it into the database - Database.BulkInsertRecords(xmlItems, tr); + Database.BulkInsertRecords(SqlSyntax, xmlItems, tr); processed += xmlItems.Length; @@ -246,6 +246,42 @@ namespace Umbraco.Core.Persistence.Repositories } while (processed < total); } + public IMedia GetMediaByPath(string mediaPath) + { + var umbracoFileValue = mediaPath; + const string pattern = ".*[_][0-9]+[x][0-9]+[.].*"; + var isResized = Regex.IsMatch(mediaPath, pattern); + + // If the image has been resized we strip the "_403x328" of the original "/media/1024/koala_403x328.jpg" url. + if (isResized) + { + var underscoreIndex = mediaPath.LastIndexOf('_'); + var dotIndex = mediaPath.LastIndexOf('.'); + umbracoFileValue = string.Concat(mediaPath.Substring(0, underscoreIndex), mediaPath.Substring(dotIndex)); + } + + Func createSql = url => new Sql().Select("*") + .From(SqlSyntax) + .InnerJoin(SqlSyntax) + .On(SqlSyntax, left => left.PropertyTypeId, right => right.Id) + .Where(SqlSyntax, x => x.Alias == "umbracoFile") + .Where(SqlSyntax, x => x.VarChar == url); + + var sql = createSql(umbracoFileValue); + + var propertyDataDto = UnitOfWork.Database.Fetch(sql).FirstOrDefault(); + + // If the stripped-down url returns null, we try again with the original url. + // Previously, the function would fail on e.g. "my_x_image.jpg" + if (propertyDataDto == null) + { + sql = createSql(mediaPath); + propertyDataDto = UnitOfWork.Database.Fetch(sql).FirstOrDefault(); + } + + return propertyDataDto == null ? null : Get(propertyDataDto.NodeId); + } + public void AddOrUpdateContentXml(IMedia content, Func xml) { _contentXmlRepository.AddOrUpdate(new ContentXmlEntity(content, xml)); @@ -550,8 +586,8 @@ namespace Umbraco.Core.Persistence.Repositories var sql = new Sql(); sql.Select("*") - .From() - .Where(x => x.NodeObjectType == NodeObjectTypeId && x.ParentId == parentId && x.Text.StartsWith(nodeName)); + .From(SqlSyntax) + .Where(SqlSyntax, x => x.NodeObjectType == NodeObjectTypeId && x.ParentId == parentId && x.Text.StartsWith(nodeName)); int uniqueNumber = 1; var currentName = nodeName; diff --git a/src/Umbraco.Core/Persistence/Repositories/MediaTypeRepository.cs b/src/Umbraco.Core/Persistence/Repositories/MediaTypeRepository.cs index cc51fd6e7c..58ef094f97 100644 --- a/src/Umbraco.Core/Persistence/Repositories/MediaTypeRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/MediaTypeRepository.cs @@ -64,7 +64,7 @@ namespace Umbraco.Core.Persistence.Repositories } else { - var sql = new Sql().Select("id").From().Where(dto => dto.NodeObjectType == NodeObjectTypeId); + var sql = new Sql().Select("id").From(SqlSyntax).Where(SqlSyntax, dto => dto.NodeObjectType == NodeObjectTypeId); var allIds = Database.Fetch(sql).ToArray(); return ContentTypeQueryMapper.GetMediaTypes(allIds, Database, SqlSyntax, this); } @@ -75,7 +75,7 @@ namespace Umbraco.Core.Persistence.Repositories var sqlClause = GetBaseQuery(false); var translator = new SqlTranslator(sqlClause, query); var sql = translator.Translate() - .OrderBy(x => x.Text); + .OrderBy(SqlSyntax, x => x.Text); var dtos = Database.Fetch(sql); return dtos.Any() @@ -100,10 +100,10 @@ namespace Umbraco.Core.Persistence.Repositories { var sql = new Sql(); sql.Select(isCount ? "COUNT(*)" : "*") - .From() - .InnerJoin() - .On(left => left.NodeId, right => right.NodeId) - .Where(x => x.NodeObjectType == NodeObjectTypeId); + .From(SqlSyntax) + .InnerJoin(SqlSyntax) + .On(SqlSyntax, left => left.NodeId, right => right.NodeId) + .Where(SqlSyntax, x => x.NodeObjectType == NodeObjectTypeId); return sql; } diff --git a/src/Umbraco.Core/Persistence/Repositories/MemberGroupRepository.cs b/src/Umbraco.Core/Persistence/Repositories/MemberGroupRepository.cs index 264409ddf4..abadded175 100644 --- a/src/Umbraco.Core/Persistence/Repositories/MemberGroupRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/MemberGroupRepository.cs @@ -47,8 +47,8 @@ namespace Umbraco.Core.Persistence.Repositories { var sql = new Sql() .Select("*") - .From() - .Where(dto => dto.NodeObjectType == NodeObjectTypeId) + .From(SqlSyntax) + .Where(SqlSyntax, dto => dto.NodeObjectType == NodeObjectTypeId) .Where("umbracoNode.id in (@ids)", new { ids = ids }); return Database.Fetch(sql) .Select(x => _modelFactory.BuildEntity(x)); @@ -56,8 +56,8 @@ namespace Umbraco.Core.Persistence.Repositories else { var sql = new Sql() - .From() - .Where(dto => dto.NodeObjectType == NodeObjectTypeId); + .From(SqlSyntax) + .Where(SqlSyntax, dto => dto.NodeObjectType == NodeObjectTypeId); return Database.Fetch(sql) .Select(x => _modelFactory.BuildEntity(x)); } @@ -77,8 +77,8 @@ namespace Umbraco.Core.Persistence.Repositories { var sql = new Sql(); sql.Select(isCount ? "COUNT(*)" : "*") - .From() - .Where(x => x.NodeObjectType == NodeObjectTypeId); + .From(SqlSyntax) + .Where(SqlSyntax, x => x.NodeObjectType == NodeObjectTypeId); return sql; } @@ -139,7 +139,7 @@ namespace Umbraco.Core.Persistence.Repositories string.Format("{0}.{1}", typeof (IMemberGroup).FullName, name), () => { - var qry = new Query().Where(group => group.Name.Equals(name)); + var qry = new Query(SqlSyntax).Where(group => group.Name.Equals(name)); var result = GetByQuery(qry); return result.FirstOrDefault(); }, @@ -153,7 +153,7 @@ namespace Umbraco.Core.Persistence.Repositories { using (var transaction = Database.GetTransaction()) { - var qry = new Query().Where(group => group.Name.Equals(roleName)); + var qry = new Query(SqlSyntax).Where(group => group.Name.Equals(roleName)); var result = GetByQuery(qry); if (result.Any()) return null; @@ -181,11 +181,11 @@ namespace Umbraco.Core.Persistence.Repositories { var sql = new Sql(); sql.Select("umbracoNode.*") - .From() - .InnerJoin() - .On(dto => dto.NodeId, dto => dto.MemberGroup) - .Where(x => x.NodeObjectType == NodeObjectTypeId) - .Where(x => x.Member == memberId); + .From(SqlSyntax) + .InnerJoin(SqlSyntax) + .On(SqlSyntax, dto => dto.NodeId, dto => dto.MemberGroup) + .Where(SqlSyntax, x => x.NodeObjectType == NodeObjectTypeId) + .Where(SqlSyntax, x => x.Member == memberId); return Database.Fetch(sql) .DistinctBy(dto => dto.NodeId) @@ -199,11 +199,11 @@ namespace Umbraco.Core.Persistence.Repositories var memberObjectType = new Guid(Constants.ObjectTypes.Member); memberSql.Select("umbracoNode.id") - .From() - .InnerJoin() - .On(dto => dto.NodeId, dto => dto.NodeId) - .Where(x => x.NodeObjectType == memberObjectType) - .Where(x => x.LoginName == username); + .From(SqlSyntax) + .InnerJoin(SqlSyntax) + .On(SqlSyntax, dto => dto.NodeId, dto => dto.NodeId) + .Where(SqlSyntax, x => x.NodeObjectType == memberObjectType) + .Where(SqlSyntax, x => x.LoginName == username); var memberIdUsername = Database.Fetch(memberSql).FirstOrDefault(); if (memberIdUsername.HasValue == false) { @@ -212,11 +212,11 @@ namespace Umbraco.Core.Persistence.Repositories var sql = new Sql(); sql.Select("umbracoNode.*") - .From() - .InnerJoin() - .On(dto => dto.NodeId, dto => dto.MemberGroup) - .Where(x => x.NodeObjectType == NodeObjectTypeId) - .Where(x => x.Member == memberIdUsername.Value); + .From(SqlSyntax) + .InnerJoin(SqlSyntax) + .On(SqlSyntax, dto => dto.NodeId, dto => dto.MemberGroup) + .Where(SqlSyntax, x => x.NodeObjectType == NodeObjectTypeId) + .Where(SqlSyntax, x => x.Member == memberIdUsername.Value); return Database.Fetch(sql) .DistinctBy(dto => dto.NodeId) @@ -231,10 +231,10 @@ namespace Umbraco.Core.Persistence.Repositories var memberSql = new Sql(); var memberObjectType = new Guid(Constants.ObjectTypes.Member); memberSql.Select("umbracoNode.id") - .From() - .InnerJoin() - .On(dto => dto.NodeId, dto => dto.NodeId) - .Where(x => x.NodeObjectType == memberObjectType) + .From(SqlSyntax) + .InnerJoin(SqlSyntax) + .On(SqlSyntax, dto => dto.NodeId, dto => dto.NodeId) + .Where(SqlSyntax, x => x.NodeObjectType == memberObjectType) .Where("cmsMember.LoginName in (@usernames)", new { usernames = usernames }); var memberIds = Database.Fetch(memberSql).ToArray(); @@ -251,10 +251,10 @@ namespace Umbraco.Core.Persistence.Repositories var memberSql = new Sql(); var memberObjectType = new Guid(Constants.ObjectTypes.Member); memberSql.Select("umbracoNode.id") - .From() - .InnerJoin() - .On(dto => dto.NodeId, dto => dto.NodeId) - .Where(x => x.NodeObjectType == memberObjectType) + .From(SqlSyntax) + .InnerJoin(SqlSyntax) + .On(SqlSyntax, dto => dto.NodeId, dto => dto.NodeId) + .Where(SqlSyntax, x => x.NodeObjectType == memberObjectType) .Where("cmsMember.LoginName in (@usernames)", new { usernames = usernames }); var memberIds = Database.Fetch(memberSql).ToArray(); @@ -281,8 +281,8 @@ namespace Umbraco.Core.Persistence.Repositories var existingSql = new Sql() .Select("*") - .From() - .Where(dto => dto.NodeObjectType == NodeObjectTypeId) + .From(SqlSyntax) + .Where(SqlSyntax, dto => dto.NodeObjectType == NodeObjectTypeId) .Where("umbracoNode." + SqlSyntax.GetQuotedColumnName("text") + " in (@names)", new { names = roleNames }); var existingRoles = Database.Fetch(existingSql).Select(x => x.Text); var missingRoles = roleNames.Except(existingRoles); @@ -309,10 +309,10 @@ namespace Umbraco.Core.Persistence.Repositories SqlSyntax.GetQuotedColumnName("text"), SqlSyntax.GetQuotedColumnName("Member"), SqlSyntax.GetQuotedColumnName("MemberGroup"))) - .From() - .InnerJoin() - .On(dto => dto.NodeId, dto => dto.MemberGroup) - .Where(x => x.NodeObjectType == NodeObjectTypeId) + .From(SqlSyntax) + .InnerJoin(SqlSyntax) + .On(SqlSyntax, dto => dto.NodeId, dto => dto.MemberGroup) + .Where(SqlSyntax, x => x.NodeObjectType == NodeObjectTypeId) .Where("cmsMember2MemberGroup.Member in (@ids)", new { ids = memberIds }); var currentlyAssigned = Database.Fetch(assignedSql).ToArray(); @@ -348,8 +348,8 @@ namespace Umbraco.Core.Persistence.Repositories { var existingSql = new Sql() .Select("*") - .From() - .Where(dto => dto.NodeObjectType == NodeObjectTypeId) + .From(SqlSyntax) + .Where(SqlSyntax, dto => dto.NodeObjectType == NodeObjectTypeId) .Where("umbracoNode." + SqlSyntax.GetQuotedColumnName("text") + " in (@names)", new { names = roleNames }); var existingRolesIds = Database.Fetch(existingSql).Select(x => x.NodeId).ToArray(); diff --git a/src/Umbraco.Core/Persistence/Repositories/MemberRepository.cs b/src/Umbraco.Core/Persistence/Repositories/MemberRepository.cs index a6baec8d43..1f03ed5bde 100644 --- a/src/Umbraco.Core/Persistence/Repositories/MemberRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/MemberRepository.cs @@ -51,7 +51,7 @@ namespace Umbraco.Core.Persistence.Repositories { var sql = GetBaseQuery(false); sql.Where(GetBaseWhereClause(), new { Id = id }); - sql.OrderByDescending(x => x.VersionDate); + sql.OrderByDescending(SqlSyntax, x => x.VersionDate); var dto = Database.Fetch(sql).FirstOrDefault(); @@ -92,7 +92,7 @@ namespace Umbraco.Core.Persistence.Repositories var sql = translator.Translate(); baseQuery.Append(new Sql("WHERE umbracoNode.id IN (" + sql.SQL + ")", sql.Arguments)) - .OrderBy(x => x.SortOrder); + .OrderBy(SqlSyntax, x => x.SortOrder); return ProcessQuery(baseQuery); } @@ -100,7 +100,7 @@ namespace Umbraco.Core.Persistence.Repositories { var translator = new SqlTranslator(baseQuery, query); var sql = translator.Translate() - .OrderBy(x => x.SortOrder); + .OrderBy(SqlSyntax, x => x.SortOrder); return ProcessQuery(sql); } @@ -115,18 +115,19 @@ namespace Umbraco.Core.Persistence.Repositories { var sql = new Sql(); sql.Select(isCount ? "COUNT(*)" : "*") - .From() - .InnerJoin() - .On(left => left.NodeId, right => right.NodeId) - .InnerJoin() - .On(left => left.NodeId, right => right.NodeId) + .From(SqlSyntax) + .InnerJoin(SqlSyntax) + .On(SqlSyntax, left => left.NodeId, right => right.NodeId) + .InnerJoin(SqlSyntax) + .On(SqlSyntax, left => left.NodeId, right => right.NodeId) //We're joining the type so we can do a query against the member type - not sure if this adds much overhead or not? // the execution plan says it doesn't so we'll go with that and in that case, it might be worth joining the content // types by default on the document and media repo's so we can query by content type there too. - .InnerJoin().On(left => left.NodeId, right => right.ContentTypeId) - .InnerJoin() - .On(left => left.NodeId, right => right.NodeId) - .Where(x => x.NodeObjectType == NodeObjectTypeId); + .InnerJoin(SqlSyntax) + .On(SqlSyntax, left => left.NodeId, right => right.ContentTypeId) + .InnerJoin(SqlSyntax) + .On(SqlSyntax, left => left.NodeId, right => right.NodeId) + .Where(SqlSyntax, x => x.NodeObjectType == NodeObjectTypeId); return sql; } @@ -140,16 +141,16 @@ namespace Umbraco.Core.Persistence.Repositories { var sql = new Sql(); sql.Select("DISTINCT(umbracoNode.id)") - .From() - .InnerJoin().On(left => left.NodeId, right => right.NodeId) - .InnerJoin().On(left => left.NodeId, right => right.ContentTypeId) - .InnerJoin().On(left => left.NodeId, right => right.NodeId) - .InnerJoin().On(left => left.NodeId, right => right.NodeId) - .LeftJoin().On(left => left.ContentTypeId, right => right.ContentTypeId) - .LeftJoin().On(left => left.DataTypeId, right => right.DataTypeId) - .LeftJoin().On(left => left.PropertyTypeId, right => right.Id) + .From(SqlSyntax) + .InnerJoin(SqlSyntax).On(SqlSyntax, left => left.NodeId, right => right.NodeId) + .InnerJoin(SqlSyntax).On(SqlSyntax, left => left.NodeId, right => right.ContentTypeId) + .InnerJoin(SqlSyntax).On(SqlSyntax, left => left.NodeId, right => right.NodeId) + .InnerJoin(SqlSyntax).On(SqlSyntax, left => left.NodeId, right => right.NodeId) + .LeftJoin(SqlSyntax).On(SqlSyntax, left => left.ContentTypeId, right => right.ContentTypeId) + .LeftJoin(SqlSyntax).On(SqlSyntax, left => left.DataTypeId, right => right.DataTypeId) + .LeftJoin(SqlSyntax).On(SqlSyntax, left => left.PropertyTypeId, right => right.Id) .Append("AND cmsPropertyData.versionId = cmsContentVersion.VersionId") - .Where(x => x.NodeObjectType == NodeObjectTypeId); + .Where(SqlSyntax, x => x.NodeObjectType == NodeObjectTypeId); return sql; } @@ -419,10 +420,10 @@ namespace Umbraco.Core.Persistence.Repositories var memberObjectType = Guid.Parse(Constants.ObjectTypes.Member); var subQuery = new Sql() .Select("DISTINCT cmsContentXml.nodeId") - .From() - .InnerJoin() - .On(left => left.NodeId, right => right.NodeId) - .Where(dto => dto.NodeObjectType == memberObjectType); + .From(SqlSyntax) + .InnerJoin(SqlSyntax) + .On(SqlSyntax, left => left.NodeId, right => right.NodeId) + .Where(SqlSyntax, dto => dto.NodeObjectType == memberObjectType); var deleteSql = SqlSyntax.GetDeleteSubquery("cmsContentXml", "nodeId", subQuery); Database.Execute(deleteSql); @@ -435,13 +436,13 @@ namespace Umbraco.Core.Persistence.Repositories var memberObjectType = Guid.Parse(Constants.ObjectTypes.Member); var subQuery = new Sql() .Select("DISTINCT cmsContentXml.nodeId") - .From() - .InnerJoin() - .On(left => left.NodeId, right => right.NodeId) - .InnerJoin() - .On(left => left.NodeId, right => right.NodeId) - .Where(dto => dto.NodeObjectType == memberObjectType) - .Where(dto => dto.ContentTypeId == id1); + .From(SqlSyntax) + .InnerJoin(SqlSyntax) + .On(SqlSyntax, left => left.NodeId, right => right.NodeId) + .InnerJoin(SqlSyntax) + .On(SqlSyntax, left => left.NodeId, right => right.NodeId) + .Where(SqlSyntax, dto => dto.NodeObjectType == memberObjectType) + .Where(SqlSyntax, dto => dto.ContentTypeId == id1); var deleteSql = SqlSyntax.GetDeleteSubquery("cmsContentXml", "nodeId", subQuery); Database.Execute(deleteSql); @@ -451,7 +452,7 @@ namespace Umbraco.Core.Persistence.Repositories //now insert the data, again if something fails here, the whole transaction is reversed if (contentTypeIds == null) { - var query = Query.Builder; + var query = Query; RebuildXmlStructuresProcessQuery(serializer, query, tr, groupSize); } else @@ -460,7 +461,7 @@ namespace Umbraco.Core.Persistence.Repositories { //copy local var id = contentTypeId; - var query = Query.Builder.Where(x => x.ContentTypeId == id && x.Trashed == false); + var query = Query.Where(x => x.ContentTypeId == id && x.Trashed == false); RebuildXmlStructuresProcessQuery(serializer, query, tr, groupSize); } } @@ -483,7 +484,7 @@ namespace Umbraco.Core.Persistence.Repositories select new ContentXmlDto { NodeId = descendant.Id, Xml = xml.ToString(SaveOptions.None) }).ToArray(); //bulk insert it into the database - Database.BulkInsertRecords(xmlItems, tr); + Database.BulkInsertRecords(SqlSyntax, xmlItems, tr); processed += xmlItems.Length; @@ -495,7 +496,7 @@ namespace Umbraco.Core.Persistence.Repositories { var sql = GetBaseQuery(false); sql.Where("cmsContentVersion.VersionId = @VersionId", new { VersionId = versionId }); - sql.OrderByDescending(x => x.VersionDate); + sql.OrderByDescending(SqlSyntax, x => x.VersionDate); var dto = Database.Fetch(sql).FirstOrDefault(); @@ -530,12 +531,12 @@ namespace Umbraco.Core.Persistence.Repositories public IEnumerable FindMembersInRole(string roleName, string usernameToMatch, StringPropertyMatchType matchType = StringPropertyMatchType.StartsWith) { //get the group id - var grpQry = new Query().Where(group => group.Name.Equals(roleName)); + var grpQry = new Query(SqlSyntax).Where(group => group.Name.Equals(roleName)); var memberGroup = _memberGroupRepository.GetByQuery(grpQry).FirstOrDefault(); if (memberGroup == null) return Enumerable.Empty(); // get the members by username - var query = new Query(); + var query = new Query(SqlSyntax); switch (matchType) { case StringPropertyMatchType.Exact: @@ -565,8 +566,8 @@ namespace Umbraco.Core.Persistence.Repositories foreach (var batch in inGroups) { var memberIdBatch = batch.Select(x => x.Id); - var sql = new Sql().Select("*").From() - .Where(dto => dto.MemberGroup == memberGroup.Id) + var sql = new Sql().Select("*").From(SqlSyntax) + .Where(SqlSyntax, dto => dto.MemberGroup == memberGroup.Id) .Where("Member IN (@memberIds)", new { memberIds = memberIdBatch }); var memberIdsInGroup = Database.Fetch(sql) .Select(x => x.Member).ToArray(); @@ -585,18 +586,19 @@ namespace Umbraco.Core.Persistence.Repositories /// public IEnumerable GetByMemberGroup(string groupName) { - var grpQry = new Query().Where(group => group.Name.Equals(groupName)); + var grpQry = new Query(SqlSyntax).Where(group => group.Name.Equals(groupName)); var memberGroup = _memberGroupRepository.GetByQuery(grpQry).FirstOrDefault(); if (memberGroup == null) return Enumerable.Empty(); - var subQuery = new Sql().Select("Member").From().Where(dto => dto.MemberGroup == memberGroup.Id); + var subQuery = new Sql().Select("Member").From(SqlSyntax) + .Where(SqlSyntax, dto => dto.MemberGroup == memberGroup.Id); var sql = GetBaseQuery(false) //TODO: An inner join would be better, though I've read that the query optimizer will always turn a // subquery with an IN clause into an inner join anyways. .Append(new Sql("WHERE umbracoNode.id IN (" + subQuery.SQL + ")", subQuery.Arguments)) - .OrderByDescending(x => x.VersionDate) - .OrderBy(x => x.SortOrder); + .OrderByDescending(SqlSyntax, x => x.VersionDate) + .OrderBy(SqlSyntax, x => x.SortOrder); return ProcessQuery(sql); @@ -607,8 +609,8 @@ namespace Umbraco.Core.Persistence.Repositories var sql = new Sql(); sql.Select("COUNT(*)") - .From() - .Where(x => x.LoginName == username); + .From(SqlSyntax) + .Where(SqlSyntax, x => x.LoginName == username); return Database.ExecuteScalar(sql) > 0; } diff --git a/src/Umbraco.Core/Persistence/Repositories/MemberTypeRepository.cs b/src/Umbraco.Core/Persistence/Repositories/MemberTypeRepository.cs index f451b3edbb..9a1317affe 100644 --- a/src/Umbraco.Core/Persistence/Repositories/MemberTypeRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/MemberTypeRepository.cs @@ -32,7 +32,7 @@ namespace Umbraco.Core.Persistence.Repositories { var sql = GetBaseQuery(false); sql.Where(GetBaseWhereClause(), new { Id = id }); - sql.OrderByDescending(x => x.NodeId); + sql.OrderByDescending(SqlSyntax, x => x.NodeId); var dtos = Database.Fetch( @@ -55,7 +55,7 @@ namespace Umbraco.Core.Persistence.Repositories var statement = string.Join(" OR ", ids.Select(x => string.Format("umbracoNode.id='{0}'", x))); sql.Where(statement); } - sql.OrderByDescending(x => x.NodeId); + sql.OrderByDescending(SqlSyntax, x => x.NodeId); var dtos = Database.Fetch( @@ -71,7 +71,7 @@ namespace Umbraco.Core.Persistence.Repositories var subquery = translator.Translate(); var sql = GetBaseQuery(false) .Append(new Sql("WHERE umbracoNode.id IN (" + subquery.SQL + ")", subquery.Arguments)) - .OrderBy(x => x.SortOrder); + .OrderBy(SqlSyntax, x => x.SortOrder); var dtos = Database.Fetch( @@ -91,9 +91,10 @@ namespace Umbraco.Core.Persistence.Repositories if (isCount) { sql.Select("COUNT(*)") - .From() - .InnerJoin().On(left => left.NodeId, right => right.NodeId) - .Where(x => x.NodeObjectType == NodeObjectTypeId); + .From(SqlSyntax) + .InnerJoin(SqlSyntax) + .On(SqlSyntax, left => left.NodeId, right => right.NodeId) + .Where(SqlSyntax, x => x.NodeObjectType == NodeObjectTypeId); return sql; } @@ -104,13 +105,13 @@ namespace Umbraco.Core.Persistence.Repositories "cmsDataType.propertyEditorAlias", "cmsDataType.dbType", "cmsPropertyTypeGroup.id AS PropertyTypeGroupId", "cmsPropertyTypeGroup.text AS PropertyGroupName", "cmsPropertyTypeGroup.parentGroupId", "cmsPropertyTypeGroup.sortorder AS PropertyGroupSortOrder", "cmsPropertyTypeGroup.contenttypeNodeId") - .From() - .InnerJoin().On(left => left.NodeId, right => right.NodeId) - .LeftJoin().On(left => left.ContentTypeId, right => right.NodeId) - .LeftJoin().On(left => left.PropertyTypeId, right => right.Id) - .LeftJoin().On(left => left.DataTypeId, right => right.DataTypeId) - .LeftJoin().On(left => left.ContentTypeNodeId, right => right.NodeId) - .Where(x => x.NodeObjectType == NodeObjectTypeId); + .From(SqlSyntax) + .InnerJoin(SqlSyntax).On(SqlSyntax, left => left.NodeId, right => right.NodeId) + .LeftJoin(SqlSyntax).On(SqlSyntax, left => left.ContentTypeId, right => right.NodeId) + .LeftJoin(SqlSyntax).On(SqlSyntax, left => left.PropertyTypeId, right => right.Id) + .LeftJoin(SqlSyntax).On(SqlSyntax, left => left.DataTypeId, right => right.DataTypeId) + .LeftJoin(SqlSyntax).On(SqlSyntax, left => left.ContentTypeNodeId, right => right.NodeId) + .Where(SqlSyntax, x => x.NodeObjectType == NodeObjectTypeId); return sql; } @@ -118,13 +119,13 @@ namespace Umbraco.Core.Persistence.Repositories { var sql = new Sql() .Select("DISTINCT(umbracoNode.id)") - .From() - .InnerJoin().On(left => left.NodeId, right => right.NodeId) - .LeftJoin().On(left => left.ContentTypeId, right => right.NodeId) - .LeftJoin().On(left => left.PropertyTypeId, right => right.Id) - .LeftJoin().On(left => left.DataTypeId, right => right.DataTypeId) - .LeftJoin().On(left => left.ContentTypeNodeId, right => right.NodeId) - .Where(x => x.NodeObjectType == NodeObjectTypeId); + .From(SqlSyntax) + .InnerJoin(SqlSyntax).On(SqlSyntax, left => left.NodeId, right => right.NodeId) + .LeftJoin(SqlSyntax).On(SqlSyntax, left => left.ContentTypeId, right => right.NodeId) + .LeftJoin(SqlSyntax).On(SqlSyntax, left => left.PropertyTypeId, right => right.Id) + .LeftJoin(SqlSyntax).On(SqlSyntax, left => left.DataTypeId, right => right.DataTypeId) + .LeftJoin(SqlSyntax).On(SqlSyntax, left => left.ContentTypeNodeId, right => right.NodeId) + .Where(SqlSyntax, x => x.NodeObjectType == NodeObjectTypeId); return sql; } diff --git a/src/Umbraco.Core/Persistence/Repositories/NotificationsRepository.cs b/src/Umbraco.Core/Persistence/Repositories/NotificationsRepository.cs index a15a7e1521..50cb72a129 100644 --- a/src/Umbraco.Core/Persistence/Repositories/NotificationsRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/NotificationsRepository.cs @@ -5,6 +5,7 @@ using Umbraco.Core.Models; using Umbraco.Core.Models.EntityBase; using Umbraco.Core.Models.Membership; using Umbraco.Core.Models.Rdbms; +using Umbraco.Core.Persistence.SqlSyntax; using Umbraco.Core.Persistence.UnitOfWork; namespace Umbraco.Core.Persistence.Repositories @@ -12,21 +13,23 @@ namespace Umbraco.Core.Persistence.Repositories internal class NotificationsRepository { private readonly IDatabaseUnitOfWork _unitOfWork; + private readonly ISqlSyntaxProvider _sqlSyntax; - public NotificationsRepository(IDatabaseUnitOfWork unitOfWork) + public NotificationsRepository(IDatabaseUnitOfWork unitOfWork, ISqlSyntaxProvider sqlSyntax) { _unitOfWork = unitOfWork; + _sqlSyntax = sqlSyntax; } public IEnumerable GetUserNotifications(IUser user) { var sql = new Sql() .Select("DISTINCT umbracoNode.id, umbracoUser2NodeNotify.userId, umbracoNode.nodeObjectType, umbracoUser2NodeNotify.action") - .From() - .InnerJoin() - .On(dto => dto.NodeId, dto => dto.NodeId) - .Where(dto => dto.UserId == (int)user.Id) - .OrderBy(dto => dto.NodeId); + .From(_sqlSyntax) + .InnerJoin(_sqlSyntax) + .On(_sqlSyntax, dto => dto.NodeId, dto => dto.NodeId) + .Where(_sqlSyntax, dto => dto.UserId == (int)user.Id) + .OrderBy(_sqlSyntax, dto => dto.NodeId); var dtos = _unitOfWork.Database.Fetch(sql); //need to map the results @@ -37,11 +40,11 @@ namespace Umbraco.Core.Persistence.Repositories { var sql = new Sql() .Select("DISTINCT umbracoNode.id, umbracoUser2NodeNotify.userId, umbracoNode.nodeObjectType, umbracoUser2NodeNotify.action") - .From() - .InnerJoin() - .On(dto => dto.NodeId, dto => dto.NodeId) - .Where(dto => dto.NodeId == entity.Id) - .OrderBy(dto => dto.NodeId); + .From(_sqlSyntax) + .InnerJoin(_sqlSyntax) + .On(_sqlSyntax, dto => dto.NodeId, dto => dto.NodeId) + .Where(_sqlSyntax, dto => dto.NodeId == entity.Id) + .OrderBy(_sqlSyntax, dto => dto.NodeId); var dtos = _unitOfWork.Database.Fetch(sql); //need to map the results @@ -68,8 +71,8 @@ namespace Umbraco.Core.Persistence.Repositories { var sql = new Sql() .Select("DISTINCT nodeObjectType") - .From() - .Where(nodeDto => nodeDto.NodeId == entity.Id); + .From(_sqlSyntax) + .Where(_sqlSyntax, nodeDto => nodeDto.NodeId == entity.Id); var nodeType = _unitOfWork.Database.ExecuteScalar(sql); var dto = new User2NodeNotifyDto() diff --git a/src/Umbraco.Core/Persistence/Repositories/PermissionRepository.cs b/src/Umbraco.Core/Persistence/Repositories/PermissionRepository.cs index 8a2cd21acd..a404a2bac0 100644 --- a/src/Umbraco.Core/Persistence/Repositories/PermissionRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/PermissionRepository.cs @@ -79,7 +79,7 @@ namespace Umbraco.Core.Persistence.Repositories var sql = new Sql(); sql.Select("*") - .From() + .From(_sqlSyntax) .Where(whereBuilder.ToString()); //ToArray() to ensure it's all fetched from the db once. @@ -104,9 +104,9 @@ namespace Umbraco.Core.Persistence.Repositories { var sql = new Sql(); sql.Select("*") - .From() - .Where(dto => dto.NodeId == entityId) - .OrderBy(dto => dto.NodeId); + .From(_sqlSyntax) + .Where(_sqlSyntax, dto => dto.NodeId == entityId) + .OrderBy(_sqlSyntax, dto => dto.NodeId); //ToArray() to ensure it's all fetched from the db once. var result = _unitOfWork.Database.Fetch(sql).ToArray(); @@ -144,7 +144,7 @@ namespace Umbraco.Core.Persistence.Repositories } } - _unitOfWork.Database.BulkInsertRecords(toInsert, trans); + _unitOfWork.Database.BulkInsertRecords(_sqlSyntax, toInsert, trans); trans.Complete(); @@ -180,7 +180,7 @@ namespace Umbraco.Core.Persistence.Repositories UserId = id }).ToArray(); - _unitOfWork.Database.BulkInsertRecords(actions, trans); + _unitOfWork.Database.BulkInsertRecords(_sqlSyntax, actions, trans); trans.Complete(); @@ -212,7 +212,7 @@ namespace Umbraco.Core.Persistence.Repositories UserId = p.UserId }).ToArray(); - _unitOfWork.Database.BulkInsertRecords(actions, trans); + _unitOfWork.Database.BulkInsertRecords(_sqlSyntax, actions, trans); trans.Complete(); diff --git a/src/Umbraco.Core/Persistence/Repositories/PetaPocoRepositoryBase.cs b/src/Umbraco.Core/Persistence/Repositories/PetaPocoRepositoryBase.cs index 872b7f1d14..aa442d8eaf 100644 --- a/src/Umbraco.Core/Persistence/Repositories/PetaPocoRepositoryBase.cs +++ b/src/Umbraco.Core/Persistence/Repositories/PetaPocoRepositoryBase.cs @@ -19,6 +19,15 @@ namespace Umbraco.Core.Persistence.Repositories { public ISqlSyntaxProvider SqlSyntax { get; private set; } + /// + /// Used to create a new query instance + /// + /// + public override Query Query + { + get { return new Query(SqlSyntax); } + } + protected PetaPocoRepositoryBase(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger, ISqlSyntaxProvider sqlSyntax) : base(work, cache, logger) { diff --git a/src/Umbraco.Core/Persistence/Repositories/RecycleBinRepository.cs b/src/Umbraco.Core/Persistence/Repositories/RecycleBinRepository.cs index 0599afce82..970fee39a7 100644 --- a/src/Umbraco.Core/Persistence/Repositories/RecycleBinRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/RecycleBinRepository.cs @@ -26,7 +26,7 @@ namespace Umbraco.Core.Persistence.Repositories public virtual IEnumerable GetEntitiesInRecycleBin() { - return GetByQuery(new Query().Where(entity => entity.Trashed)); + return GetByQuery(Query.Where(entity => entity.Trashed)); } /// @@ -155,10 +155,10 @@ namespace Umbraco.Core.Persistence.Repositories //Alias: Constants.Conventions.Media.File and PropertyEditorAlias: Constants.PropertyEditors.UploadField var sql = new Sql(); sql.Select("DISTINCT(dataNvarchar)") - .From() - .InnerJoin().On(left => left.NodeId, right => right.NodeId) - .InnerJoin().On(left => left.PropertyTypeId, right => right.Id) - .InnerJoin().On(left => left.DataTypeId, right => right.DataTypeId) + .From(SqlSyntax) + .InnerJoin(SqlSyntax).On(SqlSyntax, left => left.NodeId, right => right.NodeId) + .InnerJoin(SqlSyntax).On(SqlSyntax, left => left.PropertyTypeId, right => right.Id) + .InnerJoin(SqlSyntax).On(SqlSyntax, left => left.DataTypeId, right => right.DataTypeId) .Where("umbracoNode.trashed = '1' AND umbracoNode.nodeObjectType = @NodeObjectType AND dataNvarchar IS NOT NULL AND (cmsPropertyType.Alias = @FileAlias OR cmsDataType.propertyEditorAlias = @PropertyEditorAlias)", new { FileAlias = Constants.Conventions.Media.File, NodeObjectType = NodeObjectTypeId, PropertyEditorAlias = Constants.PropertyEditors.UploadFieldAlias }); diff --git a/src/Umbraco.Core/Persistence/Repositories/RelationRepository.cs b/src/Umbraco.Core/Persistence/Repositories/RelationRepository.cs index 69e0307c09..5140b7323a 100644 --- a/src/Umbraco.Core/Persistence/Repositories/RelationRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/RelationRepository.cs @@ -94,7 +94,7 @@ namespace Umbraco.Core.Persistence.Repositories { var sql = new Sql(); sql.Select(isCount ? "COUNT(*)" : "*") - .From(); + .From(SqlSyntax); return sql; } diff --git a/src/Umbraco.Core/Persistence/Repositories/RelationTypeRepository.cs b/src/Umbraco.Core/Persistence/Repositories/RelationTypeRepository.cs index 228674d829..276ec64d84 100644 --- a/src/Umbraco.Core/Persistence/Repositories/RelationTypeRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/RelationTypeRepository.cs @@ -86,7 +86,7 @@ namespace Umbraco.Core.Persistence.Repositories { var sql = new Sql(); sql.Select(isCount ? "COUNT(*)" : "*") - .From(); + .From(SqlSyntax); return sql; } diff --git a/src/Umbraco.Core/Persistence/Repositories/RepositoryBase.cs b/src/Umbraco.Core/Persistence/Repositories/RepositoryBase.cs index a6bbff353a..2f875cce50 100644 --- a/src/Umbraco.Core/Persistence/Repositories/RepositoryBase.cs +++ b/src/Umbraco.Core/Persistence/Repositories/RepositoryBase.cs @@ -80,6 +80,12 @@ namespace Umbraco.Core.Persistence.Repositories { } + /// + /// Used to create a new query instance + /// + /// + public abstract Query Query { get; } + #region IRepository Members /// @@ -169,7 +175,7 @@ namespace Umbraco.Core.Persistence.Repositories if (allEntities.Any()) { //Get count of all entities of current type (TEntity) to ensure cached result is correct - var query = Query.Builder.Where(x => x.Id != 0); + var query = Query.Where(x => x.Id != 0); int totalCount = PerformCount(query); if (allEntities.Count() == totalCount) diff --git a/src/Umbraco.Core/Persistence/Repositories/ServerRegistrationRepository.cs b/src/Umbraco.Core/Persistence/Repositories/ServerRegistrationRepository.cs index 020ae2e9cf..bd6a463739 100644 --- a/src/Umbraco.Core/Persistence/Repositories/ServerRegistrationRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/ServerRegistrationRepository.cs @@ -77,7 +77,7 @@ namespace Umbraco.Core.Persistence.Repositories { var sql = new Sql(); sql.Select(isCount ? "COUNT(*)" : "*") - .From(); + .From(SqlSyntax); return sql; } diff --git a/src/Umbraco.Core/Persistence/Repositories/SimpleGetRepository.cs b/src/Umbraco.Core/Persistence/Repositories/SimpleGetRepository.cs index 63527c7fb9..a88672ea6f 100644 --- a/src/Umbraco.Core/Persistence/Repositories/SimpleGetRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/SimpleGetRepository.cs @@ -56,7 +56,7 @@ namespace Umbraco.Core.Persistence.Repositories protected override IEnumerable PerformGetAll(params TId[] ids) { - var sql = new Sql().From(); + var sql = new Sql().From(SqlSyntax); if (ids.Any()) { diff --git a/src/Umbraco.Core/Persistence/Repositories/TagRepository.cs b/src/Umbraco.Core/Persistence/Repositories/TagRepository.cs index 14e32d6f9c..d44aa41f60 100644 --- a/src/Umbraco.Core/Persistence/Repositories/TagRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/TagRepository.cs @@ -96,7 +96,7 @@ namespace Umbraco.Core.Persistence.Repositories var sql = new Sql(); if (isCount) { - sql.Select("COUNT(*)").From(); + sql.Select("COUNT(*)").From(SqlSyntax); } else { @@ -105,10 +105,10 @@ namespace Umbraco.Core.Persistence.Repositories return sql; } - private static Sql GetBaseQuery() + private Sql GetBaseQuery() { var sql = new Sql(); - sql.Select("*").From(); + sql.Select("*").From(SqlSyntax); return sql; } @@ -166,22 +166,22 @@ namespace Umbraco.Core.Persistence.Repositories { var sql = new Sql() .Select("cmsTagRelationship.nodeId, cmsPropertyType.Alias, cmsPropertyType.id as propertyTypeId, cmsTags.tag, cmsTags.id as tagId, cmsTags." + SqlSyntax.GetQuotedColumnName("group")) - .From() - .InnerJoin() - .On(left => left.TagId, right => right.Id) - .InnerJoin() - .On(left => left.NodeId, right => right.NodeId) - .InnerJoin() - .On(left => left.Id, right => right.PropertyTypeId) - .InnerJoin() - .On(left => left.NodeId, right => right.NodeId) - .Where(dto => dto.Group == tagGroup); + .From(SqlSyntax) + .InnerJoin(SqlSyntax) + .On(SqlSyntax, left => left.TagId, right => right.Id) + .InnerJoin(SqlSyntax) + .On(SqlSyntax, left => left.NodeId, right => right.NodeId) + .InnerJoin(SqlSyntax) + .On(SqlSyntax, left => left.Id, right => right.PropertyTypeId) + .InnerJoin(SqlSyntax) + .On(SqlSyntax, left => left.NodeId, right => right.NodeId) + .Where(SqlSyntax, dto => dto.Group == tagGroup); if (objectType != TaggableObjectTypes.All) { var nodeObjectType = GetNodeObjectType(objectType); sql = sql - .Where(dto => dto.NodeObjectType == nodeObjectType); + .Where(SqlSyntax, dto => dto.NodeObjectType == nodeObjectType); } return CreateTaggedEntityCollection( @@ -192,27 +192,27 @@ namespace Umbraco.Core.Persistence.Repositories { var sql = new Sql() .Select("cmsTagRelationship.nodeId, cmsPropertyType.Alias, cmsPropertyType.id as propertyTypeId, cmsTags.tag, cmsTags.id as tagId, cmsTags." + SqlSyntax.GetQuotedColumnName("group")) - .From() - .InnerJoin() - .On(left => left.TagId, right => right.Id) - .InnerJoin() - .On(left => left.NodeId, right => right.NodeId) - .InnerJoin() - .On(left => left.Id, right => right.PropertyTypeId) - .InnerJoin() - .On(left => left.NodeId, right => right.NodeId) - .Where(dto => dto.Tag == tag); + .From(SqlSyntax) + .InnerJoin(SqlSyntax) + .On(SqlSyntax, left => left.TagId, right => right.Id) + .InnerJoin(SqlSyntax) + .On(SqlSyntax, left => left.NodeId, right => right.NodeId) + .InnerJoin(SqlSyntax) + .On(SqlSyntax, left => left.Id, right => right.PropertyTypeId) + .InnerJoin(SqlSyntax) + .On(SqlSyntax, left => left.NodeId, right => right.NodeId) + .Where(SqlSyntax, dto => dto.Tag == tag); if (objectType != TaggableObjectTypes.All) { var nodeObjectType = GetNodeObjectType(objectType); sql = sql - .Where(dto => dto.NodeObjectType == nodeObjectType); + .Where(SqlSyntax, dto => dto.NodeObjectType == nodeObjectType); } if (tagGroup.IsNullOrWhiteSpace() == false) { - sql = sql.Where(dto => dto.Group == tagGroup); + sql = sql.Where(SqlSyntax, dto => dto.Group == tagGroup); } return CreateTaggedEntityCollection( @@ -242,16 +242,16 @@ namespace Umbraco.Core.Persistence.Repositories sql = ApplyRelationshipJoinToTagsQuery(sql); sql = sql - .InnerJoin() - .On(left => left.NodeId, right => right.NodeId) - .InnerJoin() - .On(left => left.NodeId, right => right.NodeId); + .InnerJoin(SqlSyntax) + .On(SqlSyntax, left => left.NodeId, right => right.NodeId) + .InnerJoin(SqlSyntax) + .On(SqlSyntax, left => left.NodeId, right => right.NodeId); if (objectType != TaggableObjectTypes.All) { var nodeObjectType = GetNodeObjectType(objectType); sql = sql - .Where(dto => dto.NodeObjectType == nodeObjectType); + .Where(SqlSyntax, dto => dto.NodeObjectType == nodeObjectType); } sql = ApplyGroupFilterToTagsQuery(sql, group); @@ -268,7 +268,7 @@ namespace Umbraco.Core.Persistence.Repositories sql = ApplyRelationshipJoinToTagsQuery(sql); sql = sql - .Where(dto => dto.NodeId == contentId); + .Where(SqlSyntax, dto => dto.NodeId == contentId); sql = ApplyGroupFilterToTagsQuery(sql, group); @@ -282,10 +282,10 @@ namespace Umbraco.Core.Persistence.Repositories sql = ApplyRelationshipJoinToTagsQuery(sql); sql = sql - .InnerJoin() - .On(left => left.Id, right => right.PropertyTypeId) - .Where(dto => dto.NodeId == contentId) - .Where(dto => dto.Alias == propertyTypeAlias); + .InnerJoin(SqlSyntax) + .On(SqlSyntax, left => left.Id, right => right.PropertyTypeId) + .Where(SqlSyntax, dto => dto.NodeId == contentId) + .Where(SqlSyntax, dto => dto.Alias == propertyTypeAlias); sql = ApplyGroupFilterToTagsQuery(sql, group); @@ -311,16 +311,16 @@ namespace Umbraco.Core.Persistence.Repositories private Sql ApplyRelationshipJoinToTagsQuery(Sql sql) { return sql - .From() - .InnerJoin() - .On(left => left.TagId, right => right.Id); + .From(SqlSyntax) + .InnerJoin(SqlSyntax) + .On(SqlSyntax, left => left.TagId, right => right.Id); } private Sql ApplyGroupFilterToTagsQuery(Sql sql, string group) { if (!group.IsNullOrWhiteSpace()) { - sql = sql.Where(dto => dto.Group == group); + sql = sql.Where(SqlSyntax, dto => dto.Group == group); } return sql; diff --git a/src/Umbraco.Core/Persistence/Repositories/TaskRepository.cs b/src/Umbraco.Core/Persistence/Repositories/TaskRepository.cs index f30f945851..b3be250ebc 100644 --- a/src/Umbraco.Core/Persistence/Repositories/TaskRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/TaskRepository.cs @@ -146,7 +146,7 @@ namespace Umbraco.Core.Persistence.Repositories var sql = GetGetTasksQuery(assignedUser, ownerUser, taskTypeAlias, includeClosed); if (itemId.HasValue) { - sql.Where(dto => dto.NodeId == itemId.Value); + sql.Where(SqlSyntax, dto => dto.NodeId == itemId.Value); } var dtos = Database.Fetch(sql); @@ -160,7 +160,7 @@ namespace Umbraco.Core.Persistence.Repositories if (includeClosed == false) { - sql.Where(dto => dto.Closed == false); + sql.Where(SqlSyntax, dto => dto.Closed == false); } if (taskTypeAlias.IsNullOrWhiteSpace() == false) { @@ -168,11 +168,11 @@ namespace Umbraco.Core.Persistence.Repositories } if (ownerUser.HasValue) { - sql.Where(dto => dto.ParentUserId == ownerUser.Value); + sql.Where(SqlSyntax, dto => dto.ParentUserId == ownerUser.Value); } if (assignedUser.HasValue) { - sql.Where(dto => dto.UserId == assignedUser.Value); + sql.Where(SqlSyntax, dto => dto.UserId == assignedUser.Value); } return sql; } diff --git a/src/Umbraco.Core/Persistence/Repositories/TemplateRepository.cs b/src/Umbraco.Core/Persistence/Repositories/TemplateRepository.cs index ad79cfc44a..dab82bc154 100644 --- a/src/Umbraco.Core/Persistence/Repositories/TemplateRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/TemplateRepository.cs @@ -61,7 +61,7 @@ namespace Umbraco.Core.Persistence.Repositories } else { - sql.Where(x => x.NodeObjectType == NodeObjectTypeId); + sql.Where(SqlSyntax, x => x.NodeObjectType == NodeObjectTypeId); } var dtos = Database.Fetch(sql); @@ -72,10 +72,10 @@ namespace Umbraco.Core.Persistence.Repositories // later to populate the template item's properties var childIdsSql = new Sql() .Select("nodeId,alias,parentID") - .From() - .InnerJoin() - .On(dto => dto.NodeId, dto => dto.NodeId) - .Where(t => t.ParentId > 0); + .From(SqlSyntax) + .InnerJoin(SqlSyntax) + .On(SqlSyntax, dto => dto.NodeId, dto => dto.NodeId) + .Where(SqlSyntax, t => t.ParentId > 0); var childIds = Database.Fetch(childIdsSql) .Select(x => new UmbracoEntity { @@ -101,10 +101,10 @@ namespace Umbraco.Core.Persistence.Repositories // later to populate the template item's properties var childIdsSql = new Sql() .Select("nodeId,alias,parentID") - .From() - .InnerJoin() - .On(dto => dto.NodeId, dto => dto.NodeId) - .Where(t => t.ParentId > 0); + .From(SqlSyntax) + .InnerJoin(SqlSyntax) + .On(SqlSyntax, dto => dto.NodeId, dto => dto.NodeId) + .Where(SqlSyntax, t => t.ParentId > 0); var childIds = Database.Fetch(childIdsSql) .Select(x => new UmbracoEntity { @@ -124,10 +124,10 @@ namespace Umbraco.Core.Persistence.Repositories { var sql = new Sql(); sql.Select(isCount ? "COUNT(*)" : "*") - .From() - .InnerJoin() - .On(left => left.NodeId, right => right.NodeId) - .Where(x => x.NodeObjectType == NodeObjectTypeId); + .From(SqlSyntax) + .InnerJoin(SqlSyntax) + .On(SqlSyntax, left => left.NodeId, right => right.NodeId) + .Where(SqlSyntax, x => x.NodeObjectType == NodeObjectTypeId); return sql; } @@ -293,7 +293,7 @@ namespace Umbraco.Core.Persistence.Repositories // to it, then in the PersistDeletedTemplate we wouldn't recurse the underlying function, we'd just call // PersistDeletedItem with a Template object and clear it's cache. - var sql = GetBaseQuery(false).Where(dto => dto.ParentId > 0 || dto.NodeId == entity.Id); + var sql = GetBaseQuery(false).Where(SqlSyntax, dto => dto.ParentId > 0 || dto.NodeId == entity.Id); var dtos = Database.Fetch(sql); @@ -434,7 +434,7 @@ namespace Umbraco.Core.Persistence.Repositories public ITemplate Get(string alias) { - var sql = GetBaseQuery(false).Where(x => x.Alias == alias); + var sql = GetBaseQuery(false).Where(SqlSyntax, x => x.Alias == alias); var dto = Database.Fetch(sql).FirstOrDefault(); @@ -471,12 +471,12 @@ namespace Umbraco.Core.Persistence.Repositories List found; if (masterTemplateId == -1) { - var sql = GetBaseQuery(false).Where(x => x.ParentId <= 0); + var sql = GetBaseQuery(false).Where(SqlSyntax, x => x.ParentId <= 0); found = Database.Fetch(sql); } else { - var sql = GetBaseQuery(false).Where(x => x.ParentId == masterTemplateId); + var sql = GetBaseQuery(false).Where(SqlSyntax, x => x.ParentId == masterTemplateId); found = Database.Fetch(sql); } @@ -684,7 +684,7 @@ namespace Umbraco.Core.Persistence.Repositories private bool AliasAlreadExists(ITemplate template) { - var sql = GetBaseQuery(true).Where(x => x.Alias == template.Alias && x.NodeId != template.Id); + var sql = GetBaseQuery(true).Where(SqlSyntax, x => x.Alias == template.Alias && x.NodeId != template.Id); var count = Database.ExecuteScalar(sql); return count > 0; } diff --git a/src/Umbraco.Core/Persistence/Repositories/UserRepository.cs b/src/Umbraco.Core/Persistence/Repositories/UserRepository.cs index fb66dc7ade..d8ff2aeee2 100644 --- a/src/Umbraco.Core/Persistence/Repositories/UserRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/UserRepository.cs @@ -87,7 +87,7 @@ namespace Umbraco.Core.Persistence.Repositories var sql = new Sql(); if (isCount) { - sql.Select("COUNT(*)").From(); + sql.Select("COUNT(*)").From(SqlSyntax); } else { @@ -96,13 +96,13 @@ namespace Umbraco.Core.Persistence.Repositories return sql; } - private static Sql GetBaseQuery(string columns) + private Sql GetBaseQuery(string columns) { var sql = new Sql(); sql.Select(columns) - .From() - .LeftJoin() - .On(left => left.Id, right => right.UserId); + .From(SqlSyntax) + .LeftJoin(SqlSyntax) + .On(SqlSyntax, left => left.Id, right => right.UserId); return sql; } @@ -247,8 +247,8 @@ namespace Umbraco.Core.Persistence.Repositories var sql = new Sql(); sql.Select("COUNT(*)") - .From() - .Where(x => x.UserName == username); + .From(SqlSyntax) + .Where(SqlSyntax, x => x.UserName == username); return Database.ExecuteScalar(sql) > 0; } @@ -295,7 +295,7 @@ namespace Umbraco.Core.Persistence.Repositories if (orderBy == null) throw new ArgumentNullException("orderBy"); var sql = new Sql(); - sql.Select("*").From(); + sql.Select("*").From(SqlSyntax); Sql resultQuery; if (query != null) diff --git a/src/Umbraco.Core/Persistence/Repositories/UserTypeRepository.cs b/src/Umbraco.Core/Persistence/Repositories/UserTypeRepository.cs index 1fd94ca357..0adebb288c 100644 --- a/src/Umbraco.Core/Persistence/Repositories/UserTypeRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/UserTypeRepository.cs @@ -41,7 +41,7 @@ namespace Umbraco.Core.Persistence.Repositories } else { - sql.Where(x => x.Id >= 0); + sql.Where(SqlSyntax, x => x.Id >= 0); } var dtos = Database.Fetch(sql); @@ -68,7 +68,7 @@ namespace Umbraco.Core.Persistence.Repositories { var sql = new Sql(); sql.Select(isCount ? "COUNT(*)" : "*") - .From(); + .From(SqlSyntax); return sql; } diff --git a/src/Umbraco.Core/Persistence/Repositories/VersionableRepositoryBase.cs b/src/Umbraco.Core/Persistence/Repositories/VersionableRepositoryBase.cs index 30a36e4a89..1fd4af1c8e 100644 --- a/src/Umbraco.Core/Persistence/Repositories/VersionableRepositoryBase.cs +++ b/src/Umbraco.Core/Persistence/Repositories/VersionableRepositoryBase.cs @@ -35,14 +35,14 @@ namespace Umbraco.Core.Persistence.Repositories { var sql = new Sql(); sql.Select("*") - .From() - .InnerJoin() - .On(left => left.NodeId, right => right.NodeId) - .InnerJoin() - .On(left => left.NodeId, right => right.NodeId) - .Where(x => x.NodeObjectType == NodeObjectTypeId) - .Where(x => x.NodeId == id) - .OrderByDescending(x => x.VersionDate); + .From(SqlSyntax) + .InnerJoin(SqlSyntax) + .On(SqlSyntax, left => left.NodeId, right => right.NodeId) + .InnerJoin(SqlSyntax) + .On(SqlSyntax, left => left.NodeId, right => right.NodeId) + .Where(SqlSyntax, x => x.NodeObjectType == NodeObjectTypeId) + .Where(SqlSyntax, x => x.NodeId == id) + .OrderByDescending(SqlSyntax, x => x.VersionDate); var dtos = Database.Fetch(sql); foreach (var dto in dtos) @@ -110,21 +110,21 @@ namespace Umbraco.Core.Persistence.Repositories if (contentTypeAlias.IsNullOrWhiteSpace()) { sql.Select("COUNT(*)") - .From() - .Where(x => x.NodeObjectType == NodeObjectTypeId) - .Where(x => x.Path.Contains(pathMatch)); + .From(SqlSyntax) + .Where(SqlSyntax, x => x.NodeObjectType == NodeObjectTypeId) + .Where(SqlSyntax, x => x.Path.Contains(pathMatch)); } else { sql.Select("COUNT(*)") - .From() - .InnerJoin() - .On(left => left.NodeId, right => right.NodeId) - .InnerJoin() - .On(left => left.NodeId, right => right.ContentTypeId) - .Where(x => x.NodeObjectType == NodeObjectTypeId) - .Where(x => x.Path.Contains(pathMatch)) - .Where(x => x.Alias == contentTypeAlias); + .From(SqlSyntax) + .InnerJoin(SqlSyntax) + .On(SqlSyntax, left => left.NodeId, right => right.NodeId) + .InnerJoin(SqlSyntax) + .On(SqlSyntax, left => left.NodeId, right => right.ContentTypeId) + .Where(SqlSyntax, x => x.NodeObjectType == NodeObjectTypeId) + .Where(SqlSyntax, x => x.Path.Contains(pathMatch)) + .Where(SqlSyntax, x => x.Alias == contentTypeAlias); } return Database.ExecuteScalar(sql); @@ -136,21 +136,21 @@ namespace Umbraco.Core.Persistence.Repositories if (contentTypeAlias.IsNullOrWhiteSpace()) { sql.Select("COUNT(*)") - .From() - .Where(x => x.NodeObjectType == NodeObjectTypeId) - .Where(x => x.ParentId == parentId); + .From(SqlSyntax) + .Where(SqlSyntax, x => x.NodeObjectType == NodeObjectTypeId) + .Where(SqlSyntax, x => x.ParentId == parentId); } else { sql.Select("COUNT(*)") - .From() - .InnerJoin() - .On(left => left.NodeId, right => right.NodeId) - .InnerJoin() - .On(left => left.NodeId, right => right.ContentTypeId) - .Where(x => x.NodeObjectType == NodeObjectTypeId) - .Where(x => x.ParentId == parentId) - .Where(x => x.Alias == contentTypeAlias); + .From(SqlSyntax) + .InnerJoin(SqlSyntax) + .On(SqlSyntax, left => left.NodeId, right => right.NodeId) + .InnerJoin(SqlSyntax) + .On(SqlSyntax, left => left.NodeId, right => right.ContentTypeId) + .Where(SqlSyntax, x => x.NodeObjectType == NodeObjectTypeId) + .Where(SqlSyntax, x => x.ParentId == parentId) + .Where(SqlSyntax, x => x.Alias == contentTypeAlias); } return Database.ExecuteScalar(sql); @@ -167,19 +167,19 @@ namespace Umbraco.Core.Persistence.Repositories if (contentTypeAlias.IsNullOrWhiteSpace()) { sql.Select("COUNT(*)") - .From() - .Where(x => x.NodeObjectType == NodeObjectTypeId); + .From(SqlSyntax) + .Where(SqlSyntax, x => x.NodeObjectType == NodeObjectTypeId); } else { sql.Select("COUNT(*)") - .From() - .InnerJoin() - .On(left => left.NodeId, right => right.NodeId) - .InnerJoin() - .On(left => left.NodeId, right => right.ContentTypeId) - .Where(x => x.NodeObjectType == NodeObjectTypeId) - .Where(x => x.Alias == contentTypeAlias); + .From(SqlSyntax) + .InnerJoin(SqlSyntax) + .On(SqlSyntax, left => left.NodeId, right => right.NodeId) + .InnerJoin(SqlSyntax) + .On(SqlSyntax, left => left.NodeId, right => right.ContentTypeId) + .Where(SqlSyntax, x => x.NodeObjectType == NodeObjectTypeId) + .Where(SqlSyntax, x => x.Alias == contentTypeAlias); } return Database.ExecuteScalar(sql); @@ -287,7 +287,7 @@ namespace Umbraco.Core.Persistence.Repositories // Get base query var sqlBase = GetBaseQuery(false); - if (query == null) query = new Query(); + if (query == null) query = Query; var translator = new SqlTranslator(sqlBase, query); var sqlQuery = translator.Translate(); diff --git a/src/Umbraco.Core/Persistence/RepositoryFactory.cs b/src/Umbraco.Core/Persistence/RepositoryFactory.cs index 60c3e4772b..7c9e69850d 100644 --- a/src/Umbraco.Core/Persistence/RepositoryFactory.cs +++ b/src/Umbraco.Core/Persistence/RepositoryFactory.cs @@ -37,6 +37,11 @@ namespace Umbraco.Core.Persistence #endregion + internal virtual NotificationsRepository CreateNotificationsRepository(IDatabaseUnitOfWork uow) + { + return new NotificationsRepository(uow, _sqlSyntax); + } + public virtual ITaskRepository CreateTaskRepository(IDatabaseUnitOfWork uow) { return new TaskRepository(uow, @@ -235,7 +240,7 @@ namespace Umbraco.Core.Persistence public virtual IEntityRepository CreateEntityRepository(IDatabaseUnitOfWork uow) { - return new EntityRepository(uow); + return new EntityRepository(uow, _sqlSyntax); } public IDomainRepository CreateDomainRepository(IDatabaseUnitOfWork uow) diff --git a/src/Umbraco.Core/Persistence/SqlSyntax/SqlSyntaxContext.cs b/src/Umbraco.Core/Persistence/SqlSyntax/SqlSyntaxContext.cs deleted file mode 100644 index b50acc5026..0000000000 --- a/src/Umbraco.Core/Persistence/SqlSyntax/SqlSyntaxContext.cs +++ /dev/null @@ -1,27 +0,0 @@ -using System; - -namespace Umbraco.Core.Persistence.SqlSyntax -{ - /// - /// Singleton to handle the configuration of a SqlSyntaxProvider - /// - [Obsolete("This should not be used, the ISqlSyntaxProvider is part of the DatabaseContext or should be injected into your services as a constructor parameter")] - public static class SqlSyntaxContext - { - private static ISqlSyntaxProvider _sqlSyntaxProvider; - - public static ISqlSyntaxProvider SqlSyntaxProvider - { - get - { - if(_sqlSyntaxProvider == null) - { - throw new ArgumentNullException("SqlSyntaxProvider", - "You must set the singleton 'Umbraco.Core.Persistence.SqlSyntax.SqlSyntaxContext' to use an sql syntax provider"); - } - return _sqlSyntaxProvider; - } - set { _sqlSyntaxProvider = value; } - } - } -} \ No newline at end of file diff --git a/src/Umbraco.Core/Persistence/UmbracoDatabase.cs b/src/Umbraco.Core/Persistence/UmbracoDatabase.cs index 95c723deaa..d6d6246902 100644 --- a/src/Umbraco.Core/Persistence/UmbracoDatabase.cs +++ b/src/Umbraco.Core/Persistence/UmbracoDatabase.cs @@ -28,30 +28,6 @@ namespace Umbraco.Core.Persistence get { return _instanceId; } } - [Obsolete("Use the other constructor specifying an ILogger instead")] - public UmbracoDatabase(IDbConnection connection) - : this(connection, LoggerResolver.Current.Logger) - { - } - - [Obsolete("Use the other constructor specifying an ILogger instead")] - public UmbracoDatabase(string connectionString, string providerName) - : this(connectionString, providerName, LoggerResolver.Current.Logger) - { - } - - [Obsolete("Use the other constructor specifying an ILogger instead")] - public UmbracoDatabase(string connectionString, DbProviderFactory provider) - : this(connectionString, provider, LoggerResolver.Current.Logger) - { - } - - [Obsolete("Use the other constructor specifying an ILogger instead")] - public UmbracoDatabase(string connectionStringName) - : this(connectionStringName, LoggerResolver.Current.Logger) - { - } - public UmbracoDatabase(IDbConnection connection, ILogger logger) : base(connection) { diff --git a/src/Umbraco.Core/Services/ContentService.cs b/src/Umbraco.Core/Services/ContentService.cs index d9c9c71d3b..b5cf2036f7 100644 --- a/src/Umbraco.Core/Services/ContentService.cs +++ b/src/Umbraco.Core/Services/ContentService.cs @@ -345,7 +345,7 @@ namespace Umbraco.Core.Services { using (var repository = RepositoryFactory.CreateContentRepository(UowProvider.GetUnitOfWork())) { - var query = Query.Builder.Where(x => x.Key == key); + var query = repository.Query.Where(x => x.Key == key); var contents = repository.GetByQuery(query); return contents.SingleOrDefault(); } @@ -360,7 +360,7 @@ namespace Umbraco.Core.Services { using (var repository = RepositoryFactory.CreateContentRepository(UowProvider.GetUnitOfWork())) { - var query = Query.Builder.Where(x => x.ContentTypeId == id); + var query = repository.Query.Where(x => x.ContentTypeId == id); var contents = repository.GetByQuery(query); return contents; @@ -371,7 +371,7 @@ namespace Umbraco.Core.Services { using (var repository = RepositoryFactory.CreateContentRepository(UowProvider.GetUnitOfWork())) { - var query = Query.Builder.Where(x => x.ContentTypeId == id); + var query = repository.Query.Where(x => x.ContentTypeId == id); var contents = repository.GetByPublishedVersion(query); return contents; @@ -387,7 +387,7 @@ namespace Umbraco.Core.Services { using (var repository = RepositoryFactory.CreateContentRepository(UowProvider.GetUnitOfWork())) { - var query = Query.Builder.Where(x => x.Level == level && !x.Path.StartsWith(Constants.System.RecycleBinContent.ToInvariantString())); + var query = repository.Query.Where(x => x.Level == level && !x.Path.StartsWith(Constants.System.RecycleBinContent.ToInvariantString())); var contents = repository.GetByQuery(query); return contents; @@ -459,7 +459,7 @@ namespace Umbraco.Core.Services { using (var repository = RepositoryFactory.CreateContentRepository(UowProvider.GetUnitOfWork())) { - var query = Query.Builder.Where(x => x.ParentId == id); + var query = repository.Query.Where(x => x.ParentId == id); var contents = repository.GetByQuery(query).OrderBy(x => x.SortOrder); return contents; @@ -485,7 +485,7 @@ namespace Umbraco.Core.Services using (var repository = RepositoryFactory.CreateContentRepository(UowProvider.GetUnitOfWork())) { - var query = Query.Builder; + var query = repository.Query; //if the id is System Root, then just get all if (id != Constants.System.Root) { @@ -515,7 +515,7 @@ namespace Umbraco.Core.Services using (var repository = RepositoryFactory.CreateContentRepository(UowProvider.GetUnitOfWork())) { - var query = Query.Builder; + var query = repository.Query; //if the id is System Root, then just get all if (id != Constants.System.Root) { @@ -537,7 +537,7 @@ namespace Umbraco.Core.Services { using (var repository = RepositoryFactory.CreateContentRepository(UowProvider.GetUnitOfWork())) { - var query = Query.Builder.Where(x => x.ParentId == parentId && x.Name.Contains(name)); + var query = repository.Query.Where(x => x.ParentId == parentId && x.Name.Contains(name)); var contents = repository.GetByQuery(query); return contents; @@ -569,7 +569,7 @@ namespace Umbraco.Core.Services using (var repository = RepositoryFactory.CreateContentRepository(UowProvider.GetUnitOfWork())) { var pathMatch = content.Path + ","; - var query = Query.Builder.Where(x => x.Path.StartsWith(pathMatch) && x.Id != content.Id); + var query = repository.Query.Where(x => x.Path.StartsWith(pathMatch) && x.Id != content.Id); var contents = repository.GetByQuery(query); return contents; @@ -619,7 +619,7 @@ namespace Umbraco.Core.Services { using (var repository = RepositoryFactory.CreateContentRepository(UowProvider.GetUnitOfWork())) { - var query = Query.Builder.Where(x => x.ParentId == Constants.System.Root); + var query = repository.Query.Where(x => x.ParentId == Constants.System.Root); var contents = repository.GetByQuery(query); return contents; @@ -634,7 +634,7 @@ namespace Umbraco.Core.Services { using (var repository = RepositoryFactory.CreateContentRepository(UowProvider.GetUnitOfWork())) { - var query = Query.Builder.Where(x => x.Trashed == false); + var query = repository.Query.Where(x => x.Trashed == false); return repository.GetByPublishedVersion(query); } } @@ -647,7 +647,7 @@ namespace Umbraco.Core.Services { using (var repository = RepositoryFactory.CreateContentRepository(UowProvider.GetUnitOfWork())) { - var query = Query.Builder.Where(x => x.Published == true && x.ExpireDate <= DateTime.Now); + var query = repository.Query.Where(x => x.Published == true && x.ExpireDate <= DateTime.Now); var contents = repository.GetByQuery(query); return contents; @@ -662,7 +662,7 @@ namespace Umbraco.Core.Services { using (var repository = RepositoryFactory.CreateContentRepository(UowProvider.GetUnitOfWork())) { - var query = Query.Builder.Where(x => x.Published == false && x.ReleaseDate <= DateTime.Now); + var query = repository.Query.Where(x => x.Published == false && x.ReleaseDate <= DateTime.Now); var contents = repository.GetByQuery(query); return contents; @@ -677,7 +677,7 @@ namespace Umbraco.Core.Services { using (var repository = RepositoryFactory.CreateContentRepository(UowProvider.GetUnitOfWork())) { - var query = Query.Builder.Where(x => x.Path.Contains(Constants.System.RecycleBinContent.ToInvariantString())); + var query = repository.Query.Where(x => x.Path.Contains(Constants.System.RecycleBinContent.ToInvariantString())); var contents = repository.GetByQuery(query); return contents; @@ -698,7 +698,7 @@ namespace Umbraco.Core.Services { using (var repository = RepositoryFactory.CreateContentRepository(UowProvider.GetUnitOfWork())) { - var query = Query.Builder.Where(x => x.ParentId == id); + var query = repository.Query.Where(x => x.ParentId == id); var count = repository.Count(query); return count; } @@ -713,7 +713,7 @@ namespace Umbraco.Core.Services { using (var repository = RepositoryFactory.CreateContentRepository(UowProvider.GetUnitOfWork())) { - var query = Query.Builder.Where(x => x.Published == true && x.Id == id && x.Trashed == false); + var query = repository.Query.Where(x => x.Published == true && x.Id == id && x.Trashed == false); int count = repository.Count(query); return count > 0; } @@ -958,7 +958,7 @@ namespace Umbraco.Core.Services { var repository = RepositoryFactory.CreateContentRepository(uow); //NOTE What about content that has the contenttype as part of its composition? - var query = Query.Builder.Where(x => x.ContentTypeId == contentTypeId); + var query = repository.Query.Where(x => x.ContentTypeId == contentTypeId); var contents = repository.GetByQuery(query).ToArray(); if (Deleting.IsRaisedEventCancelled(new DeleteEventArgs(contents), this)) @@ -968,7 +968,7 @@ namespace Umbraco.Core.Services { //Look for children of current content and move that to trash before the current content is deleted var c = content; - var childQuery = Query.Builder.Where(x => x.Path.StartsWith(c.Path)); + var childQuery = repository.Query.Where(x => x.Path.StartsWith(c.Path)); var children = repository.GetByQuery(childQuery); foreach (var child in children) @@ -1478,7 +1478,7 @@ namespace Umbraco.Core.Services { using (var repository = RepositoryFactory.CreateContentRepository(UowProvider.GetUnitOfWork())) { - var query = Query.Builder.Where(x => x.Id != content.Id && x.Path.StartsWith(content.Path) && x.Trashed == false); + var query = repository.Query.Where(x => x.Id != content.Id && x.Path.StartsWith(content.Path) && x.Trashed == false); var contents = repository.GetByPublishedVersion(query); return contents; @@ -1622,7 +1622,7 @@ namespace Umbraco.Core.Services } //Consider creating a Path query instead of recursive method: - //var query = Query.Builder.Where(x => x.Path.StartsWith(content.Path)); + //var query = repository.Query.Where(x => x.Path.StartsWith(content.Path)); var updated = new List(); var list = new List(); @@ -1911,7 +1911,7 @@ namespace Umbraco.Core.Services { using (var repository = RepositoryFactory.CreateContentTypeRepository(UowProvider.GetUnitOfWork())) { - var query = Query.Builder.Where(x => x.Alias == contentTypeAlias); + var query = repository.Query.Where(x => x.Alias == contentTypeAlias); var types = repository.GetByQuery(query); if (types.Any() == false) diff --git a/src/Umbraco.Core/Services/ContentTypeService.cs b/src/Umbraco.Core/Services/ContentTypeService.cs index 488cf6371d..ec901e3520 100644 --- a/src/Umbraco.Core/Services/ContentTypeService.cs +++ b/src/Umbraco.Core/Services/ContentTypeService.cs @@ -159,7 +159,7 @@ namespace Umbraco.Core.Services { using (var repository = RepositoryFactory.CreateContentTypeRepository(UowProvider.GetUnitOfWork())) { - var query = Query.Builder.Where(x => x.Alias == alias); + var query = repository.Query.Where(x => x.Alias == alias); var contentTypes = repository.GetByQuery(query); return contentTypes.FirstOrDefault(); @@ -188,7 +188,7 @@ namespace Umbraco.Core.Services { using (var repository = RepositoryFactory.CreateContentTypeRepository(UowProvider.GetUnitOfWork())) { - var query = Query.Builder.Where(x => x.ParentId == id); + var query = repository.Query.Where(x => x.ParentId == id); var contentTypes = repository.GetByQuery(query); return contentTypes; } @@ -223,7 +223,7 @@ namespace Umbraco.Core.Services { using (var repository = RepositoryFactory.CreateContentTypeRepository(UowProvider.GetUnitOfWork())) { - var query = Query.Builder.Where(x => x.ParentId == id); + var query = repository.Query.Where(x => x.ParentId == id); int count = repository.Count(query); return count > 0; } @@ -492,7 +492,7 @@ namespace Umbraco.Core.Services { using (var repository = RepositoryFactory.CreateMediaTypeRepository(UowProvider.GetUnitOfWork())) { - var query = Query.Builder.Where(x => x.Alias == alias); + var query = repository.Query.Where(x => x.Alias == alias); var contentTypes = repository.GetByQuery(query); return contentTypes.FirstOrDefault(); @@ -521,7 +521,7 @@ namespace Umbraco.Core.Services { using (var repository = RepositoryFactory.CreateMediaTypeRepository(UowProvider.GetUnitOfWork())) { - var query = Query.Builder.Where(x => x.ParentId == id); + var query = repository.Query.Where(x => x.ParentId == id); var contentTypes = repository.GetByQuery(query); return contentTypes; } @@ -536,7 +536,7 @@ namespace Umbraco.Core.Services { using (var repository = RepositoryFactory.CreateMediaTypeRepository(UowProvider.GetUnitOfWork())) { - var query = Query.Builder.Where(x => x.ParentId == id); + var query = repository.Query.Where(x => x.ParentId == id); int count = repository.Count(query); return count > 0; } diff --git a/src/Umbraco.Core/Services/DataTypeService.cs b/src/Umbraco.Core/Services/DataTypeService.cs index 84437e79f4..1049949761 100644 --- a/src/Umbraco.Core/Services/DataTypeService.cs +++ b/src/Umbraco.Core/Services/DataTypeService.cs @@ -35,7 +35,7 @@ namespace Umbraco.Core.Services { using (var repository = RepositoryFactory.CreateDataTypeDefinitionRepository(UowProvider.GetUnitOfWork())) { - return repository.GetByQuery(new Query().Where(x => x.Name == name)).FirstOrDefault(); + return repository.GetByQuery(repository.Query.Where(x => x.Name == name)).FirstOrDefault(); } } @@ -61,7 +61,7 @@ namespace Umbraco.Core.Services { using (var repository = RepositoryFactory.CreateDataTypeDefinitionRepository(UowProvider.GetUnitOfWork())) { - var query = Query.Builder.Where(x => x.Key == id); + var query = repository.Query.Where(x => x.Key == id); var definitions = repository.GetByQuery(query); return definitions.FirstOrDefault(); @@ -89,7 +89,7 @@ namespace Umbraco.Core.Services { using (var repository = RepositoryFactory.CreateDataTypeDefinitionRepository(UowProvider.GetUnitOfWork())) { - var query = Query.Builder.Where(x => x.PropertyEditorAlias == propertyEditorAlias); + var query = repository.Query.Where(x => x.PropertyEditorAlias == propertyEditorAlias); var definitions = repository.GetByQuery(query); return definitions; diff --git a/src/Umbraco.Core/Services/DomainService.cs b/src/Umbraco.Core/Services/DomainService.cs index f2ff88e001..295bb23859 100644 --- a/src/Umbraco.Core/Services/DomainService.cs +++ b/src/Umbraco.Core/Services/DomainService.cs @@ -47,7 +47,7 @@ namespace Umbraco.Core.Services var uow = UowProvider.GetUnitOfWork(); using (var repository = RepositoryFactory.CreateDomainRepository(uow)) { - return repository.GetByQuery(new Query().Where(x => x.DomainName.InvariantEquals(name))).FirstOrDefault(); + return repository.GetByQuery(repository.Query.Where(x => x.DomainName.InvariantEquals(name))).FirstOrDefault(); } } diff --git a/src/Umbraco.Core/Services/EntityService.cs b/src/Umbraco.Core/Services/EntityService.cs index 2bdd73288e..a0ee580f84 100644 --- a/src/Umbraco.Core/Services/EntityService.cs +++ b/src/Umbraco.Core/Services/EntityService.cs @@ -222,7 +222,7 @@ namespace Umbraco.Core.Services { using (var repository = RepositoryFactory.CreateEntityRepository(UowProvider.GetUnitOfWork())) { - var query = Query.Builder.Where(x => x.ParentId == parentId); + var query = repository.Query.Where(x => x.ParentId == parentId); var contents = repository.GetByQuery(query); return contents; @@ -240,7 +240,7 @@ namespace Umbraco.Core.Services var objectTypeId = umbracoObjectType.GetGuid(); using (var repository = RepositoryFactory.CreateEntityRepository(UowProvider.GetUnitOfWork())) { - var query = Query.Builder.Where(x => x.ParentId == parentId); + var query = repository.Query.Where(x => x.ParentId == parentId); var contents = repository.GetByQuery(query, objectTypeId); return contents; @@ -258,7 +258,7 @@ namespace Umbraco.Core.Services { var entity = repository.Get(id); var pathMatch = entity.Path + ","; - var query = Query.Builder.Where(x => x.Path.StartsWith(pathMatch) && x.Id != id); + var query = repository.Query.Where(x => x.Path.StartsWith(pathMatch) && x.Id != id); var entities = repository.GetByQuery(query); return entities; @@ -277,7 +277,7 @@ namespace Umbraco.Core.Services using (var repository = RepositoryFactory.CreateEntityRepository(UowProvider.GetUnitOfWork())) { var entity = repository.Get(id); - var query = Query.Builder.Where(x => x.Path.StartsWith(entity.Path) && x.Id != id); + var query = repository.Query.Where(x => x.Path.StartsWith(entity.Path) && x.Id != id); var entities = repository.GetByQuery(query, objectTypeId); return entities; @@ -294,7 +294,7 @@ namespace Umbraco.Core.Services var objectTypeId = umbracoObjectType.GetGuid(); using (var repository = RepositoryFactory.CreateEntityRepository(UowProvider.GetUnitOfWork())) { - var query = Query.Builder.Where(x => x.ParentId == -1); + var query = repository.Query.Where(x => x.ParentId == -1); var entities = repository.GetByQuery(query, objectTypeId); return entities; @@ -389,12 +389,9 @@ namespace Umbraco.Core.Services /// public virtual UmbracoObjectTypes GetObjectType(int id) { - using (var uow = UowProvider.GetUnitOfWork()) + using (var repo = RepositoryFactory.CreateEntityRepository(UowProvider.GetUnitOfWork())) { - var sql = new Sql().Select("nodeObjectType").From().Where(x => x.NodeId == id); - var nodeObjectTypeId = uow.Database.ExecuteScalar(sql); - var objectTypeId = nodeObjectTypeId; - return UmbracoObjectTypesExtensions.GetUmbracoObjectType(objectTypeId); + return repo.GetObjectType(id); } } @@ -405,12 +402,9 @@ namespace Umbraco.Core.Services /// public virtual UmbracoObjectTypes GetObjectType(Guid key) { - using (var uow = UowProvider.GetUnitOfWork()) + using (var repo = RepositoryFactory.CreateEntityRepository(UowProvider.GetUnitOfWork())) { - var sql = new Sql().Select("nodeObjectType").From().Where(x => x.UniqueId == key); - var nodeObjectTypeId = uow.Database.ExecuteScalar(sql); - var objectTypeId = nodeObjectTypeId; - return UmbracoObjectTypesExtensions.GetUmbracoObjectType(objectTypeId); + return repo.GetObjectType(key); } } diff --git a/src/Umbraco.Core/Services/LocalizationService.cs b/src/Umbraco.Core/Services/LocalizationService.cs index bd695b65e5..a6583269d9 100644 --- a/src/Umbraco.Core/Services/LocalizationService.cs +++ b/src/Umbraco.Core/Services/LocalizationService.cs @@ -20,23 +20,6 @@ namespace Umbraco.Core.Services { private static readonly Guid RootParentId = new Guid(Constants.Conventions.Localization.DictionaryItemRootId); - [Obsolete("Use the constructors that specify all dependencies instead")] - public LocalizationService() - : this(new RepositoryFactory(ApplicationContext.Current.ApplicationCache, LoggerResolver.Current.Logger, SqlSyntaxContext.SqlSyntaxProvider, UmbracoConfig.For.UmbracoSettings())) - { } - - [Obsolete("Use the constructors that specify all dependencies instead")] - public LocalizationService(RepositoryFactory repositoryFactory) - : this(new PetaPocoUnitOfWorkProvider(LoggerResolver.Current.Logger), repositoryFactory, LoggerResolver.Current.Logger) - { - } - - [Obsolete("Use the constructors that specify all dependencies instead")] - public LocalizationService(IDatabaseUnitOfWorkProvider provider) - : this(provider, new RepositoryFactory(ApplicationContext.Current.ApplicationCache, LoggerResolver.Current.Logger, SqlSyntaxContext.SqlSyntaxProvider, UmbracoConfig.For.UmbracoSettings()), LoggerResolver.Current.Logger) - { - } - public LocalizationService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory, ILogger logger) : base(provider, repositoryFactory, logger) { @@ -173,7 +156,7 @@ namespace Umbraco.Core.Services { using (var repository = RepositoryFactory.CreateDictionaryRepository(UowProvider.GetUnitOfWork())) { - var query = Query.Builder.Where(x => x.ParentId == parentId); + var query = repository.Query.Where(x => x.ParentId == parentId); var items = repository.GetByQuery(query); return items; @@ -188,7 +171,7 @@ namespace Umbraco.Core.Services { using (var repository = RepositoryFactory.CreateDictionaryRepository(UowProvider.GetUnitOfWork())) { - var query = Query.Builder.Where(x => x.ParentId == RootParentId); + var query = repository.Query.Where(x => x.ParentId == RootParentId); var items = repository.GetByQuery(query); return items; diff --git a/src/Umbraco.Core/Services/MacroService.cs b/src/Umbraco.Core/Services/MacroService.cs index 0b51850618..c6de80a117 100644 --- a/src/Umbraco.Core/Services/MacroService.cs +++ b/src/Umbraco.Core/Services/MacroService.cs @@ -54,8 +54,7 @@ namespace Umbraco.Core.Services { using (var repository = RepositoryFactory.CreateMacroRepository(UowProvider.GetUnitOfWork())) { - var q = new Query(); - q.Where(macro => macro.Alias == alias); + var q = repository.Query.Where(macro => macro.Alias == alias); return repository.GetByQuery(q).FirstOrDefault(); } } diff --git a/src/Umbraco.Core/Services/MediaService.cs b/src/Umbraco.Core/Services/MediaService.cs index 728d698471..e17d5188ea 100644 --- a/src/Umbraco.Core/Services/MediaService.cs +++ b/src/Umbraco.Core/Services/MediaService.cs @@ -292,7 +292,7 @@ namespace Umbraco.Core.Services { using (var repository = RepositoryFactory.CreateMediaRepository(UowProvider.GetUnitOfWork())) { - var query = Query.Builder.Where(x => x.Key == key); + var query = repository.Query.Where(x => x.Key == key); var contents = repository.GetByQuery(query); return contents.SingleOrDefault(); } @@ -307,7 +307,7 @@ namespace Umbraco.Core.Services { using (var repository = RepositoryFactory.CreateMediaRepository(UowProvider.GetUnitOfWork())) { - var query = Query.Builder.Where(x => x.Level == level && !x.Path.StartsWith("-21")); + var query = repository.Query.Where(x => x.Level == level && !x.Path.StartsWith("-21")); var contents = repository.GetByQuery(query); return contents; @@ -379,7 +379,7 @@ namespace Umbraco.Core.Services var uow = UowProvider.GetUnitOfWork(); using (var repository = RepositoryFactory.CreateMediaRepository(uow)) { - var query = Query.Builder.Where(x => x.ParentId == id); + var query = repository.Query.Where(x => x.ParentId == id); var medias = repository.GetByQuery(query); return medias; @@ -404,7 +404,7 @@ namespace Umbraco.Core.Services Mandate.ParameterCondition(pageSize > 0, "pageSize"); using (var repository = RepositoryFactory.CreateMediaRepository(UowProvider.GetUnitOfWork())) { - var query = Query.Builder; + var query = repository.Query; //if the id is -1, then just get all if (id != -1) { @@ -434,7 +434,7 @@ namespace Umbraco.Core.Services using (var repository = RepositoryFactory.CreateMediaRepository(UowProvider.GetUnitOfWork())) { - var query = Query.Builder; + var query = repository.Query; //if the id is -1, then just get all if (id != -1) { @@ -472,7 +472,7 @@ namespace Umbraco.Core.Services using (var repository = RepositoryFactory.CreateMediaRepository(uow)) { var pathMatch = media.Path + ","; - var query = Query.Builder.Where(x => x.Path.StartsWith(pathMatch) && x.Id != media.Id); + var query = repository.Query.Where(x => x.Path.StartsWith(pathMatch) && x.Id != media.Id); var medias = repository.GetByQuery(query); return medias; @@ -513,7 +513,7 @@ namespace Umbraco.Core.Services var uow = UowProvider.GetUnitOfWork(); using (var repository = RepositoryFactory.CreateMediaRepository(uow)) { - var query = Query.Builder.Where(x => x.ContentTypeId == id); + var query = repository.Query.Where(x => x.ContentTypeId == id); var medias = repository.GetByQuery(query); return medias; @@ -529,7 +529,7 @@ namespace Umbraco.Core.Services var uow = UowProvider.GetUnitOfWork(); using (var repository = RepositoryFactory.CreateMediaRepository(uow)) { - var query = Query.Builder.Where(x => x.ParentId == -1); + var query = repository.Query.Where(x => x.ParentId == -1); var medias = repository.GetByQuery(query); return medias; @@ -545,7 +545,7 @@ namespace Umbraco.Core.Services var uow = UowProvider.GetUnitOfWork(); using (var repository = RepositoryFactory.CreateMediaRepository(uow)) { - var query = Query.Builder.Where(x => x.Path.Contains("-21")); + var query = repository.Query.Where(x => x.Path.Contains("-21")); var medias = repository.GetByQuery(query); return medias; @@ -559,40 +559,9 @@ namespace Umbraco.Core.Services /// public IMedia GetMediaByPath(string mediaPath) { - var umbracoFileValue = mediaPath; - const string Pattern = ".*[_][0-9]+[x][0-9]+[.].*"; - var isResized = Regex.IsMatch(mediaPath, Pattern); - - // If the image has been resized we strip the "_403x328" of the original "/media/1024/koala_403x328.jpg" url. - if (isResized) + using (var repository = RepositoryFactory.CreateMediaRepository(UowProvider.GetUnitOfWork())) { - var underscoreIndex = mediaPath.LastIndexOf('_'); - var dotIndex = mediaPath.LastIndexOf('.'); - umbracoFileValue = string.Concat(mediaPath.Substring(0, underscoreIndex), mediaPath.Substring(dotIndex)); - } - - Func createSql = url => new Sql().Select("*") - .From() - .InnerJoin() - .On(left => left.PropertyTypeId, right => right.Id) - .Where(x => x.Alias == "umbracoFile") - .Where(x => x.VarChar == url); - - var sql = createSql(umbracoFileValue); - - using (var uow = UowProvider.GetUnitOfWork()) - { - var propertyDataDto = uow.Database.Fetch(sql).FirstOrDefault(); - - // If the stripped-down url returns null, we try again with the original url. - // Previously, the function would fail on e.g. "my_x_image.jpg" - if (propertyDataDto == null) - { - sql = createSql(mediaPath); - propertyDataDto = uow.Database.Fetch(sql).FirstOrDefault(); - } - - return propertyDataDto == null ? null : GetById(propertyDataDto.NodeId); + return repository.GetMediaByPath(mediaPath); } } @@ -605,7 +574,7 @@ namespace Umbraco.Core.Services { using (var repository = RepositoryFactory.CreateMediaRepository(UowProvider.GetUnitOfWork())) { - var query = Query.Builder.Where(x => x.ParentId == id); + var query = repository.Query.Where(x => x.ParentId == id); int count = repository.Count(query); return count > 0; } @@ -787,7 +756,7 @@ namespace Umbraco.Core.Services //NOTE What about media that has the contenttype as part of its composition? //The ContentType has to be removed from the composition somehow as it would otherwise break //Dbl.check+test that the ContentType's Id is removed from the ContentType2ContentType table - var query = Query.Builder.Where(x => x.ContentTypeId == mediaTypeId); + var query = repository.Query.Where(x => x.ContentTypeId == mediaTypeId); var contents = repository.GetByQuery(query).ToArray(); if (Deleting.IsRaisedEventCancelled(new DeleteEventArgs(contents), this)) @@ -797,7 +766,7 @@ namespace Umbraco.Core.Services { //Look for children of current content and move that to trash before the current content is deleted var c = content; - var childQuery = Query.Builder.Where(x => x.Path.StartsWith(c.Path)); + var childQuery = repository.Query.Where(x => x.Path.StartsWith(c.Path)); var children = repository.GetByQuery(childQuery); foreach (var child in children) @@ -1110,7 +1079,7 @@ namespace Umbraco.Core.Services var uow = UowProvider.GetUnitOfWork(); using (var repository = RepositoryFactory.CreateMediaTypeRepository(uow)) { - var query = Query.Builder.Where(x => x.Alias == mediaTypeAlias); + var query = repository.Query.Where(x => x.Alias == mediaTypeAlias); var mediaTypes = repository.GetByQuery(query); if (mediaTypes.Any() == false) diff --git a/src/Umbraco.Core/Services/MemberService.cs b/src/Umbraco.Core/Services/MemberService.cs index 7b6deb3ea3..0386f96292 100644 --- a/src/Umbraco.Core/Services/MemberService.cs +++ b/src/Umbraco.Core/Services/MemberService.cs @@ -151,7 +151,7 @@ namespace Umbraco.Core.Services { using (var repository = RepositoryFactory.CreateMemberRepository(UowProvider.GetUnitOfWork())) { - var query = Query.Builder.Where(x => x.Key == id); + var query = repository.Query.Where(x => x.Key == id); var member = repository.GetByQuery(query).FirstOrDefault(); return member; } @@ -166,7 +166,7 @@ namespace Umbraco.Core.Services { using (var repository = RepositoryFactory.CreateMemberRepository(UowProvider.GetUnitOfWork())) { - var query = Query.Builder.Where(x => x.ContentTypeAlias == memberTypeAlias); + var query = repository.Query.Where(x => x.ContentTypeAlias == memberTypeAlias); var members = repository.GetByQuery(query); return members; } @@ -182,7 +182,7 @@ namespace Umbraco.Core.Services using (var repository = RepositoryFactory.CreateMemberRepository(UowProvider.GetUnitOfWork())) { repository.Get(memberTypeId); - var query = Query.Builder.Where(x => x.ContentTypeId == memberTypeId); + var query = repository.Query.Where(x => x.ContentTypeId == memberTypeId); var members = repository.GetByQuery(query); return members; } @@ -227,7 +227,7 @@ namespace Umbraco.Core.Services { var repository = RepositoryFactory.CreateMemberRepository(uow); //TODO: What about content that has the contenttype as part of its composition? - var query = Query.Builder.Where(x => x.ContentTypeId == memberTypeId); + var query = repository.Query.Where(x => x.ContentTypeId == memberTypeId); var members = repository.GetByQuery(query).ToArray(); if (Deleting.IsRaisedEventCancelled(new DeleteEventArgs(members), this)) @@ -256,7 +256,7 @@ namespace Umbraco.Core.Services var uow = UowProvider.GetUnitOfWork(); using (var repository = RepositoryFactory.CreateMemberRepository(uow)) { - var query = new Query(); + var query = repository.Query; switch (matchType) { @@ -297,7 +297,7 @@ namespace Umbraco.Core.Services var uow = UowProvider.GetUnitOfWork(); using (var repository = RepositoryFactory.CreateMemberRepository(uow)) { - var query = new Query(); + var query = repository.Query; switch (matchType) { @@ -338,7 +338,7 @@ namespace Umbraco.Core.Services var uow = UowProvider.GetUnitOfWork(); using (var repository = RepositoryFactory.CreateMemberRepository(uow)) { - var query = new Query(); + var query = repository.Query; switch (matchType) { @@ -382,7 +382,7 @@ namespace Umbraco.Core.Services { case StringPropertyMatchType.Exact: query = - Query.Builder.Where( + repository.Query.Where( x => ((Member)x).PropertyTypeAlias == propertyTypeAlias && (((Member)x).LongStringPropertyValue.SqlEquals(value, TextColumnType.NText) || @@ -390,7 +390,7 @@ namespace Umbraco.Core.Services break; case StringPropertyMatchType.Contains: query = - Query.Builder.Where( + repository.Query.Where( x => ((Member)x).PropertyTypeAlias == propertyTypeAlias && (((Member)x).LongStringPropertyValue.SqlContains(value, TextColumnType.NText) || @@ -398,7 +398,7 @@ namespace Umbraco.Core.Services break; case StringPropertyMatchType.StartsWith: query = - Query.Builder.Where( + repository.Query.Where( x => ((Member)x).PropertyTypeAlias == propertyTypeAlias && (((Member)x).LongStringPropertyValue.SqlStartsWith(value, TextColumnType.NText) || @@ -406,7 +406,7 @@ namespace Umbraco.Core.Services break; case StringPropertyMatchType.EndsWith: query = - Query.Builder.Where( + repository.Query.Where( x => ((Member)x).PropertyTypeAlias == propertyTypeAlias && (((Member)x).LongStringPropertyValue.SqlEndsWith(value, TextColumnType.NText) || @@ -438,35 +438,35 @@ namespace Umbraco.Core.Services { case ValuePropertyMatchType.Exact: query = - Query.Builder.Where( + repository.Query.Where( x => ((Member)x).PropertyTypeAlias == propertyTypeAlias && ((Member)x).IntegerPropertyValue == value); break; case ValuePropertyMatchType.GreaterThan: query = - Query.Builder.Where( + repository.Query.Where( x => ((Member)x).PropertyTypeAlias == propertyTypeAlias && ((Member)x).IntegerPropertyValue > value); break; case ValuePropertyMatchType.LessThan: query = - Query.Builder.Where( + repository.Query.Where( x => ((Member)x).PropertyTypeAlias == propertyTypeAlias && ((Member)x).IntegerPropertyValue < value); break; case ValuePropertyMatchType.GreaterThanOrEqualTo: query = - Query.Builder.Where( + repository.Query.Where( x => ((Member)x).PropertyTypeAlias == propertyTypeAlias && ((Member)x).IntegerPropertyValue >= value); break; case ValuePropertyMatchType.LessThanOrEqualTo: query = - Query.Builder.Where( + repository.Query.Where( x => ((Member)x).PropertyTypeAlias == propertyTypeAlias && ((Member)x).IntegerPropertyValue <= value); @@ -491,7 +491,7 @@ namespace Umbraco.Core.Services using (var repository = RepositoryFactory.CreateMemberRepository(UowProvider.GetUnitOfWork())) { var query = - Query.Builder.Where( + repository.Query.Where( x => ((Member)x).PropertyTypeAlias == propertyTypeAlias && ((Member)x).BoolPropertyValue == value); @@ -518,35 +518,35 @@ namespace Umbraco.Core.Services { case ValuePropertyMatchType.Exact: query = - Query.Builder.Where( + repository.Query.Where( x => ((Member)x).PropertyTypeAlias == propertyTypeAlias && ((Member)x).DateTimePropertyValue == value); break; case ValuePropertyMatchType.GreaterThan: query = - Query.Builder.Where( + repository.Query.Where( x => ((Member)x).PropertyTypeAlias == propertyTypeAlias && ((Member)x).DateTimePropertyValue > value); break; case ValuePropertyMatchType.LessThan: query = - Query.Builder.Where( + repository.Query.Where( x => ((Member)x).PropertyTypeAlias == propertyTypeAlias && ((Member)x).DateTimePropertyValue < value); break; case ValuePropertyMatchType.GreaterThanOrEqualTo: query = - Query.Builder.Where( + repository.Query.Where( x => ((Member)x).PropertyTypeAlias == propertyTypeAlias && ((Member)x).DateTimePropertyValue >= value); break; case ValuePropertyMatchType.LessThanOrEqualTo: query = - Query.Builder.Where( + repository.Query.Where( x => ((Member)x).PropertyTypeAlias == propertyTypeAlias && ((Member)x).DateTimePropertyValue <= value); @@ -605,26 +605,26 @@ namespace Umbraco.Core.Services switch (countType) { case MemberCountType.All: - query = new Query(); + query = repository.Query; return repository.Count(query); case MemberCountType.Online: var fromDate = DateTime.Now.AddMinutes(-Membership.UserIsOnlineTimeWindow); query = - Query.Builder.Where( + repository.Query.Where( x => ((Member)x).PropertyTypeAlias == Constants.Conventions.Member.LastLoginDate && ((Member)x).DateTimePropertyValue > fromDate); return repository.GetCountByQuery(query); case MemberCountType.LockedOut: query = - Query.Builder.Where( + repository.Query.Where( x => ((Member)x).PropertyTypeAlias == Constants.Conventions.Member.IsLockedOut && ((Member)x).BoolPropertyValue == true); return repository.GetCountByQuery(query); case MemberCountType.Approved: query = - Query.Builder.Where( + repository.Query.Where( x => ((Member)x).PropertyTypeAlias == Constants.Conventions.Member.IsApproved && ((Member)x).BoolPropertyValue == true); @@ -662,7 +662,7 @@ namespace Umbraco.Core.Services { return repository.GetPagedResultsByQuery(null, pageIndex, pageSize, out totalRecords, orderBy, orderDirection, filter); } - var query = new Query().Where(x => x.ContentTypeAlias == memberTypeAlias); + var query = repository.Query.Where(x => x.ContentTypeAlias == memberTypeAlias); return repository.GetPagedResultsByQuery(query, pageIndex, pageSize, out totalRecords, orderBy, orderDirection, filter); } } @@ -854,7 +854,7 @@ namespace Umbraco.Core.Services var uow = UowProvider.GetUnitOfWork(); using (var repository = RepositoryFactory.CreateMemberRepository(uow)) { - var query = Query.Builder.Where(x => x.Email.Equals(email)); + var query = repository.Query.Where(x => x.Email.Equals(email)); var member = repository.GetByQuery(query).FirstOrDefault(); return member; @@ -875,7 +875,7 @@ namespace Umbraco.Core.Services var uow = UowProvider.GetUnitOfWork(); using (var repository = RepositoryFactory.CreateMemberRepository(uow)) { - var query = Query.Builder.Where(x => x.Username.Equals(username)); + var query = repository.Query.Where(x => x.Username.Equals(username)); var member = repository.GetByQuery(query).FirstOrDefault(); return member; @@ -1052,7 +1052,7 @@ namespace Umbraco.Core.Services var uow = UowProvider.GetUnitOfWork(); using (var repository = RepositoryFactory.CreateMemberGroupRepository(uow)) { - var qry = new Query().Where(g => g.Name == roleName); + var qry = repository.Query.Where(g => g.Name == roleName); var found = repository.GetByQuery(qry).ToArray(); foreach (var memberGroup in found) @@ -1127,7 +1127,7 @@ namespace Umbraco.Core.Services { using (var repository = RepositoryFactory.CreateMemberTypeRepository(UowProvider.GetUnitOfWork())) { - var query = Query.Builder.Where(x => x.Alias == memberTypeAlias); + var query = repository.Query.Where(x => x.Alias == memberTypeAlias); var types = repository.GetByQuery(query); if (types.Any() == false) diff --git a/src/Umbraco.Core/Services/MemberTypeService.cs b/src/Umbraco.Core/Services/MemberTypeService.cs index 68333f4282..0aafe06a3a 100644 --- a/src/Umbraco.Core/Services/MemberTypeService.cs +++ b/src/Umbraco.Core/Services/MemberTypeService.cs @@ -55,7 +55,7 @@ namespace Umbraco.Core.Services { using (var repository = RepositoryFactory.CreateMemberTypeRepository(UowProvider.GetUnitOfWork())) { - var query = Query.Builder.Where(x => x.Alias == alias); + var query = repository.Query.Where(x => x.Alias == alias); var contentTypes = repository.GetByQuery(query); return contentTypes.FirstOrDefault(); diff --git a/src/Umbraco.Core/Services/NotificationService.cs b/src/Umbraco.Core/Services/NotificationService.cs index 1aae82f52c..a5f0e4dcdc 100644 --- a/src/Umbraco.Core/Services/NotificationService.cs +++ b/src/Umbraco.Core/Services/NotificationService.cs @@ -16,6 +16,8 @@ using Umbraco.Core.Persistence.Repositories; using Umbraco.Core.Persistence.UnitOfWork; using Umbraco.Core.Strings; using umbraco.interfaces; +using Umbraco.Core.Persistence; +using Umbraco.Core.Persistence.SqlSyntax; namespace Umbraco.Core.Services { @@ -24,17 +26,20 @@ namespace Umbraco.Core.Services private readonly IDatabaseUnitOfWorkProvider _uowProvider; private readonly IUserService _userService; private readonly IContentService _contentService; + private readonly RepositoryFactory _repositoryFactory; private readonly ILogger _logger; - public NotificationService(IDatabaseUnitOfWorkProvider provider, IUserService userService, IContentService contentService, ILogger logger) + public NotificationService(IDatabaseUnitOfWorkProvider provider, IUserService userService, IContentService contentService, RepositoryFactory repositoryFactory, ILogger logger) { if (provider == null) throw new ArgumentNullException("provider"); if (userService == null) throw new ArgumentNullException("userService"); if (contentService == null) throw new ArgumentNullException("contentService"); + if (repositoryFactory == null) throw new ArgumentNullException("repositoryFactory"); if (logger == null) throw new ArgumentNullException("logger"); _uowProvider = provider; _userService = userService; _contentService = contentService; + _repositoryFactory = repositoryFactory; _logger = logger; } @@ -99,7 +104,7 @@ namespace Umbraco.Core.Services public IEnumerable GetUserNotifications(IUser user) { var uow = _uowProvider.GetUnitOfWork(); - var repository = new NotificationsRepository(uow); + var repository = _repositoryFactory.CreateNotificationsRepository(uow); return repository.GetUserNotifications(user); } @@ -127,7 +132,7 @@ namespace Umbraco.Core.Services public IEnumerable GetEntityNotifications(IEntity entity) { var uow = _uowProvider.GetUnitOfWork(); - var repository = new NotificationsRepository(uow); + var repository = _repositoryFactory.CreateNotificationsRepository(uow); return repository.GetEntityNotifications(entity); } @@ -138,7 +143,7 @@ namespace Umbraco.Core.Services public void DeleteNotifications(IEntity entity) { var uow = _uowProvider.GetUnitOfWork(); - var repository = new NotificationsRepository(uow); + var repository = _repositoryFactory.CreateNotificationsRepository(uow); repository.DeleteNotifications(entity); } @@ -149,7 +154,7 @@ namespace Umbraco.Core.Services public void DeleteNotifications(IUser user) { var uow = _uowProvider.GetUnitOfWork(); - var repository = new NotificationsRepository(uow); + var repository = _repositoryFactory.CreateNotificationsRepository(uow); repository.DeleteNotifications(user); } @@ -161,7 +166,7 @@ namespace Umbraco.Core.Services public void DeleteNotifications(IUser user, IEntity entity) { var uow = _uowProvider.GetUnitOfWork(); - var repository = new NotificationsRepository(uow); + var repository = _repositoryFactory.CreateNotificationsRepository(uow); repository.DeleteNotifications(user, entity); } @@ -175,7 +180,7 @@ namespace Umbraco.Core.Services public Notification CreateNotification(IUser user, IEntity entity, string action) { var uow = _uowProvider.GetUnitOfWork(); - var repository = new NotificationsRepository(uow); + var repository = _repositoryFactory.CreateNotificationsRepository(uow); return repository.CreateNotification(user, entity, action); } diff --git a/src/Umbraco.Core/Services/PackagingService.cs b/src/Umbraco.Core/Services/PackagingService.cs index 1baf2a4b57..5f09e99b7c 100644 --- a/src/Umbraco.Core/Services/PackagingService.cs +++ b/src/Umbraco.Core/Services/PackagingService.cs @@ -709,7 +709,7 @@ namespace Umbraco.Core.Services { using (var repository = _repositoryFactory.CreateContentTypeRepository(_uowProvider.GetUnitOfWork())) { - var query = Query.Builder.Where(x => x.Alias == contentTypeAlias); + var query = repository.Query.Where(x => x.Alias == contentTypeAlias); var types = repository.GetByQuery(query); if (!types.Any()) diff --git a/src/Umbraco.Core/Services/RelationService.cs b/src/Umbraco.Core/Services/RelationService.cs index db2328047d..d143f06443 100644 --- a/src/Umbraco.Core/Services/RelationService.cs +++ b/src/Umbraco.Core/Services/RelationService.cs @@ -63,7 +63,7 @@ namespace Umbraco.Core.Services { using (var repository = RepositoryFactory.CreateRelationTypeRepository(UowProvider.GetUnitOfWork())) { - var query = new Query().Where(x => x.Alias == alias); + var query = repository.Query.Where(x => x.Alias == alias); return repository.GetByQuery(query).FirstOrDefault(); } } @@ -100,7 +100,7 @@ namespace Umbraco.Core.Services { using (var repository = RepositoryFactory.CreateRelationRepository(UowProvider.GetUnitOfWork())) { - var query = new Query().Where(x => x.RelationTypeId == relationTypeId); + var query = repository.Query.Where(x => x.RelationTypeId == relationTypeId); return repository.GetByQuery(query); } } @@ -127,7 +127,7 @@ namespace Umbraco.Core.Services { using (var repository = RepositoryFactory.CreateRelationRepository(UowProvider.GetUnitOfWork())) { - var query = new Query().Where(x => x.ParentId == id); + var query = repository.Query.Where(x => x.ParentId == id); return repository.GetByQuery(query); } } @@ -162,7 +162,7 @@ namespace Umbraco.Core.Services { using (var repository = RepositoryFactory.CreateRelationRepository(UowProvider.GetUnitOfWork())) { - var query = new Query().Where(x => x.ChildId == id); + var query = repository.Query.Where(x => x.ChildId == id); return repository.GetByQuery(query); } } @@ -198,7 +198,7 @@ namespace Umbraco.Core.Services { using (var repository = RepositoryFactory.CreateRelationRepository(UowProvider.GetUnitOfWork())) { - var query = new Query().Where(x => x.ChildId == id || x.ParentId == id); + var query = repository.Query.Where(x => x.ChildId == id || x.ParentId == id); return repository.GetByQuery(query); } } @@ -206,15 +206,15 @@ namespace Umbraco.Core.Services public IEnumerable GetByParentOrChildId(int id, string relationTypeAlias) { var uow = UowProvider.GetUnitOfWork(); - using (var relationTypeRepository = RepositoryFactory.CreateRelationTypeRepository(uow)) + using (var repository = RepositoryFactory.CreateRelationTypeRepository(uow)) { - var rtQuery = new Query().Where(x => x.Alias == relationTypeAlias); - var relationType = relationTypeRepository.GetByQuery(rtQuery).FirstOrDefault(); + var rtQuery = repository.Query.Where(x => x.Alias == relationTypeAlias); + var relationType = repository.GetByQuery(rtQuery).FirstOrDefault(); if (relationType == null) return Enumerable.Empty(); using (var relationRepo = RepositoryFactory.CreateRelationRepository(uow)) { - var query = new Query().Where(x => (x.ChildId == id || x.ParentId == id) && x.RelationTypeId == relationType.Id); + var query = relationRepo.Query.Where(x => (x.ChildId == id || x.ParentId == id) && x.RelationTypeId == relationType.Id); return relationRepo.GetByQuery(query); } } @@ -230,7 +230,7 @@ namespace Umbraco.Core.Services List relationTypeIds = null; using (var repository = RepositoryFactory.CreateRelationTypeRepository(UowProvider.GetUnitOfWork())) { - var query = new Query().Where(x => x.Name == relationTypeName); + var query = repository.Query.Where(x => x.Name == relationTypeName); var relationTypes = repository.GetByQuery(query); if (relationTypes.Any()) { @@ -254,7 +254,7 @@ namespace Umbraco.Core.Services List relationTypeIds = null; using (var repository = RepositoryFactory.CreateRelationTypeRepository(UowProvider.GetUnitOfWork())) { - var query = new Query().Where(x => x.Alias == relationTypeAlias); + var query = repository.Query.Where(x => x.Alias == relationTypeAlias); var relationTypes = repository.GetByQuery(query); if (relationTypes.Any()) { @@ -277,7 +277,7 @@ namespace Umbraco.Core.Services { using (var repository = RepositoryFactory.CreateRelationRepository(UowProvider.GetUnitOfWork())) { - var query = new Query().Where(x => x.RelationTypeId == relationTypeId); + var query = repository.Query.Where(x => x.RelationTypeId == relationTypeId); return repository.GetByQuery(query); } } @@ -441,7 +441,7 @@ namespace Umbraco.Core.Services { using (var repository = RepositoryFactory.CreateRelationRepository(UowProvider.GetUnitOfWork())) { - var query = new Query().Where(x => x.RelationTypeId == relationType.Id); + var query = repository.Query.Where(x => x.RelationTypeId == relationType.Id); return repository.GetByQuery(query).Any(); } } @@ -455,7 +455,7 @@ namespace Umbraco.Core.Services { using (var repository = RepositoryFactory.CreateRelationRepository(UowProvider.GetUnitOfWork())) { - var query = new Query().Where(x => x.ParentId == id || x.ChildId == id); + var query = repository.Query.Where(x => x.ParentId == id || x.ChildId == id); return repository.GetByQuery(query).Any(); } } @@ -470,7 +470,7 @@ namespace Umbraco.Core.Services { using (var repository = RepositoryFactory.CreateRelationRepository(UowProvider.GetUnitOfWork())) { - var query = new Query().Where(x => x.ParentId == parentId && x.ChildId == childId); + var query = repository.Query.Where(x => x.ParentId == parentId && x.ChildId == childId); return repository.GetByQuery(query).Any(); } } @@ -497,13 +497,13 @@ namespace Umbraco.Core.Services /// /// Id of the Parent relation /// Id of the Child relation - /// Type of relation + /// Type of relation /// Returns True if any relations exists with the given Ids and relation type, otherwise False public bool AreRelated(int parentId, int childId, IRelationType relationType) { using (var repository = RepositoryFactory.CreateRelationRepository(UowProvider.GetUnitOfWork())) { - var query = new Query().Where(x => x.ParentId == parentId && x.ChildId == childId && x.RelationTypeId == relationType.Id); + var query = repository.Query.Where(x => x.ParentId == parentId && x.ChildId == childId && x.RelationTypeId == relationType.Id); return repository.GetByQuery(query).Any(); } } @@ -618,7 +618,7 @@ namespace Umbraco.Core.Services var uow = UowProvider.GetUnitOfWork(); using (var repository = RepositoryFactory.CreateRelationRepository(uow)) { - var query = new Query().Where(x => x.RelationTypeId == relationType.Id); + var query = repository.Query.Where(x => x.RelationTypeId == relationType.Id); relations.AddRange(repository.GetByQuery(query).ToList()); foreach (var relation in relations) @@ -640,7 +640,7 @@ namespace Umbraco.Core.Services foreach (var relationTypeId in relationTypeIds) { int id = relationTypeId; - var query = new Query().Where(x => x.RelationTypeId == id); + var query = repository.Query.Where(x => x.RelationTypeId == id); relations.AddRange(repository.GetByQuery(query).ToList()); } } diff --git a/src/Umbraco.Core/Services/ServerRegistrationService.cs b/src/Umbraco.Core/Services/ServerRegistrationService.cs index f52c05768f..7978ef369a 100644 --- a/src/Umbraco.Core/Services/ServerRegistrationService.cs +++ b/src/Umbraco.Core/Services/ServerRegistrationService.cs @@ -35,7 +35,7 @@ namespace Umbraco.Core.Services // found this out in CDF a while back: http://clientdependency.codeplex.com/workitem/13191 var computerName = System.Net.Dns.GetHostName(); - var query = Query.Builder.Where(x => x.ComputerName.ToUpper() == computerName.ToUpper()); + var query = repo.Query.Where(x => x.ComputerName.ToUpper() == computerName.ToUpper()); var found = repo.GetByQuery(query).ToArray(); ServerRegistration server; if (found.Any()) @@ -63,7 +63,7 @@ namespace Umbraco.Core.Services var uow = UowProvider.GetUnitOfWork(); using (var repo = RepositoryFactory.CreateServerRegistrationRepository(uow)) { - var query = Query.Builder.Where(x => x.ComputerName.ToUpper() == computerName.ToUpper()); + var query = repo.Query.Where(x => x.ComputerName.ToUpper() == computerName.ToUpper()); var found = repo.GetByQuery(query).ToArray(); if (found.Any()) { @@ -84,7 +84,7 @@ namespace Umbraco.Core.Services var uow = UowProvider.GetUnitOfWork(); using (var repo = RepositoryFactory.CreateServerRegistrationRepository(uow)) { - var query = Query.Builder.Where(x => x.IsActive); + var query = repo.Query.Where(x => x.IsActive); return repo.GetByQuery(query).ToArray(); } } diff --git a/src/Umbraco.Core/Services/ServiceContext.cs b/src/Umbraco.Core/Services/ServiceContext.cs index 1618193c4e..1bc4590303 100644 --- a/src/Umbraco.Core/Services/ServiceContext.cs +++ b/src/Umbraco.Core/Services/ServiceContext.cs @@ -161,7 +161,7 @@ namespace Umbraco.Core.Services logger)); if (_notificationService == null) - _notificationService = new Lazy(() => new NotificationService(provider, _userService.Value, _contentService.Value, logger)); + _notificationService = new Lazy(() => new NotificationService(provider, _userService.Value, _contentService.Value, repositoryFactory, logger)); if (_serverRegistrationService == null) _serverRegistrationService = new Lazy(() => new ServerRegistrationService(provider, repositoryFactory, logger)); diff --git a/src/Umbraco.Core/Services/TaskService.cs b/src/Umbraco.Core/Services/TaskService.cs index 861e49c9fc..74c0a66e4f 100644 --- a/src/Umbraco.Core/Services/TaskService.cs +++ b/src/Umbraco.Core/Services/TaskService.cs @@ -21,7 +21,7 @@ namespace Umbraco.Core.Services { using (var repo = RepositoryFactory.CreateTaskTypeRepository(UowProvider.GetUnitOfWork())) { - return repo.GetByQuery(new Query().Where(type => type.Alias == taskTypeAlias)).FirstOrDefault(); + return repo.GetByQuery(repo.Query.Where(type => type.Alias == taskTypeAlias)).FirstOrDefault(); } } diff --git a/src/Umbraco.Core/Services/UserService.cs b/src/Umbraco.Core/Services/UserService.cs index acc72cd513..401d4f7a8b 100644 --- a/src/Umbraco.Core/Services/UserService.cs +++ b/src/Umbraco.Core/Services/UserService.cs @@ -189,7 +189,7 @@ namespace Umbraco.Core.Services { using (var repository = RepositoryFactory.CreateUserRepository(UowProvider.GetUnitOfWork())) { - var query = Query.Builder.Where(x => x.Email.Equals(email)); + var query = repository.Query.Where(x => x.Email.Equals(email)); var user = repository.GetByQuery(query).FirstOrDefault(); return user; @@ -205,7 +205,7 @@ namespace Umbraco.Core.Services { using (var repository = RepositoryFactory.CreateUserRepository(UowProvider.GetUnitOfWork())) { - var query = Query.Builder.Where(x => x.Username.Equals(username)); + var query = repository.Query.Where(x => x.Username.Equals(username)); return repository.GetByQuery(query).FirstOrDefault(); } } @@ -355,7 +355,7 @@ namespace Umbraco.Core.Services var uow = UowProvider.GetUnitOfWork(); using (var repository = RepositoryFactory.CreateUserRepository(uow)) { - var query = new Query(); + var query = repository.Query; switch (matchType) { @@ -396,7 +396,7 @@ namespace Umbraco.Core.Services var uow = UowProvider.GetUnitOfWork(); using (var repository = RepositoryFactory.CreateUserRepository(uow)) { - var query = new Query(); + var query = repository.Query; switch (matchType) { @@ -442,7 +442,7 @@ namespace Umbraco.Core.Services switch (countType) { case MemberCountType.All: - query = new Query(); + query = repository.Query; return repository.Count(query); case MemberCountType.Online: throw new NotImplementedException(); @@ -455,12 +455,12 @@ namespace Umbraco.Core.Services //return repository.GetCountByQuery(query); case MemberCountType.LockedOut: query = - Query.Builder.Where( + repository.Query.Where( x => x.IsLockedOut); return repository.GetCountByQuery(query); case MemberCountType.Approved: query = - Query.Builder.Where( + repository.Query.Where( x => x.IsApproved); return repository.GetCountByQuery(query); default: @@ -563,7 +563,7 @@ namespace Umbraco.Core.Services { using (var repository = RepositoryFactory.CreateUserTypeRepository(UowProvider.GetUnitOfWork())) { - var query = Query.Builder.Where(x => x.Alias == alias); + var query = repository.Query.Where(x => x.Alias == alias); var contents = repository.GetByQuery(query); return contents.SingleOrDefault(); } @@ -591,7 +591,7 @@ namespace Umbraco.Core.Services { using (var repository = RepositoryFactory.CreateUserTypeRepository(UowProvider.GetUnitOfWork())) { - var query = Query.Builder.Where(x => x.Name == name); + var query = repository.Query.Where(x => x.Name == name); var contents = repository.GetByQuery(query); return contents.SingleOrDefault(); } diff --git a/src/Umbraco.Core/Umbraco.Core.csproj b/src/Umbraco.Core/Umbraco.Core.csproj index 73b2e8b533..2e7f6dc176 100644 --- a/src/Umbraco.Core/Umbraco.Core.csproj +++ b/src/Umbraco.Core/Umbraco.Core.csproj @@ -323,6 +323,7 @@ + @@ -899,7 +900,6 @@ - diff --git a/src/Umbraco.Tests/Integration/CreateContent.cs b/src/Umbraco.Tests/Integration/CreateContent.cs deleted file mode 100644 index 388e7fcb5e..0000000000 --- a/src/Umbraco.Tests/Integration/CreateContent.cs +++ /dev/null @@ -1,155 +0,0 @@ -using System; -using System.Runtime.InteropServices; -using System.Threading; -using NUnit.Framework; -using OpenQA.Selenium; -using OpenQA.Selenium.Interactions; -using Umbraco.Tests.TestHelpers; - -namespace Umbraco.Tests.Integration -{ - [Ignore("We don't want to run Selenium tests on TeamCity")] - [TestFixture] - public class CreateContent : BaseSeleniumTest - { - [SetUp] - public override void Initialize() - { - base.Initialize(); - } - - [TearDown] - public override void TearDown() - { - base.TearDown(); - } - - [Test] - public void Install_StarterKit_And_Create_Textpage() - { - // Login to Umbraco - Driver.Navigate().GoToUrl(BaseUrl + "/umbraco/login.aspx?redir="); - Driver.FindElement(By.Id("lname")).Clear(); - Driver.FindElement(By.Id("lname")).SendKeys("admin"); - Driver.FindElement(By.Id("passw")).Clear(); - Driver.FindElement(By.Id("passw")).SendKeys("test"); - Driver.FindElement(By.Id("Button1")).Click(); - Thread.Sleep(500); - - // Install starter kit - Driver.Navigate().GoToUrl(BaseUrl + "/umbraco/umbraco.aspx#developer"); - Thread.Sleep(2000); - - var builder = new Actions(Driver); - var packagesNode = Driver.FindElement(By.XPath("//*[@id='init'][3]")); - builder.MoveToElement(packagesNode).DoubleClick().Build().Perform(); - Thread.Sleep(500); - - var installStarterKitNode = Driver.FindElement(By.XPath("(//li[@id='-1']/a/div)[4]")); - builder.MoveToElement(installStarterKitNode).Click().Build().Perform(); - Thread.Sleep(500); - - var rightFrame = Driver.FindElement(By.XPath("//*[@id='right']")); - Driver.SwitchTo().Frame(rightFrame); - Thread.Sleep(500); - - var simpleKit = Driver.FindElement(By.XPath("/html/body/form/div[2]/div[2]/div/div/div/div/div[4]/nav/ul/li[1]/a")); - builder.MoveToElement(simpleKit).Click().Build().Perform(); - Thread.Sleep(6000); - - // Create new content - Driver.SwitchTo().DefaultContent(); - Driver.Navigate().GoToUrl(BaseUrl + "/umbraco/umbraco.aspx#content"); - Thread.Sleep(500); - - var contentNode = Driver.FindElement(By.XPath("//*[@id = 'JTree_TreeContainer']/div/ul/li/ul/li/a/div")); - builder.MoveToElement(contentNode).ContextClick().Build().Perform(); - Thread.Sleep(1000); - - var createButton = Driver.FindElement(By.XPath("//*[@id = 'jstree-contextmenu']/li[1]/a/span/div[2]")); - createButton.Click(); - Thread.Sleep(500); - - var umbracoModalBoxIframe = Driver.FindElement(By.CssSelector(".umbModalBoxIframe")); - Driver.SwitchTo().Frame(umbracoModalBoxIframe); - - var createTextBox = Driver.FindElement(By.XPath("//input[@type='text'][1]")); - createTextBox.Clear(); - createTextBox.SendKeys("Test Page"); - - var submitButton = Driver.FindElement(By.XPath("//input[@type='submit'][1]")); - submitButton.Click(); - Thread.Sleep(2000); - - Driver.SwitchTo().Frame(rightFrame); - var saveAndPublishButton = Driver.FindElement(By.XPath("//*[@id='body_TabView1_tab01layer_publish']")); - saveAndPublishButton.Click(); - Thread.Sleep(2000); - - var contentArea = Driver.FindElement(By.XPath("//*[@id='body_TabView1']")); - Assert.IsNotNull(contentArea); - Thread.Sleep(500); - - // Perform delete - Driver.SwitchTo().DefaultContent(); - var installingModulesNode = Driver.FindElement(By.XPath("//*[@id='1052']/a/div")); - builder.MoveToElement(installingModulesNode).ContextClick().Build().Perform(); - Thread.Sleep(1000); - - var deleteButton = Driver.FindElement(By.CssSelector(".sprDelete")); - deleteButton.Click(); - var alert = Driver.SwitchTo().Alert(); - alert.Accept(); - Thread.Sleep(1000); - - // Perform move - var goFurtherNode = Driver.FindElement(By.XPath("//*[@id='1053']/a/div")); - builder.MoveToElement(goFurtherNode).ContextClick().Build().Perform(); - Thread.Sleep(1000); - - var moveButton = Driver.FindElement(By.CssSelector(".sprMove")); - moveButton.Click(); - Thread.Sleep(2000); - - umbracoModalBoxIframe = Driver.FindElement(By.CssSelector(".umbModalBoxIframe")); - Driver.SwitchTo().Frame(umbracoModalBoxIframe); - - var rootNode = Driver.FindElement(By.XPath("//*[@id='1051']")); - builder.MoveToElement(rootNode).DoubleClick().Build().Perform(); - Thread.Sleep(500); - var gettinStartedNode = Driver.FindElement(By.XPath("//*[@id='1055']/a/div")); - builder.MoveToElement(gettinStartedNode).Click().Build().Perform(); - Thread.Sleep(500); - submitButton = Driver.FindElement(By.XPath("//input[@type='submit'][1]")); - builder.MoveToElement(submitButton).Click().Build().Perform(); - Thread.Sleep(2000); - var closeLink = Driver.FindElement(By.XPath("/html/body/form/div[2]/p[2]/a")); - builder.MoveToElement(closeLink).Click().Build().Perform(); - - Driver.SwitchTo().DefaultContent(); - Thread.Sleep(1000); - - // Perform copy - var gettingStartedNode = Driver.FindElement(By.XPath("//*[@id='1054']/a/div")); - builder.MoveToElement(gettingStartedNode).ContextClick().Build().Perform(); - Thread.Sleep(1000); - - var copyButton = Driver.FindElement(By.CssSelector(".sprCopy")); - copyButton.Click(); - Thread.Sleep(2000); - - umbracoModalBoxIframe = Driver.FindElement(By.CssSelector(".umbModalBoxIframe")); - Driver.SwitchTo().Frame(umbracoModalBoxIframe); - - rootNode = Driver.FindElement(By.XPath("//*[@id='1051']")); - builder.MoveToElement(rootNode).DoubleClick().Build().Perform(); - Thread.Sleep(500); - - submitButton = Driver.FindElement(By.XPath("//input[@type='submit'][1]")); - builder.MoveToElement(submitButton).Click().Build().Perform(); - Thread.Sleep(2000); - closeLink = Driver.FindElement(By.XPath("/html/body/form/div[2]/p[2]/a")); - builder.MoveToElement(closeLink).Click().Build().Perform(); - } - } -} \ No newline at end of file diff --git a/src/Umbraco.Tests/Integration/InstallPackage.cs b/src/Umbraco.Tests/Integration/InstallPackage.cs deleted file mode 100644 index 05763c1ff0..0000000000 --- a/src/Umbraco.Tests/Integration/InstallPackage.cs +++ /dev/null @@ -1,145 +0,0 @@ -using System.IO; -using System.Linq; -using System.Threading; -using NUnit.Framework; -using OpenQA.Selenium; -using OpenQA.Selenium.Interactions; -using Umbraco.Core; -using Umbraco.Tests.TestHelpers; - -namespace Umbraco.Tests.Integration -{ - [Ignore("We don't want to run Selenium tests on TeamCity")] - [TestFixture] - public class InstallPackage : BaseSeleniumTest - { - [SetUp] - public override void Initialize() - { - base.Initialize(); - } - - [TearDown] - public override void TearDown() - { - base.TearDown(); - } - - [Test] - public void Install_Courier_Package() - { - Driver.Navigate().GoToUrl(BaseUrl + "/umbraco/login.aspx?redir="); - Driver.FindElement(By.Id("lname")).Clear(); - Driver.FindElement(By.Id("lname")).SendKeys("admin"); - Driver.FindElement(By.Id("passw")).Clear(); - Driver.FindElement(By.Id("passw")).SendKeys("test"); - Driver.FindElement(By.Id("Button1")).Click(); - Thread.Sleep(1000); - - Driver.Navigate().GoToUrl(BaseUrl + "/umbraco/umbraco.aspx#developer"); - Thread.Sleep(2000); - - var builder = new Actions(Driver); - var packagesNode = Driver.FindElement(By.XPath("//*[@id='init'][3]")); - builder.MoveToElement(packagesNode).DoubleClick().Build().Perform(); - Thread.Sleep(1000); - - var installPackageNode = Driver.FindElement(By.XPath("/html/body/div[2]/div/div/div[2]/div/div/div/div/ul/li/ul/li[3]/ul/li[4]/a/div")); - builder.MoveToElement(installPackageNode).Click().Build().Perform(); - Thread.Sleep(1000); - - var rightFrame = Driver.FindElement(By.XPath("//*[@id='right']")); - Driver.SwitchTo().Frame(rightFrame); - - const string packagesDir = @"C:\\Downloads\\Packages\\"; - var file = new DirectoryInfo(packagesDir).GetFiles().First(f => f.Name.ToLowerInvariant().StartsWith("Courier".ToLowerInvariant())); - - Driver.FindElement(By.Id("cb")).Click(); - Driver.FindElement(By.XPath("//input[@type='file']")).SendKeys(file.FullName); - Driver.FindElement(By.Id("body_ButtonLoadPackage")).Click(); - Driver.FindElement(By.Id("body_acceptCheckbox")).Click(); - Driver.FindElement(By.Id("body_ButtonInstall")).Click(); - Thread.Sleep(1000); - - var successPanel = Driver.FindElement(By.XPath("//*[@id='body_Panel1_content']")); - Assert.IsNotNull(successPanel); - } - - [Test] - public void Install_Contour_Package() - { - Driver.Navigate().GoToUrl(BaseUrl + "/umbraco/login.aspx?redir="); - Driver.FindElement(By.Id("lname")).Clear(); - Driver.FindElement(By.Id("lname")).SendKeys("admin"); - Driver.FindElement(By.Id("passw")).Clear(); - Driver.FindElement(By.Id("passw")).SendKeys("test"); - Driver.FindElement(By.Id("Button1")).Click(); - Thread.Sleep(1000); - - Driver.Navigate().GoToUrl(BaseUrl + "/umbraco/umbraco.aspx#developer"); - Thread.Sleep(2000); - - var builder = new Actions(Driver); - var packagesNode = Driver.FindElement(By.XPath("//*[@id='init'][3]")); - builder.MoveToElement(packagesNode).DoubleClick().Build().Perform(); - Thread.Sleep(1000); - - var installPackageNode = Driver.FindElement(By.XPath("/html/body/div[2]/div/div/div[2]/div/div/div/div/ul/li/ul/li[3]/ul/li[4]/a/div")); - builder.MoveToElement(installPackageNode).Click().Build().Perform(); - Thread.Sleep(1000); - - var rightFrame = Driver.FindElement(By.XPath("//*[@id='right']")); - Driver.SwitchTo().Frame(rightFrame); - - const string packagesDir = @"C:\\Downloads\\Packages\\"; - var file = new DirectoryInfo(packagesDir).GetFiles().First(f => f.Name.ToLowerInvariant().StartsWith("UmbracoContour".ToLowerInvariant())); - - Driver.FindElement(By.Id("cb")).Click(); - Driver.FindElement(By.XPath("//input[@type='file']")).SendKeys(file.FullName); - Driver.FindElement(By.Id("body_ButtonLoadPackage")).Click(); - Driver.FindElement(By.Id("body_acceptCheckbox")).Click(); - Driver.FindElement(By.Id("body_ButtonInstall")).Click(); - Thread.Sleep(1000); - - var successPanel = Driver.FindElement(By.XPath("//*[@id='body_Panel1_content']")); - Assert.IsNotNull(successPanel); - } - - //[Test] - //public void Install_CMS_Import_Package() - //{ - // Driver.Navigate().GoToUrl(BaseUrl + "/umbraco/login.aspx?redir="); - // Driver.FindElement(By.Id("lname")).Clear(); - // Driver.FindElement(By.Id("lname")).SendKeys("admin"); - // Driver.FindElement(By.Id("passw")).Clear(); - // Driver.FindElement(By.Id("passw")).SendKeys("test"); - // Driver.FindElement(By.Id("Button1")).Click(); - // Thread.Sleep(1000); - - // Driver.Navigate().GoToUrl(BaseUrl + "/umbraco/umbraco.aspx#developer"); - // Thread.Sleep(2000); - - // var builder = new Actions(Driver); - // var packagesNode = Driver.FindElement(By.XPath("//*[@id='init'][3]")); - // builder.MoveToElement(packagesNode).DoubleClick().Build().Perform(); - // Thread.Sleep(1000); - - // var installPackageNode = Driver.FindElement(By.XPath("/html/body/div[2]/div/div/div[2]/div/div/div/div/ul/li/ul/li[3]/ul/li[4]/a/div")); - // builder.MoveToElement(installPackageNode).Click().Build().Perform(); - // Thread.Sleep(1000); - - // var rightFrame = Driver.FindElement(By.XPath("//*[@id='right']")); - // Driver.SwitchTo().Frame(rightFrame); - - // Driver.FindElement(By.Id("cb")).Click(); - // Driver.FindElement(By.Id("body_file1")).SendKeys("C:\\Downloads\\Packages\\CMSImport-2.3.1.zip"); - // Driver.FindElement(By.Id("body_ButtonLoadPackage")).Click(); - // Driver.FindElement(By.Id("body_acceptCheckbox")).Click(); - // Driver.FindElement(By.Id("body_ButtonInstall")).Click(); - // Thread.Sleep(1000); - - // var successPanel = Driver.FindElement(By.XPath("//*[@id='body_Panel1_content']")); - // Assert.IsNotNull(successPanel); - //} - } -} \ No newline at end of file diff --git a/src/Umbraco.Tests/Migrations/AlterMigrationTests.cs b/src/Umbraco.Tests/Migrations/AlterMigrationTests.cs index 94e8802ca4..ddb9f8bad2 100644 --- a/src/Umbraco.Tests/Migrations/AlterMigrationTests.cs +++ b/src/Umbraco.Tests/Migrations/AlterMigrationTests.cs @@ -18,8 +18,9 @@ namespace Umbraco.Tests.Migrations public void Drop_Foreign_Key() { // Arrange - var context = new MigrationContext(DatabaseProviders.SqlServerCE, null, Mock.Of()); - var stub = new DropForeignKeyMigrationStub(new SqlCeSyntaxProvider(), Mock.Of()); + var sqlSyntax = new SqlCeSyntaxProvider(); + var context = new MigrationContext(DatabaseProviders.SqlServerCE, null, Mock.Of(), sqlSyntax); + var stub = new DropForeignKeyMigrationStub(sqlSyntax, Mock.Of()); // Act stub.GetUpExpressions(context); @@ -35,8 +36,9 @@ namespace Umbraco.Tests.Migrations public void Can_Get_Up_Migration_From_MigrationStub() { // Arrange - var context = new MigrationContext(DatabaseProviders.SqlServerCE, null, Mock.Of()); - var stub = new AlterUserTableMigrationStub(new SqlCeSyntaxProvider(), Mock.Of()); + var sqlSyntax = new SqlCeSyntaxProvider(); + var context = new MigrationContext(DatabaseProviders.SqlServerCE, null, Mock.Of(), sqlSyntax); + var stub = new AlterUserTableMigrationStub(sqlSyntax, Mock.Of()); // Act stub.GetUpExpressions(context); diff --git a/src/Umbraco.Tests/Migrations/FindingMigrationsTest.cs b/src/Umbraco.Tests/Migrations/FindingMigrationsTest.cs index a3e6aca822..06facbc720 100644 --- a/src/Umbraco.Tests/Migrations/FindingMigrationsTest.cs +++ b/src/Umbraco.Tests/Migrations/FindingMigrationsTest.cs @@ -4,6 +4,7 @@ using System.Linq; using Moq; using NUnit.Framework; using Umbraco.Core; +using Umbraco.Core.LightInject; using Umbraco.Core.Logging; using Umbraco.Core.ObjectResolution; using Umbraco.Core.Persistence; @@ -20,7 +21,8 @@ namespace Umbraco.Tests.Migrations public void Initialize() { MigrationResolver.Current = new MigrationResolver( - new ActivatorServiceProvider(), Mock.Of(), + new ServiceContainer(), + Mock.Of(), () => new List { typeof (AlterUserTableMigrationStub), @@ -31,16 +33,6 @@ namespace Umbraco.Tests.Migrations typeof (FiveZeroMigration) }); - //This is needed because the PluginManager is creating the migration instances with their default ctors - LoggerResolver.Current = new LoggerResolver(Mock.Of()) - { - CanResolveBeforeFrozen = true - }; - SqlSyntaxContext.SqlSyntaxProvider = new SqlCeSyntaxProvider(); - - Resolution.Freeze(); - - SqlSyntaxContext.SqlSyntaxProvider = new SqlCeSyntaxProvider(); } [Test] @@ -64,7 +56,7 @@ namespace Umbraco.Tests.Migrations Assert.That(list.Count, Is.EqualTo(3)); - var context = new MigrationContext(DatabaseProviders.SqlServerCE, null, Mock.Of()); + var context = new MigrationContext(DatabaseProviders.SqlServerCE, null, Mock.Of(), new SqlCeSyntaxProvider()); foreach (var migration1 in list) { var migration = (MigrationBase) migration1; diff --git a/src/Umbraco.Tests/Migrations/MigrationRunnerTests.cs b/src/Umbraco.Tests/Migrations/MigrationRunnerTests.cs index 01ddf4a871..6ab693e48d 100644 --- a/src/Umbraco.Tests/Migrations/MigrationRunnerTests.cs +++ b/src/Umbraco.Tests/Migrations/MigrationRunnerTests.cs @@ -17,15 +17,16 @@ namespace Umbraco.Tests.Migrations [Test] public void Executes_Only_One_Migration_For_Spanning_Multiple_Targets() { + var sqlSyntax = new SqlCeSyntaxProvider(); var runner = new MigrationRunner(Mock.Of(), new Version(4, 0, 0), new Version(6, 0, 0), "Test"); - var migrations = runner.OrderedUpgradeMigrations(new List { new MultiMigration(new SqlCeSyntaxProvider(), Mock.Of()) }); + var migrations = runner.OrderedUpgradeMigrations(new List { new MultiMigration(sqlSyntax, Mock.Of()) }); var ctx = runner.InitializeMigrations( //new List {new DoRunMigration(), new DoNotRunMigration()}, migrations.ToList(), new Database("umbracoDbDSN") - , DatabaseProviders.SqlServerCE, true); + , DatabaseProviders.SqlServerCE, sqlSyntax, true); Assert.AreEqual(1, ctx.Expressions.Count()); } @@ -33,15 +34,16 @@ namespace Umbraco.Tests.Migrations [Test] public void Executes_Migration_For_Spanning_One_Target_1() { + var sqlSyntax = new SqlCeSyntaxProvider(); var runner = new MigrationRunner(Mock.Of(), new Version(4, 0, 0), new Version(5, 0, 0), "Test"); - var migrations = runner.OrderedUpgradeMigrations(new List { new MultiMigration(new SqlCeSyntaxProvider(), Mock.Of()) }); + var migrations = runner.OrderedUpgradeMigrations(new List { new MultiMigration(sqlSyntax, Mock.Of()) }); var ctx = runner.InitializeMigrations( //new List {new DoRunMigration(), new DoNotRunMigration()}, migrations.ToList(), new Database("umbracoDbDSN") - , DatabaseProviders.SqlServerCE, true); + , DatabaseProviders.SqlServerCE, sqlSyntax, true); Assert.AreEqual(1, ctx.Expressions.Count()); } @@ -49,15 +51,16 @@ namespace Umbraco.Tests.Migrations [Test] public void Executes_Migration_For_Spanning_One_Target_2() { + var sqlSyntax = new SqlCeSyntaxProvider(); var runner = new MigrationRunner(Mock.Of(), new Version(5, 0, 1), new Version(6, 0, 0), "Test"); - var migrations = runner.OrderedUpgradeMigrations(new List { new MultiMigration(new SqlCeSyntaxProvider(), Mock.Of()) }); + var migrations = runner.OrderedUpgradeMigrations(new List { new MultiMigration(sqlSyntax, Mock.Of()) }); var ctx = runner.InitializeMigrations( //new List {new DoRunMigration(), new DoNotRunMigration()}, migrations.ToList(), new Database("umbracoDbDSN") - , DatabaseProviders.SqlServerCE, true); + , DatabaseProviders.SqlServerCE, sqlSyntax, true); Assert.AreEqual(1, ctx.Expressions.Count()); } @@ -72,12 +75,12 @@ namespace Umbraco.Tests.Migrations public override void Up() { - Context.Expressions.Add(new AlterColumnExpression(SqlSyntax)); + Context.Expressions.Add(new AlterColumnExpression(SqlSyntax, DatabaseProviders.SqlServerCE)); } public override void Down() { - Context.Expressions.Add(new AlterColumnExpression(SqlSyntax)); + Context.Expressions.Add(new AlterColumnExpression(SqlSyntax, DatabaseProviders.SqlServerCE)); } } } diff --git a/src/Umbraco.Tests/Migrations/Stubs/AlterUserTableMigrationStub.cs b/src/Umbraco.Tests/Migrations/Stubs/AlterUserTableMigrationStub.cs index b0ff9999a9..e890b3cea3 100644 --- a/src/Umbraco.Tests/Migrations/Stubs/AlterUserTableMigrationStub.cs +++ b/src/Umbraco.Tests/Migrations/Stubs/AlterUserTableMigrationStub.cs @@ -8,11 +8,8 @@ namespace Umbraco.Tests.Migrations.Stubs public class AlterUserTableMigrationStub : MigrationBase { - public AlterUserTableMigrationStub() - { - - } - public AlterUserTableMigrationStub(ISqlSyntaxProvider sqlSyntax, ILogger logger) : base(sqlSyntax, logger) + public AlterUserTableMigrationStub(ISqlSyntaxProvider sqlSyntax, ILogger logger) + : base(sqlSyntax, logger) { } @@ -28,26 +25,4 @@ namespace Umbraco.Tests.Migrations.Stubs { } } - - - [MigrationAttribute("1.0.0", 0, "Test")] - public class DropForeignKeyMigrationStub : MigrationBase - { - public DropForeignKeyMigrationStub() - { - - } - public DropForeignKeyMigrationStub(ISqlSyntaxProvider sqlSyntax, ILogger logger) : base(sqlSyntax, logger) - { - } - - public override void Up() - { - Delete.ForeignKey().FromTable("umbracoUser2app").ForeignColumn("user").ToTable("umbracoUser").PrimaryColumn("id"); - } - - public override void Down() - { - } - } } \ No newline at end of file diff --git a/src/Umbraco.Tests/Migrations/Stubs/DropForeignKeyMigrationStub.cs b/src/Umbraco.Tests/Migrations/Stubs/DropForeignKeyMigrationStub.cs new file mode 100644 index 0000000000..e24ca692e2 --- /dev/null +++ b/src/Umbraco.Tests/Migrations/Stubs/DropForeignKeyMigrationStub.cs @@ -0,0 +1,24 @@ +using Umbraco.Core.Logging; +using Umbraco.Core.Persistence.Migrations; +using Umbraco.Core.Persistence.SqlSyntax; + +namespace Umbraco.Tests.Migrations.Stubs +{ + [Migration("1.0.0", 0, "Test")] + public class DropForeignKeyMigrationStub : MigrationBase + { + public DropForeignKeyMigrationStub(ISqlSyntaxProvider sqlSyntax, ILogger logger) + : base(sqlSyntax, logger) + { + } + + public override void Up() + { + Delete.ForeignKey().FromTable("umbracoUser2app").ForeignColumn("user").ToTable("umbracoUser").PrimaryColumn("id"); + } + + public override void Down() + { + } + } +} \ No newline at end of file diff --git a/src/Umbraco.Tests/Migrations/Stubs/FiveZeroMigration.cs b/src/Umbraco.Tests/Migrations/Stubs/FiveZeroMigration.cs index 1c4c9f9db7..2c0ebaedc3 100644 --- a/src/Umbraco.Tests/Migrations/Stubs/FiveZeroMigration.cs +++ b/src/Umbraco.Tests/Migrations/Stubs/FiveZeroMigration.cs @@ -1,10 +1,17 @@ +using Umbraco.Core.Logging; using Umbraco.Core.Persistence.Migrations; +using Umbraco.Core.Persistence.SqlSyntax; namespace Umbraco.Tests.Migrations.Stubs { [Migration("5.0.0", 0, "Test")] public class FiveZeroMigration : MigrationBase { + public FiveZeroMigration(ISqlSyntaxProvider sqlSyntax, ILogger logger) + : base(sqlSyntax, logger) + { + } + public override void Up() { } diff --git a/src/Umbraco.Tests/Migrations/Stubs/FourElevenMigration.cs b/src/Umbraco.Tests/Migrations/Stubs/FourElevenMigration.cs index bf75a678cb..0f555912c6 100644 --- a/src/Umbraco.Tests/Migrations/Stubs/FourElevenMigration.cs +++ b/src/Umbraco.Tests/Migrations/Stubs/FourElevenMigration.cs @@ -1,10 +1,17 @@ +using Umbraco.Core.Logging; using Umbraco.Core.Persistence.Migrations; +using Umbraco.Core.Persistence.SqlSyntax; namespace Umbraco.Tests.Migrations.Stubs { [Migration("4.11.0", 0, "Test")] public class FourElevenMigration : MigrationBase { + public FourElevenMigration(ISqlSyntaxProvider sqlSyntax, ILogger logger) + : base(sqlSyntax, logger) + { + } + public override void Up() { Alter.Table("umbracoUser").AddColumn("companyPhone").AsString(255); diff --git a/src/Umbraco.Tests/Migrations/Stubs/SixZeroMigration1.cs b/src/Umbraco.Tests/Migrations/Stubs/SixZeroMigration1.cs index 7770b4a481..775e8523a4 100644 --- a/src/Umbraco.Tests/Migrations/Stubs/SixZeroMigration1.cs +++ b/src/Umbraco.Tests/Migrations/Stubs/SixZeroMigration1.cs @@ -1,10 +1,17 @@ -using Umbraco.Core.Persistence.Migrations; +using Umbraco.Core.Logging; +using Umbraco.Core.Persistence.Migrations; +using Umbraco.Core.Persistence.SqlSyntax; namespace Umbraco.Tests.Migrations.Stubs { [MigrationAttribute("6.0.0", 1, "Test")] public class SixZeroMigration1 : MigrationBase { + public SixZeroMigration1(ISqlSyntaxProvider sqlSyntax, ILogger logger) + : base(sqlSyntax, logger) + { + } + public override void Up() { Alter.Table("umbracoUser").AddColumn("secret").AsString(255); diff --git a/src/Umbraco.Tests/Migrations/Stubs/SixZeroMigration2.cs b/src/Umbraco.Tests/Migrations/Stubs/SixZeroMigration2.cs index 277d44775f..80e2c155e0 100644 --- a/src/Umbraco.Tests/Migrations/Stubs/SixZeroMigration2.cs +++ b/src/Umbraco.Tests/Migrations/Stubs/SixZeroMigration2.cs @@ -1,10 +1,17 @@ +using Umbraco.Core.Logging; using Umbraco.Core.Persistence.Migrations; +using Umbraco.Core.Persistence.SqlSyntax; namespace Umbraco.Tests.Migrations.Stubs { [Migration("6.0.0", 2, "Test")] public class SixZeroMigration2 : MigrationBase { + public SixZeroMigration2(ISqlSyntaxProvider sqlSyntax, ILogger logger) + : base(sqlSyntax, logger) + { + } + public override void Up() { Alter.Table("umbracoUser").AddColumn("secondEmail").AsString(255); diff --git a/src/Umbraco.Tests/Migrations/TargetVersionSixthMigrationsTest.cs b/src/Umbraco.Tests/Migrations/TargetVersionSixthMigrationsTest.cs index 1697110b5d..fd4da08222 100644 --- a/src/Umbraco.Tests/Migrations/TargetVersionSixthMigrationsTest.cs +++ b/src/Umbraco.Tests/Migrations/TargetVersionSixthMigrationsTest.cs @@ -7,6 +7,7 @@ using Moq; using NUnit.Framework; using SQLCE4Umbraco; using Umbraco.Core; +using Umbraco.Core.LightInject; using Umbraco.Core.Logging; using Umbraco.Core.ObjectResolution; using Umbraco.Core.Persistence; @@ -33,7 +34,8 @@ namespace Umbraco.Tests.Migrations AppDomain.CurrentDomain.SetData("DataDirectory", Path); MigrationResolver.Current = new MigrationResolver( - new ActivatorServiceProvider(), ProfilingLogger.Logger, + new ServiceContainer(), + ProfilingLogger.Logger, () => new List { typeof (Core.Persistence.Migrations.Upgrades.TargetVersionFourNineZero.RemoveUmbracoAppConstraints), @@ -55,12 +57,9 @@ namespace Umbraco.Tests.Migrations { CanResolveBeforeFrozen = true }; - SqlSyntaxContext.SqlSyntaxProvider = new SqlCeSyntaxProvider(); Resolution.Freeze(); - SqlSyntaxContext.SqlSyntaxProvider = new SqlCeSyntaxProvider(); - var engine = new SqlCeEngine("Datasource=|DataDirectory|UmbracoPetaPocoTests.sdf;Flush Interval=1;"); engine.CreateDatabase(); } @@ -89,7 +88,7 @@ namespace Umbraco.Tests.Migrations var migrationRunner = new MigrationRunner(Logger, configuredVersion, targetVersion, GlobalSettings.UmbracoMigrationName); var migrations = migrationRunner.OrderedUpgradeMigrations(foundMigrations).ToList(); - var context = new MigrationContext(DatabaseProviders.SqlServerCE, db, Logger); + var context = new MigrationContext(DatabaseProviders.SqlServerCE, db, Logger, SqlSyntax); foreach (MigrationBase migration in migrations) { migration.GetUpExpressions(context); @@ -109,7 +108,6 @@ namespace Umbraco.Tests.Migrations base.TearDown(); PluginManager.Current = null; - SqlSyntaxContext.SqlSyntaxProvider = null; MigrationResolver.Reset(); TestHelper.CleanContentDirectories(); diff --git a/src/Umbraco.Tests/Migrations/Upgrades/BaseUpgradeTest.cs b/src/Umbraco.Tests/Migrations/Upgrades/BaseUpgradeTest.cs index ea99b01c32..6c1918cda1 100644 --- a/src/Umbraco.Tests/Migrations/Upgrades/BaseUpgradeTest.cs +++ b/src/Umbraco.Tests/Migrations/Upgrades/BaseUpgradeTest.cs @@ -5,6 +5,7 @@ using Moq; using NUnit.Framework; using Umbraco.Core; using Umbraco.Core.Configuration; +using Umbraco.Core.LightInject; using Umbraco.Core.Logging; using Umbraco.Core.ObjectResolution; using Umbraco.Core.Persistence; @@ -31,7 +32,8 @@ namespace Umbraco.Tests.Migrations.Upgrades AppDomain.CurrentDomain.SetData("DataDirectory", Path); MigrationResolver.Current = new MigrationResolver( - new ActivatorServiceProvider(), Mock.Of(), + new ServiceContainer(), + Mock.Of(), () => new List { typeof (Core.Persistence.Migrations.Upgrades.TargetVersionFourNineZero.RemoveUmbracoAppConstraints), @@ -57,12 +59,14 @@ namespace Umbraco.Tests.Migrations.Upgrades DatabaseSpecificSetUp(); - SqlSyntaxContext.SqlSyntaxProvider = GetSyntaxProvider(); + } [Test] public virtual void Can_Upgrade_From_470_To_600() { + var sqlHelper = new SqlCeSyntaxProvider(); + var configuredVersion = new Version("4.7.0"); var targetVersion = new Version("6.0.0"); var provider = GetDatabaseProvider(); @@ -82,13 +86,15 @@ namespace Umbraco.Tests.Migrations.Upgrades //Setup the MigrationRunner var migrationRunner = new MigrationRunner(Mock.Of(), configuredVersion, targetVersion, GlobalSettings.UmbracoMigrationName); - bool upgraded = migrationRunner.Execute(db, provider, true); + bool upgraded = migrationRunner.Execute(db, provider, sqlHelper, true); Assert.That(upgraded, Is.True); - bool hasTabTable = db.TableExist("cmsTab"); - bool hasPropertyTypeGroupTable = db.TableExist("cmsPropertyTypeGroup"); - bool hasAppTreeTable = db.TableExist("umbracoAppTree"); + var schemaHelper = new DatabaseSchemaHelper(db, Mock.Of(), sqlHelper); + + bool hasTabTable = schemaHelper.TableExist("cmsTab"); + bool hasPropertyTypeGroupTable = schemaHelper.TableExist("cmsPropertyTypeGroup"); + bool hasAppTreeTable = schemaHelper.TableExist("umbracoAppTree"); Assert.That(hasTabTable, Is.False); Assert.That(hasPropertyTypeGroupTable, Is.True); @@ -99,7 +105,6 @@ namespace Umbraco.Tests.Migrations.Upgrades public virtual void TearDown() { PluginManager.Current = null; - SqlSyntaxContext.SqlSyntaxProvider = null; MigrationResolver.Reset(); LoggerResolver.Reset(); diff --git a/src/Umbraco.Tests/Migrations/Upgrades/SqlCeDataUpgradeTest.cs b/src/Umbraco.Tests/Migrations/Upgrades/SqlCeDataUpgradeTest.cs index a3b0623f34..5ae93e9805 100644 --- a/src/Umbraco.Tests/Migrations/Upgrades/SqlCeDataUpgradeTest.cs +++ b/src/Umbraco.Tests/Migrations/Upgrades/SqlCeDataUpgradeTest.cs @@ -18,22 +18,26 @@ namespace Umbraco.Tests.Migrations.Upgrades [Test, NUnit.Framework.Ignore] public override void Can_Upgrade_From_470_To_600() { + var sqlSyntax = new SqlCeSyntaxProvider(); + var configuredVersion = new Version("4.11.0"); var targetVersion = new Version("6.0.0"); var provider = GetDatabaseProvider(); var db = GetConfiguredDatabase(); - var fix = new PublishAfterUpgradeToVersionSixth(); + var fix = new PublishAfterUpgradeToVersionSixth(sqlSyntax); //Setup the MigrationRunner var migrationRunner = new MigrationRunner(Mock.Of(), configuredVersion, targetVersion, GlobalSettings.UmbracoMigrationName); - bool upgraded = migrationRunner.Execute(db, provider, true); + bool upgraded = migrationRunner.Execute(db, provider, sqlSyntax, true); Assert.That(upgraded, Is.True); - bool hasTabTable = db.TableExist("cmsTab"); - bool hasPropertyTypeGroupTable = db.TableExist("cmsPropertyTypeGroup"); - bool hasAppTreeTable = db.TableExist("umbracoAppTree"); + var schemaHelper = new DatabaseSchemaHelper(db, Mock.Of(), sqlSyntax); + + bool hasTabTable = schemaHelper.TableExist("cmsTab"); + bool hasPropertyTypeGroupTable = schemaHelper.TableExist("cmsPropertyTypeGroup"); + bool hasAppTreeTable = schemaHelper.TableExist("umbracoAppTree"); fix.Unsubscribe(); diff --git a/src/Umbraco.Tests/Migrations/Upgrades/SqlCeUpgradeTest.cs b/src/Umbraco.Tests/Migrations/Upgrades/SqlCeUpgradeTest.cs index 0f8e0543ad..856a8fcf4e 100644 --- a/src/Umbraco.Tests/Migrations/Upgrades/SqlCeUpgradeTest.cs +++ b/src/Umbraco.Tests/Migrations/Upgrades/SqlCeUpgradeTest.cs @@ -17,8 +17,6 @@ namespace Umbraco.Tests.Migrations.Upgrades { public override void DatabaseSpecificSetUp() { - SqlSyntaxContext.SqlSyntaxProvider = new SqlCeSyntaxProvider(); - string filePath = string.Concat(Path, "\\UmbracoPetaPocoTests.sdf"); if (!File.Exists(filePath)) diff --git a/src/Umbraco.Tests/Migrations/Upgrades/ValidateOlderSchemaTest.cs b/src/Umbraco.Tests/Migrations/Upgrades/ValidateOlderSchemaTest.cs index e735e2330c..f64b7041ea 100644 --- a/src/Umbraco.Tests/Migrations/Upgrades/ValidateOlderSchemaTest.cs +++ b/src/Umbraco.Tests/Migrations/Upgrades/ValidateOlderSchemaTest.cs @@ -73,13 +73,11 @@ namespace Umbraco.Tests.Migrations.Upgrades var engine = new SqlCeEngine(settings.ConnectionString); engine.CreateDatabase(); - SqlSyntaxContext.SqlSyntaxProvider = new SqlCeSyntaxProvider(); } [TearDown] public virtual void TearDown() { - SqlSyntaxContext.SqlSyntaxProvider = null; Resolution.Reset(); TestHelper.CleanContentDirectories(); diff --git a/src/Umbraco.Tests/Migrations/Upgrades/ValidateV7TagsUpgradeTest.cs b/src/Umbraco.Tests/Migrations/Upgrades/ValidateV7TagsUpgradeTest.cs deleted file mode 100644 index f784dc3bea..0000000000 --- a/src/Umbraco.Tests/Migrations/Upgrades/ValidateV7TagsUpgradeTest.cs +++ /dev/null @@ -1,135 +0,0 @@ -using System.Collections.Generic; -using System.Linq; -using Moq; -using NUnit.Framework; -using Umbraco.Core; -using Umbraco.Core.Configuration.UmbracoSettings; -using Umbraco.Core.IO; -using Umbraco.Core.Logging; -using Umbraco.Core.Models; -using Umbraco.Core.Models.Rdbms; -using Umbraco.Core.Persistence; - -using Umbraco.Core.Persistence.Migrations; -using Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSeven; -using Umbraco.Core.Persistence.Repositories; -using Umbraco.Core.Persistence.UnitOfWork; -using Umbraco.Tests.TestHelpers; -using Umbraco.Tests.TestHelpers.Entities; - -namespace Umbraco.Tests.Migrations.Upgrades -{ - [NUnit.Framework.Ignore("This won't work because it is tested against the v6 database but once we upgrade the TagRelationshipDto to have the new cols the old cols wont exist in this test. Rest assured that this test did pass before I modified TagRelationshipDto. Just not sure how to force a legacy db to be created for a test.")] - [TestFixture] - public class ValidateV7TagsUpgradeTest : BaseDatabaseFactoryTest - { - private ContentRepository CreateRepository(IDatabaseUnitOfWork unitOfWork, out ContentTypeRepository contentTypeRepository) - { - var templateRepository = new TemplateRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, Mock.Of(), Mock.Of(), Mock.Of()); - var tagRepository = new TagRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax); - contentTypeRepository = new ContentTypeRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, templateRepository); - var repository = new ContentRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, contentTypeRepository, templateRepository, tagRepository); - return repository; - } - - [Test] - public void Validate_Data_Upgrade() - { - var provider = new PetaPocoUnitOfWorkProvider(Logger); - var unitOfWork = provider.GetUnitOfWork(); - ContentTypeRepository contentTypeRepository; - var insertedContent = new List(); - using (var repository = CreateRepository(unitOfWork, out contentTypeRepository)) - { - //we need to populate some data to upgrade - var contentTypeWith1Tag = MockedContentTypes.CreateSimpleContentType( - "tags1", "tags1", - new PropertyTypeCollection(new[] - { - new PropertyType("test", DataTypeDatabaseType.Ntext) {Alias = "tags1", Name = "tags1", SortOrder = 1, DataTypeDefinitionId = 1041}, - })); - var contentTypeWith2Tags = MockedContentTypes.CreateSimpleContentType( - "tags2", "tags2", - new PropertyTypeCollection(new[] - { - new PropertyType("test", DataTypeDatabaseType.Ntext) {Alias = "tags1", Name = "tags1", SortOrder = 1, DataTypeDefinitionId = 1041}, - new PropertyType("test", DataTypeDatabaseType.Ntext) {Alias = "tags2", Name = "tags2", SortOrder = 1, DataTypeDefinitionId = 1041} - })); - - contentTypeRepository.AddOrUpdate(contentTypeWith1Tag); - contentTypeRepository.AddOrUpdate(contentTypeWith2Tags); - unitOfWork.Commit(); - - for (var i = 0; i < 10; i++) - { - var content = new Content("test" + i, -1, contentTypeWith1Tag) { Language = "en-US", CreatorId = 0, WriterId = 0 }; - var obj = new - { - tags1 = "tag1,tag2,tag3,tag4,tag5" - }; - content.PropertyValues(obj); - content.ResetDirtyProperties(false); - insertedContent.Add(content); - repository.AddOrUpdate(content); - } - for (var i = 0; i < 10; i++) - { - var content = new Content("test-multi" + i, -1, contentTypeWith2Tags) { Language = "en-US", CreatorId = 0, WriterId = 0 }; - var obj = new - { - //NOTE: These will always be the same during an upgrade since we can only support tags per document not per property - tags1 = "tag1,tag2,tag3,anothertag1,anothertag2", - tags2 = "tag1,tag2,tag3,anothertag1,anothertag2" - }; - content.PropertyValues(obj); - content.ResetDirtyProperties(false); - insertedContent.Add(content); - repository.AddOrUpdate(content); - } - unitOfWork.Commit(); - } - //now that we have to create some test tag data - foreach (var tag in "tag1,tag2,tag3,tag4,tag5,anothertag1,anothertag2".Split(',')) - { - DatabaseContext.Database.Insert(new TagDto {Tag = tag, Group = "default"}); - } - var alltags = DatabaseContext.Database.Fetch("SELECT * FROM cmsTags").ToArray(); - foreach (var content in insertedContent) - { - if (content.ContentType.Alias == "tags1") - { - var tags1Tags = alltags.Where(x => "tag1,tag2,tag3,tag4,tag5".Split(',').Contains(x.Tag)); - foreach (var t in tags1Tags) - { - DatabaseContext.Database.Insert(new TagRelationshipDto {NodeId = content.Id, TagId = t.Id}); - } - } - else - { - var tags1Tags = alltags.Where(x => "tag1,tag2,tag3,anothertag1,anothertag2".Split(',').Contains(x.Tag)); - foreach (var t in tags1Tags) - { - DatabaseContext.Database.Insert(new TagRelationshipDto { NodeId = content.Id, TagId = t.Id }); - } - } - } - - //lastly, we'll insert a tag relation with a relation to only an umbracoNode - - // this will generate a delete clause and a warning - DatabaseContext.Database.Insert(new TagRelationshipDto { NodeId = -1, TagId = alltags.First().Id }); - - - var migration = new AlterTagRelationsTable(); - var migrationContext = new MigrationContext(DatabaseProviders.SqlServerCE, DatabaseContext.Database, Logger); - migration.GetUpExpressions(migrationContext); - - Assert.AreEqual( - (10 * 5) //the docs that only have 1 tag prop per document - + (10 * 5) //the docs that have 2 tag prop per document - these are the update statements - + (10 * 5) //the docs that have 2 tag prop per document - these are the insert statements - + 1//the delete clause - + 7 , //additional db expressions - migrationContext.Expressions.Count); - } - } -} \ No newline at end of file diff --git a/src/Umbraco.Tests/Migrations/Upgrades/ValidateV7UpgradeTest.cs b/src/Umbraco.Tests/Migrations/Upgrades/ValidateV7UpgradeTest.cs index 973cfdfe70..99151c8bb3 100644 --- a/src/Umbraco.Tests/Migrations/Upgrades/ValidateV7UpgradeTest.cs +++ b/src/Umbraco.Tests/Migrations/Upgrades/ValidateV7UpgradeTest.cs @@ -17,8 +17,10 @@ namespace Umbraco.Tests.Migrations.Upgrades [Test] public void Validate_AddIndexToCmsMacroTable() { - var migration = new AddIndexToCmsMacroTable(true, new SqlCeSyntaxProvider(), Mock.Of()); - var migrationContext = new MigrationContext(DatabaseProviders.SqlServerCE, null, Mock.Of()); + var sqlSyntax = new SqlCeSyntaxProvider(); + var migration = new AddIndexToCmsMacroTable(true, sqlSyntax, Mock.Of()); + var migrationContext = new MigrationContext(DatabaseProviders.SqlServerCE, null, Mock.Of(), + sqlSyntax); migration.GetUpExpressions(migrationContext); Assert.AreEqual(1, migrationContext.Expressions.Count); @@ -31,8 +33,9 @@ namespace Umbraco.Tests.Migrations.Upgrades [Test] public void Validate_AddIndexToCmsMacroPropertyTable() { - var migration = new AddIndexToCmsMacroPropertyTable(true, new SqlCeSyntaxProvider(), Mock.Of()); - var migrationContext = new MigrationContext(DatabaseProviders.SqlServerCE, null, Mock.Of()); + var sqlSyntax = new SqlCeSyntaxProvider(); + var migration = new AddIndexToCmsMacroPropertyTable(true, sqlSyntax, Mock.Of()); + var migrationContext = new MigrationContext(DatabaseProviders.SqlServerCE, null, Mock.Of(), sqlSyntax); migration.GetUpExpressions(migrationContext); Assert.AreEqual(1, migrationContext.Expressions.Count); diff --git a/src/Umbraco.Tests/Persistence/DatabaseContextTests.cs b/src/Umbraco.Tests/Persistence/DatabaseContextTests.cs index a1f6dd3b89..31af5dbcaf 100644 --- a/src/Umbraco.Tests/Persistence/DatabaseContextTests.cs +++ b/src/Umbraco.Tests/Persistence/DatabaseContextTests.cs @@ -91,7 +91,7 @@ namespace Umbraco.Tests.Persistence var schemaHelper = new DatabaseSchemaHelper(_dbContext.Database, Mock.Of(), new SqlCeSyntaxProvider()); //Create the umbraco database - schemaHelper.CreateDatabaseSchema(false, new ApplicationContext(CacheHelper.CreateDisabledCacheHelper())); + schemaHelper.CreateDatabaseSchema(); bool umbracoNodeTable = schemaHelper.TableExist("umbracoNode"); bool umbracoUserTable = schemaHelper.TableExist("umbracoUser"); diff --git a/src/Umbraco.Tests/Persistence/Mappers/ContentMapperTest.cs b/src/Umbraco.Tests/Persistence/Mappers/ContentMapperTest.cs index f0822ce4f4..0ab94a75ec 100644 --- a/src/Umbraco.Tests/Persistence/Mappers/ContentMapperTest.cs +++ b/src/Umbraco.Tests/Persistence/Mappers/ContentMapperTest.cs @@ -10,11 +10,9 @@ namespace Umbraco.Tests.Persistence.Mappers [Test] public void Can_Map_Id_Property() { - // Arrange - SqlSyntaxContext.SqlSyntaxProvider = new SqlCeSyntaxProvider(); // Act - string column = new ContentMapper().Map("Id"); + string column = new ContentMapper(new SqlCeSyntaxProvider()).Map("Id"); // Assert Assert.That(column, Is.EqualTo("[umbracoNode].[id]")); @@ -23,11 +21,9 @@ namespace Umbraco.Tests.Persistence.Mappers [Test] public void Can_Map_Trashed_Property() { - // Arrange - SqlSyntaxContext.SqlSyntaxProvider = new SqlCeSyntaxProvider(); // Act - string column = new ContentMapper().Map("Trashed"); + string column = new ContentMapper(new SqlCeSyntaxProvider()).Map("Trashed"); // Assert Assert.That(column, Is.EqualTo("[umbracoNode].[trashed]")); @@ -36,11 +32,9 @@ namespace Umbraco.Tests.Persistence.Mappers [Test] public void Can_Map_Published_Property() { - // Arrange - SqlSyntaxContext.SqlSyntaxProvider = new SqlCeSyntaxProvider(); // Act - string column = new ContentMapper().Map("Published"); + string column = new ContentMapper(new SqlCeSyntaxProvider()).Map("Published"); // Assert Assert.That(column, Is.EqualTo("[cmsDocument].[published]")); @@ -49,11 +43,9 @@ namespace Umbraco.Tests.Persistence.Mappers [Test] public void Can_Map_Version_Property() { - // Arrange - SqlSyntaxContext.SqlSyntaxProvider = new SqlCeSyntaxProvider(); // Act - string column = new ContentMapper().Map("Version"); + string column = new ContentMapper(new SqlCeSyntaxProvider()).Map("Version"); // Assert Assert.That(column, Is.EqualTo("[cmsContentVersion].[VersionId]")); diff --git a/src/Umbraco.Tests/Persistence/Mappers/ContentTypeMapperTest.cs b/src/Umbraco.Tests/Persistence/Mappers/ContentTypeMapperTest.cs index 3f9d4197c6..519abac640 100644 --- a/src/Umbraco.Tests/Persistence/Mappers/ContentTypeMapperTest.cs +++ b/src/Umbraco.Tests/Persistence/Mappers/ContentTypeMapperTest.cs @@ -10,11 +10,9 @@ namespace Umbraco.Tests.Persistence.Mappers [Test] public void Can_Map_Id_Property() { - // Arrange - SqlSyntaxContext.SqlSyntaxProvider = new SqlCeSyntaxProvider(); // Act - string column = new ContentTypeMapper().Map("Id"); + string column = new ContentTypeMapper(new SqlCeSyntaxProvider()).Map("Id"); // Assert Assert.That(column, Is.EqualTo("[umbracoNode].[id]")); @@ -23,11 +21,9 @@ namespace Umbraco.Tests.Persistence.Mappers [Test] public void Can_Map_Name_Property() { - // Arrange - SqlSyntaxContext.SqlSyntaxProvider = new SqlCeSyntaxProvider(); // Act - string column = new ContentTypeMapper().Map("Name"); + string column = new ContentTypeMapper(new SqlCeSyntaxProvider()).Map("Name"); // Assert Assert.That(column, Is.EqualTo("[umbracoNode].[text]")); @@ -36,11 +32,9 @@ namespace Umbraco.Tests.Persistence.Mappers [Test] public void Can_Map_Thumbnail_Property() { - // Arrange - SqlSyntaxContext.SqlSyntaxProvider = new SqlCeSyntaxProvider(); // Act - string column = new ContentTypeMapper().Map("Thumbnail"); + string column = new ContentTypeMapper(new SqlCeSyntaxProvider()).Map("Thumbnail"); // Assert Assert.That(column, Is.EqualTo("[cmsContentType].[thumbnail]")); @@ -49,11 +43,9 @@ namespace Umbraco.Tests.Persistence.Mappers [Test] public void Can_Map_Description_Property() { - // Arrange - SqlSyntaxContext.SqlSyntaxProvider = new SqlCeSyntaxProvider(); // Act - string column = new ContentTypeMapper().Map("Description"); + string column = new ContentTypeMapper(new SqlCeSyntaxProvider()).Map("Description"); // Assert Assert.That(column, Is.EqualTo("[cmsContentType].[description]")); diff --git a/src/Umbraco.Tests/Persistence/Mappers/DataTypeDefinitionMapperTest.cs b/src/Umbraco.Tests/Persistence/Mappers/DataTypeDefinitionMapperTest.cs index d095ace4d9..d62eb89a3b 100644 --- a/src/Umbraco.Tests/Persistence/Mappers/DataTypeDefinitionMapperTest.cs +++ b/src/Umbraco.Tests/Persistence/Mappers/DataTypeDefinitionMapperTest.cs @@ -10,11 +10,9 @@ namespace Umbraco.Tests.Persistence.Mappers [Test] public void Can_Map_Id_Property() { - // Arrange - SqlSyntaxContext.SqlSyntaxProvider = new SqlCeSyntaxProvider(); // Act - string column = new DataTypeDefinitionMapper().Map("Id"); + string column = new DataTypeDefinitionMapper(new SqlCeSyntaxProvider()).Map("Id"); // Assert Assert.That(column, Is.EqualTo("[umbracoNode].[id]")); @@ -23,11 +21,9 @@ namespace Umbraco.Tests.Persistence.Mappers [Test] public void Can_Map_Key_Property() { - // Arrange - SqlSyntaxContext.SqlSyntaxProvider = new SqlCeSyntaxProvider(); // Act - string column = new DataTypeDefinitionMapper().Map("Key"); + string column = new DataTypeDefinitionMapper(new SqlCeSyntaxProvider()).Map("Key"); // Assert Assert.That(column, Is.EqualTo("[umbracoNode].[uniqueID]")); @@ -36,11 +32,9 @@ namespace Umbraco.Tests.Persistence.Mappers [Test] public void Can_Map_DatabaseType_Property() { - // Arrange - SqlSyntaxContext.SqlSyntaxProvider = new SqlCeSyntaxProvider(); // Act - string column = new DataTypeDefinitionMapper().Map("DatabaseType"); + string column = new DataTypeDefinitionMapper(new SqlCeSyntaxProvider()).Map("DatabaseType"); // Assert Assert.That(column, Is.EqualTo("[cmsDataType].[dbType]")); @@ -49,11 +43,9 @@ namespace Umbraco.Tests.Persistence.Mappers [Test] public void Can_Map_PropertyEditorAlias_Property() { - // Arrange - SqlSyntaxContext.SqlSyntaxProvider = new SqlCeSyntaxProvider(); // Act - string column = new DataTypeDefinitionMapper().Map("PropertyEditorAlias"); + string column = new DataTypeDefinitionMapper(new SqlCeSyntaxProvider()).Map("PropertyEditorAlias"); // Assert Assert.That(column, Is.EqualTo("[cmsDataType].[propertyEditorAlias]")); diff --git a/src/Umbraco.Tests/Persistence/Mappers/DictionaryMapperTest.cs b/src/Umbraco.Tests/Persistence/Mappers/DictionaryMapperTest.cs index 3b62429a68..a0bf4cac5c 100644 --- a/src/Umbraco.Tests/Persistence/Mappers/DictionaryMapperTest.cs +++ b/src/Umbraco.Tests/Persistence/Mappers/DictionaryMapperTest.cs @@ -10,11 +10,9 @@ namespace Umbraco.Tests.Persistence.Mappers [Test] public void Can_Map_Id_Property() { - // Arrange - SqlSyntaxContext.SqlSyntaxProvider = new SqlCeSyntaxProvider(); // Act - string column = new DictionaryMapper().Map("Id"); + string column = new DictionaryMapper(new SqlCeSyntaxProvider()).Map("Id"); // Assert Assert.That(column, Is.EqualTo("[cmsDictionary].[pk]")); @@ -23,11 +21,9 @@ namespace Umbraco.Tests.Persistence.Mappers [Test] public void Can_Map_Key_Property() { - // Arrange - SqlSyntaxContext.SqlSyntaxProvider = new SqlCeSyntaxProvider(); // Act - string column = new DictionaryMapper().Map("Key"); + string column = new DictionaryMapper(new SqlCeSyntaxProvider()).Map("Key"); // Assert Assert.That(column, Is.EqualTo("[cmsDictionary].[id]")); @@ -36,11 +32,9 @@ namespace Umbraco.Tests.Persistence.Mappers [Test] public void Can_Map_ItemKey_Property() { - // Arrange - SqlSyntaxContext.SqlSyntaxProvider = new SqlCeSyntaxProvider(); // Act - string column = new DictionaryMapper().Map("ItemKey"); + string column = new DictionaryMapper(new SqlCeSyntaxProvider()).Map("ItemKey"); // Assert Assert.That(column, Is.EqualTo("[cmsDictionary].[key]")); diff --git a/src/Umbraco.Tests/Persistence/Mappers/DictionaryTranslationMapperTest.cs b/src/Umbraco.Tests/Persistence/Mappers/DictionaryTranslationMapperTest.cs index b2f68e7f1f..252c0d7b4f 100644 --- a/src/Umbraco.Tests/Persistence/Mappers/DictionaryTranslationMapperTest.cs +++ b/src/Umbraco.Tests/Persistence/Mappers/DictionaryTranslationMapperTest.cs @@ -10,11 +10,9 @@ namespace Umbraco.Tests.Persistence.Mappers [Test] public void Can_Map_Key_Property() { - // Arrange - SqlSyntaxContext.SqlSyntaxProvider = new SqlCeSyntaxProvider(); // Act - string column = new DictionaryTranslationMapper().Map("Key"); + string column = new DictionaryTranslationMapper(new SqlCeSyntaxProvider()).Map("Key"); // Assert Assert.That(column, Is.EqualTo("[cmsLanguageText].[UniqueId]")); @@ -23,11 +21,9 @@ namespace Umbraco.Tests.Persistence.Mappers [Test] public void Can_Map_Language_Property() { - // Arrange - SqlSyntaxContext.SqlSyntaxProvider = new SqlCeSyntaxProvider(); // Act - string column = new DictionaryTranslationMapper().Map("Language"); + string column = new DictionaryTranslationMapper(new SqlCeSyntaxProvider()).Map("Language"); // Assert Assert.That(column, Is.EqualTo("[cmsLanguageText].[languageId]")); @@ -36,11 +32,9 @@ namespace Umbraco.Tests.Persistence.Mappers [Test] public void Can_Map_Value_Property() { - // Arrange - SqlSyntaxContext.SqlSyntaxProvider = new SqlCeSyntaxProvider(); // Act - string column = new DictionaryTranslationMapper().Map("Value"); + string column = new DictionaryTranslationMapper(new SqlCeSyntaxProvider()).Map("Value"); // Assert Assert.That(column, Is.EqualTo("[cmsLanguageText].[value]")); diff --git a/src/Umbraco.Tests/Persistence/Mappers/LanguageMapperTest.cs b/src/Umbraco.Tests/Persistence/Mappers/LanguageMapperTest.cs index ab1fe89f6c..81d7e347f3 100644 --- a/src/Umbraco.Tests/Persistence/Mappers/LanguageMapperTest.cs +++ b/src/Umbraco.Tests/Persistence/Mappers/LanguageMapperTest.cs @@ -10,11 +10,9 @@ namespace Umbraco.Tests.Persistence.Mappers [Test] public void Can_Map_Id_Property() { - // Arrange - SqlSyntaxContext.SqlSyntaxProvider = new SqlCeSyntaxProvider(); // Act - string column = new LanguageMapper().Map("Id"); + string column = new LanguageMapper(new SqlCeSyntaxProvider()).Map("Id"); // Assert Assert.That(column, Is.EqualTo("[umbracoLanguage].[id]")); @@ -23,11 +21,9 @@ namespace Umbraco.Tests.Persistence.Mappers [Test] public void Can_Map_IsoCode_Property() { - // Arrange - SqlSyntaxContext.SqlSyntaxProvider = new SqlCeSyntaxProvider(); // Act - string column = new LanguageMapper().Map("IsoCode"); + string column = new LanguageMapper(new SqlCeSyntaxProvider()).Map("IsoCode"); // Assert Assert.That(column, Is.EqualTo("[umbracoLanguage].[languageISOCode]")); @@ -36,11 +32,8 @@ namespace Umbraco.Tests.Persistence.Mappers [Test] public void Can_Map_CultureName_Property() { - // Arrange - SqlSyntaxContext.SqlSyntaxProvider = new SqlCeSyntaxProvider(); - // Act - string column = new LanguageMapper().Map("CultureName"); + string column = new LanguageMapper(new SqlCeSyntaxProvider()).Map("CultureName"); // Assert Assert.That(column, Is.EqualTo("[umbracoLanguage].[languageCultureName]")); diff --git a/src/Umbraco.Tests/Persistence/Mappers/MediaMapperTest.cs b/src/Umbraco.Tests/Persistence/Mappers/MediaMapperTest.cs index cbdce90568..2a1d5788b7 100644 --- a/src/Umbraco.Tests/Persistence/Mappers/MediaMapperTest.cs +++ b/src/Umbraco.Tests/Persistence/Mappers/MediaMapperTest.cs @@ -10,11 +10,8 @@ namespace Umbraco.Tests.Persistence.Mappers [Test] public void Can_Map_Id_Property() { - // Arrange - SqlSyntaxContext.SqlSyntaxProvider = new SqlCeSyntaxProvider(); - // Act - string column = new MediaMapper().Map("Id"); + string column = new MediaMapper(new SqlCeSyntaxProvider()).Map("Id"); // Assert Assert.That(column, Is.EqualTo("[umbracoNode].[id]")); @@ -23,11 +20,8 @@ namespace Umbraco.Tests.Persistence.Mappers [Test] public void Can_Map_Trashed_Property() { - // Arrange - SqlSyntaxContext.SqlSyntaxProvider = new SqlCeSyntaxProvider(); - // Act - string column = new MediaMapper().Map("Trashed"); + string column = new MediaMapper(new SqlCeSyntaxProvider()).Map("Trashed"); // Assert Assert.That(column, Is.EqualTo("[umbracoNode].[trashed]")); @@ -36,11 +30,8 @@ namespace Umbraco.Tests.Persistence.Mappers [Test] public void Can_Map_UpdateDate_Property() { - // Arrange - SqlSyntaxContext.SqlSyntaxProvider = new SqlCeSyntaxProvider(); - // Act - string column = new MediaMapper().Map("UpdateDate"); + string column = new MediaMapper(new SqlCeSyntaxProvider()).Map("UpdateDate"); // Assert Assert.That(column, Is.EqualTo("[cmsContentVersion].[VersionDate]")); @@ -49,11 +40,9 @@ namespace Umbraco.Tests.Persistence.Mappers [Test] public void Can_Map_Version_Property() { - // Arrange - SqlSyntaxContext.SqlSyntaxProvider = new SqlCeSyntaxProvider(); - + // Act - string column = new MediaMapper().Map("Version"); + string column = new MediaMapper(new SqlCeSyntaxProvider()).Map("Version"); // Assert Assert.That(column, Is.EqualTo("[cmsContentVersion].[VersionId]")); diff --git a/src/Umbraco.Tests/Persistence/Mappers/PropertyGroupMapperTest.cs b/src/Umbraco.Tests/Persistence/Mappers/PropertyGroupMapperTest.cs index a8101cad79..4537cdcc57 100644 --- a/src/Umbraco.Tests/Persistence/Mappers/PropertyGroupMapperTest.cs +++ b/src/Umbraco.Tests/Persistence/Mappers/PropertyGroupMapperTest.cs @@ -10,11 +10,8 @@ namespace Umbraco.Tests.Persistence.Mappers [Test] public void Can_Map_Id_Property() { - // Arrange - SqlSyntaxContext.SqlSyntaxProvider = new SqlCeSyntaxProvider(); - // Act - string column = new PropertyGroupMapper().Map("Id"); + string column = new PropertyGroupMapper(new SqlCeSyntaxProvider()).Map("Id"); // Assert Assert.That(column, Is.EqualTo("[cmsPropertyTypeGroup].[id]")); @@ -23,11 +20,8 @@ namespace Umbraco.Tests.Persistence.Mappers [Test] public void Can_Map_ParentId_Property() { - // Arrange - SqlSyntaxContext.SqlSyntaxProvider = new SqlCeSyntaxProvider(); - // Act - string column = new PropertyGroupMapper().Map("ParentId"); + string column = new PropertyGroupMapper(new SqlCeSyntaxProvider()).Map("ParentId"); // Assert Assert.That(column, Is.EqualTo("[cmsPropertyTypeGroup].[parentGroupId]")); @@ -36,11 +30,8 @@ namespace Umbraco.Tests.Persistence.Mappers [Test] public void Can_Map_SortOrder_Property() { - // Arrange - SqlSyntaxContext.SqlSyntaxProvider = new SqlCeSyntaxProvider(); - // Act - string column = new PropertyGroupMapper().Map("SortOrder"); + string column = new PropertyGroupMapper(new SqlCeSyntaxProvider()).Map("SortOrder"); // Assert Assert.That(column, Is.EqualTo("[cmsPropertyTypeGroup].[sortorder]")); @@ -49,11 +40,9 @@ namespace Umbraco.Tests.Persistence.Mappers [Test] public void Can_Map_Name_Property() { - // Arrange - SqlSyntaxContext.SqlSyntaxProvider = new SqlCeSyntaxProvider(); // Act - string column = new PropertyGroupMapper().Map("Name"); + string column = new PropertyGroupMapper(new SqlCeSyntaxProvider()).Map("Name"); // Assert Assert.That(column, Is.EqualTo("[cmsPropertyTypeGroup].[text]")); diff --git a/src/Umbraco.Tests/Persistence/Mappers/PropertyTypeMapperTest.cs b/src/Umbraco.Tests/Persistence/Mappers/PropertyTypeMapperTest.cs index de06be3f4e..a5b89d7ddf 100644 --- a/src/Umbraco.Tests/Persistence/Mappers/PropertyTypeMapperTest.cs +++ b/src/Umbraco.Tests/Persistence/Mappers/PropertyTypeMapperTest.cs @@ -10,11 +10,8 @@ namespace Umbraco.Tests.Persistence.Mappers [Test] public void Can_Map_Id_Property() { - // Arrange - SqlSyntaxContext.SqlSyntaxProvider = new SqlCeSyntaxProvider(); - // Act - string column = new PropertyTypeMapper().Map("Id"); + string column = new PropertyTypeMapper(new SqlCeSyntaxProvider()).Map("Id"); // Assert Assert.That(column, Is.EqualTo("[cmsPropertyType].[id]")); @@ -23,11 +20,8 @@ namespace Umbraco.Tests.Persistence.Mappers [Test] public void Can_Map_Alias_Property() { - // Arrange - SqlSyntaxContext.SqlSyntaxProvider = new SqlCeSyntaxProvider(); - // Act - string column = new PropertyTypeMapper().Map("Alias"); + string column = new PropertyTypeMapper(new SqlCeSyntaxProvider()).Map("Alias"); // Assert Assert.That(column, Is.EqualTo("[cmsPropertyType].[Alias]")); @@ -36,11 +30,8 @@ namespace Umbraco.Tests.Persistence.Mappers [Test] public void Can_Map_DataTypeDefinitionId_Property() { - // Arrange - SqlSyntaxContext.SqlSyntaxProvider = new SqlCeSyntaxProvider(); - // Act - string column = new PropertyTypeMapper().Map("DataTypeDefinitionId"); + string column = new PropertyTypeMapper(new SqlCeSyntaxProvider()).Map("DataTypeDefinitionId"); // Assert Assert.That(column, Is.EqualTo("[cmsPropertyType].[dataTypeId]")); @@ -49,11 +40,8 @@ namespace Umbraco.Tests.Persistence.Mappers [Test] public void Can_Map_SortOrder_Property() { - // Arrange - SqlSyntaxContext.SqlSyntaxProvider = new SqlCeSyntaxProvider(); - // Act - string column = new PropertyTypeMapper().Map("SortOrder"); + string column = new PropertyTypeMapper(new SqlCeSyntaxProvider()).Map("SortOrder"); // Assert Assert.That(column, Is.EqualTo("[cmsPropertyType].[sortOrder]")); @@ -62,11 +50,8 @@ namespace Umbraco.Tests.Persistence.Mappers [Test] public void Can_Map_PropertyEditorAlias_Property() { - // Arrange - SqlSyntaxContext.SqlSyntaxProvider = new SqlCeSyntaxProvider(); - // Act - string column = new PropertyTypeMapper().Map("PropertyEditorAlias"); + string column = new PropertyTypeMapper(new SqlCeSyntaxProvider()).Map("PropertyEditorAlias"); // Assert Assert.That(column, Is.EqualTo("[cmsDataType].[propertyEditorAlias]")); @@ -75,11 +60,8 @@ namespace Umbraco.Tests.Persistence.Mappers [Test] public void Can_Map_DataTypeDatabaseType_Property() { - // Arrange - SqlSyntaxContext.SqlSyntaxProvider = new SqlCeSyntaxProvider(); - // Act - string column = new PropertyTypeMapper().Map("DataTypeDatabaseType"); + string column = new PropertyTypeMapper(new SqlCeSyntaxProvider()).Map("DataTypeDatabaseType"); // Assert Assert.That(column, Is.EqualTo("[cmsDataType].[dbType]")); diff --git a/src/Umbraco.Tests/Persistence/Mappers/RelationMapperTest.cs b/src/Umbraco.Tests/Persistence/Mappers/RelationMapperTest.cs index 9e9e20a19e..2410d3e068 100644 --- a/src/Umbraco.Tests/Persistence/Mappers/RelationMapperTest.cs +++ b/src/Umbraco.Tests/Persistence/Mappers/RelationMapperTest.cs @@ -10,11 +10,8 @@ namespace Umbraco.Tests.Persistence.Mappers [Test] public void Can_Map_Id_Property() { - // Arrange - SqlSyntaxContext.SqlSyntaxProvider = new SqlCeSyntaxProvider(); - // Act - string column = new RelationMapper().Map("Id"); + string column = new RelationMapper(new SqlCeSyntaxProvider()).Map("Id"); // Assert Assert.That(column, Is.EqualTo("[umbracoRelation].[id]")); @@ -23,11 +20,8 @@ namespace Umbraco.Tests.Persistence.Mappers [Test] public void Can_Map_ChildId_Property() { - // Arrange - SqlSyntaxContext.SqlSyntaxProvider = new SqlCeSyntaxProvider(); - // Act - string column = new RelationMapper().Map("ChildId"); + string column = new RelationMapper(new SqlCeSyntaxProvider()).Map("ChildId"); // Assert Assert.That(column, Is.EqualTo("[umbracoRelation].[childId]")); @@ -36,11 +30,8 @@ namespace Umbraco.Tests.Persistence.Mappers [Test] public void Can_Map_Datetime_Property() { - // Arrange - SqlSyntaxContext.SqlSyntaxProvider = new SqlCeSyntaxProvider(); - // Act - string column = new RelationMapper().Map("CreateDate"); + string column = new RelationMapper(new SqlCeSyntaxProvider()).Map("CreateDate"); // Assert Assert.That(column, Is.EqualTo("[umbracoRelation].[datetime]")); @@ -49,11 +40,8 @@ namespace Umbraco.Tests.Persistence.Mappers [Test] public void Can_Map_Comment_Property() { - // Arrange - SqlSyntaxContext.SqlSyntaxProvider = new SqlCeSyntaxProvider(); - // Act - string column = new RelationMapper().Map("Comment"); + string column = new RelationMapper(new SqlCeSyntaxProvider()).Map("Comment"); // Assert Assert.That(column, Is.EqualTo("[umbracoRelation].[comment]")); @@ -62,11 +50,8 @@ namespace Umbraco.Tests.Persistence.Mappers [Test] public void Can_Map_RelationType_Property() { - // Arrange - SqlSyntaxContext.SqlSyntaxProvider = new SqlCeSyntaxProvider(); - // Act - string column = new RelationMapper().Map("RelationTypeId"); + string column = new RelationMapper(new SqlCeSyntaxProvider()).Map("RelationTypeId"); // Assert Assert.That(column, Is.EqualTo("[umbracoRelation].[relType]")); diff --git a/src/Umbraco.Tests/Persistence/Mappers/RelationTypeMapperTest.cs b/src/Umbraco.Tests/Persistence/Mappers/RelationTypeMapperTest.cs index b023825203..26268576f8 100644 --- a/src/Umbraco.Tests/Persistence/Mappers/RelationTypeMapperTest.cs +++ b/src/Umbraco.Tests/Persistence/Mappers/RelationTypeMapperTest.cs @@ -9,12 +9,9 @@ namespace Umbraco.Tests.Persistence.Mappers { [Test] public void Can_Map_Id_Property() - { - // Arrange - SqlSyntaxContext.SqlSyntaxProvider = new SqlCeSyntaxProvider(); - + { // Act - string column = new RelationTypeMapper().Map("Id"); + string column = new RelationTypeMapper(new SqlCeSyntaxProvider()).Map("Id"); // Assert Assert.That(column, Is.EqualTo("[umbracoRelationType].[id]")); @@ -23,11 +20,8 @@ namespace Umbraco.Tests.Persistence.Mappers [Test] public void Can_Map_Alias_Property() { - // Arrange - SqlSyntaxContext.SqlSyntaxProvider = new SqlCeSyntaxProvider(); - // Act - string column = new RelationTypeMapper().Map("Alias"); + string column = new RelationTypeMapper(new SqlCeSyntaxProvider()).Map("Alias"); // Assert Assert.That(column, Is.EqualTo("[umbracoRelationType].[alias]")); @@ -36,11 +30,9 @@ namespace Umbraco.Tests.Persistence.Mappers [Test] public void Can_Map_ChildObjectType_Property() { - // Arrange - SqlSyntaxContext.SqlSyntaxProvider = new SqlCeSyntaxProvider(); // Act - string column = new RelationTypeMapper().Map("ChildObjectType"); + string column = new RelationTypeMapper(new SqlCeSyntaxProvider()).Map("ChildObjectType"); // Assert Assert.That(column, Is.EqualTo("[umbracoRelationType].[childObjectType]")); @@ -49,11 +41,9 @@ namespace Umbraco.Tests.Persistence.Mappers [Test] public void Can_Map_IsBidirectional_Property() { - // Arrange - SqlSyntaxContext.SqlSyntaxProvider = new SqlCeSyntaxProvider(); // Act - string column = new RelationTypeMapper().Map("IsBidirectional"); + string column = new RelationTypeMapper(new SqlCeSyntaxProvider()).Map("IsBidirectional"); // Assert Assert.That(column, Is.EqualTo("[umbracoRelationType].[dual]")); diff --git a/src/Umbraco.Tests/Persistence/MySqlDatabaseCreationTest.cs b/src/Umbraco.Tests/Persistence/MySqlDatabaseCreationTest.cs index be290795cb..c2dc1fc59c 100644 --- a/src/Umbraco.Tests/Persistence/MySqlDatabaseCreationTest.cs +++ b/src/Umbraco.Tests/Persistence/MySqlDatabaseCreationTest.cs @@ -32,9 +32,11 @@ namespace Umbraco.Tests.Persistence [Test] public void Can_Assert_Created_Database() { - bool umbracoNodeTable = Database.TableExist("umbracoNode"); - bool umbracoUserTable = Database.TableExist("umbracoUser"); - bool cmsTagsTable = Database.TableExist("cmsTags"); + var schemaHelper = new DatabaseSchemaHelper(Database, Mock.Of(), new SqlCeSyntaxProvider()); + + bool umbracoNodeTable = schemaHelper.TableExist("umbracoNode"); + bool umbracoUserTable = schemaHelper.TableExist("umbracoUser"); + bool cmsTagsTable = schemaHelper.TableExist("cmsTags"); Assert.That(umbracoNodeTable, Is.True); Assert.That(umbracoUserTable, Is.True); diff --git a/src/Umbraco.Tests/Persistence/PetaPocoExtensionsTest.cs b/src/Umbraco.Tests/Persistence/PetaPocoExtensionsTest.cs index 9a5b994522..89290b3f41 100644 --- a/src/Umbraco.Tests/Persistence/PetaPocoExtensionsTest.cs +++ b/src/Umbraco.Tests/Persistence/PetaPocoExtensionsTest.cs @@ -234,7 +234,7 @@ namespace Umbraco.Tests.Persistence // Act using (ProfilingLogger.TraceDuration("starting insert", "finished insert")) { - db.BulkInsertRecords(servers); + db.BulkInsertRecords(SqlSyntax, servers); } // Assert diff --git a/src/Umbraco.Tests/Persistence/Querying/ContentRepositorySqlClausesTest.cs b/src/Umbraco.Tests/Persistence/Querying/ContentRepositorySqlClausesTest.cs index 4b1c71901d..caad5a7162 100644 --- a/src/Umbraco.Tests/Persistence/Querying/ContentRepositorySqlClausesTest.cs +++ b/src/Umbraco.Tests/Persistence/Querying/ContentRepositorySqlClausesTest.cs @@ -25,14 +25,14 @@ namespace Umbraco.Tests.Persistence.Querying var sql = new Sql(); sql.Select("*") - .From() - .InnerJoin() - .On(left => left.VersionId, right => right.VersionId) - .InnerJoin() - .On(left => left.NodeId, right => right.NodeId) - .InnerJoin() - .On(left => left.NodeId, right => right.NodeId) - .Where(x => x.NodeObjectType == NodeObjectType); + .From(SqlSyntax) + .InnerJoin(SqlSyntax) + .On(SqlSyntax, left => left.VersionId, right => right.VersionId) + .InnerJoin(SqlSyntax) + .On(SqlSyntax, left => left.NodeId, right => right.NodeId) + .InnerJoin(SqlSyntax) + .On(SqlSyntax, left => left.NodeId, right => right.NodeId) + .Where(SqlSyntax, x => x.NodeObjectType == NodeObjectType); Assert.That(sql.SQL, Is.EqualTo(expected.SQL)); @@ -61,15 +61,15 @@ namespace Umbraco.Tests.Persistence.Querying var sql = new Sql(); sql.Select("*") - .From() - .InnerJoin() - .On(left => left.VersionId, right => right.VersionId) - .InnerJoin() - .On(left => left.NodeId, right => right.NodeId) - .InnerJoin() - .On(left => left.NodeId, right => right.NodeId) - .Where(x => x.NodeObjectType == NodeObjectType) - .Where(x => x.NodeId == 1050); + .From(SqlSyntax) + .InnerJoin(SqlSyntax) + .On(SqlSyntax, left => left.VersionId, right => right.VersionId) + .InnerJoin(SqlSyntax) + .On(SqlSyntax, left => left.NodeId, right => right.NodeId) + .InnerJoin(SqlSyntax) + .On(SqlSyntax, left => left.NodeId, right => right.NodeId) + .Where(SqlSyntax, x => x.NodeObjectType == NodeObjectType) + .Where(SqlSyntax, x => x.NodeId == 1050); Assert.That(sql.SQL, Is.EqualTo(expected.SQL)); @@ -101,17 +101,17 @@ namespace Umbraco.Tests.Persistence.Querying var sql = new Sql(); sql.Select("*") - .From() - .InnerJoin() - .On(left => left.VersionId, right => right.VersionId) - .InnerJoin() - .On(left => left.NodeId, right => right.NodeId) - .InnerJoin() - .On(left => left.NodeId, right => right.NodeId) - .Where(x => x.NodeObjectType == NodeObjectType) - .Where(x => x.NodeId == 1050) - .Where(x => x.VersionId == versionId) - .OrderByDescending(x => x.VersionDate); + .From(SqlSyntax) + .InnerJoin(SqlSyntax) + .On(SqlSyntax, left => left.VersionId, right => right.VersionId) + .InnerJoin(SqlSyntax) + .On(SqlSyntax, left => left.NodeId, right => right.NodeId) + .InnerJoin(SqlSyntax) + .On(SqlSyntax, left => left.NodeId, right => right.NodeId) + .Where(SqlSyntax, x => x.NodeObjectType == NodeObjectType) + .Where(SqlSyntax, x => x.NodeId == 1050) + .Where(SqlSyntax, x => x.VersionId == versionId) + .OrderByDescending(SqlSyntax, x => x.VersionDate); Assert.That(sql.SQL, Is.EqualTo(expected.SQL)); Assert.AreEqual(expected.Arguments.Length, sql.Arguments.Length); @@ -138,11 +138,11 @@ namespace Umbraco.Tests.Persistence.Querying var sql = new Sql(); sql.Select("*") - .From() - .InnerJoin() - .On(left => left.PropertyTypeId, right => right.Id) - .Where(x => x.NodeId == id) - .Where(x => x.VersionId == versionId); + .From(SqlSyntax) + .InnerJoin(SqlSyntax) + .On(SqlSyntax, left => left.PropertyTypeId, right => right.Id) + .Where(SqlSyntax, x => x.NodeId == id) + .Where(SqlSyntax, x => x.VersionId == versionId); Assert.That(sql.SQL, Is.EqualTo(expected.SQL)); Assert.AreEqual(expected.Arguments.Length, sql.Arguments.Length); diff --git a/src/Umbraco.Tests/Persistence/Querying/ContentTypeRepositorySqlClausesTest.cs b/src/Umbraco.Tests/Persistence/Querying/ContentTypeRepositorySqlClausesTest.cs index e25b95383e..24ff998983 100644 --- a/src/Umbraco.Tests/Persistence/Querying/ContentTypeRepositorySqlClausesTest.cs +++ b/src/Umbraco.Tests/Persistence/Querying/ContentTypeRepositorySqlClausesTest.cs @@ -27,13 +27,13 @@ namespace Umbraco.Tests.Persistence.Querying var sql = new Sql(); sql.Select("*") - .From() - .RightJoin() - .On(left => left.NodeId, right => right.ContentTypeNodeId) - .InnerJoin() - .On(left => left.NodeId, right => right.NodeId) - .Where(x => x.NodeObjectType == NodeObjectType) - .Where(x => x.IsDefault == true); + .From(SqlSyntax) + .RightJoin(SqlSyntax) + .On(SqlSyntax, left => left.NodeId, right => right.ContentTypeNodeId) + .InnerJoin(SqlSyntax) + .On(SqlSyntax, left => left.NodeId, right => right.NodeId) + .Where(SqlSyntax, x => x.NodeObjectType == NodeObjectType) + .Where(SqlSyntax, x => x.IsDefault == true); Assert.That(sql.SQL, Is.EqualTo(expected.SQL)); @@ -64,14 +64,14 @@ namespace Umbraco.Tests.Persistence.Querying var sql = new Sql(); sql.Select("*") - .From() - .RightJoin() - .On(left => left.NodeId, right => right.ContentTypeNodeId) - .InnerJoin() - .On(left => left.NodeId, right => right.NodeId) - .Where(x => x.NodeObjectType == NodeObjectType) - .Where(x => x.IsDefault) - .Where(x => x.NodeId == 1050); + .From(SqlSyntax) + .RightJoin(SqlSyntax) + .On(SqlSyntax, left => left.NodeId, right => right.ContentTypeNodeId) + .InnerJoin(SqlSyntax) + .On(SqlSyntax, left => left.NodeId, right => right.NodeId) + .Where(SqlSyntax, x => x.NodeObjectType == NodeObjectType) + .Where(SqlSyntax, x => x.IsDefault) + .Where(SqlSyntax, x => x.NodeId == 1050); Assert.That(sql.SQL, Is.EqualTo(expected.SQL)); @@ -95,11 +95,11 @@ namespace Umbraco.Tests.Persistence.Querying var sql = new Sql(); sql.Select("*") - .From() - .RightJoin() - .On(left => left.Id, right => right.PropertyTypeGroupId) - .InnerJoin() - .On(left => left.DataTypeId, right => right.DataTypeId); + .From(SqlSyntax) + .RightJoin(SqlSyntax) + .On(SqlSyntax, left => left.Id, right => right.PropertyTypeGroupId) + .InnerJoin(SqlSyntax) + .On(SqlSyntax, left => left.DataTypeId, right => right.DataTypeId); Assert.That(sql.SQL, Is.EqualTo(expected.SQL)); @@ -116,8 +116,8 @@ namespace Umbraco.Tests.Persistence.Querying var sql = new Sql(); sql.Select("*") - .From() - .Where(x => x.Id == 1050); + .From(SqlSyntax) + .Where(SqlSyntax, x => x.Id == 1050); Assert.That(sql.SQL, Is.EqualTo(expected.SQL)); @@ -142,12 +142,12 @@ namespace Umbraco.Tests.Persistence.Querying var sql = new Sql(); sql.Select("*") - .From() - .RightJoin() - .On(left => left.Id, right => right.PropertyTypeGroupId) - .InnerJoin() - .On(left => left.DataTypeId, right => right.DataTypeId) - .Where(x => x.ContentTypeId == 1050); + .From(SqlSyntax) + .RightJoin(SqlSyntax) + .On(SqlSyntax, left => left.Id, right => right.PropertyTypeGroupId) + .InnerJoin(SqlSyntax) + .On(SqlSyntax, left => left.DataTypeId, right => right.DataTypeId) + .Where(SqlSyntax, x => x.ContentTypeId == 1050); Assert.That(sql.SQL, Is.EqualTo(expected.SQL)); diff --git a/src/Umbraco.Tests/Persistence/Querying/ContentTypeSqlMappingTests.cs b/src/Umbraco.Tests/Persistence/Querying/ContentTypeSqlMappingTests.cs index e5c74e4faa..75b957d451 100644 --- a/src/Umbraco.Tests/Persistence/Querying/ContentTypeSqlMappingTests.cs +++ b/src/Umbraco.Tests/Persistence/Querying/ContentTypeSqlMappingTests.cs @@ -24,24 +24,24 @@ namespace Umbraco.Tests.Persistence.Querying { using (var transaction = DatabaseContext.Database.GetTransaction()) { - DatabaseContext.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} ON ", SqlSyntaxContext.SqlSyntaxProvider.GetQuotedTableName("umbracoNode")))); + DatabaseContext.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} ON ", SqlSyntax.GetQuotedTableName("umbracoNode")))); DatabaseContext.Database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = 55554, Trashed = false, ParentId = -1, UserId = 0, Level = 1, Path = "-1,55554", SortOrder = 1, UniqueId = new Guid("87D1EAB6-AB27-4852-B3DF-DE8DBA4A1AA0"), Text = "Template 1", NodeObjectType = new Guid(Constants.ObjectTypes.Template), CreateDate = DateTime.Now }); DatabaseContext.Database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = 55555, Trashed = false, ParentId = -1, UserId = 0, Level = 1, Path = "-1,55555", SortOrder = 1, UniqueId = new Guid("3390BDF4-C974-4211-AA95-3812A8CE7C46"), Text = "Template 2", NodeObjectType = new Guid(Constants.ObjectTypes.Template), CreateDate = DateTime.Now }); DatabaseContext.Database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = 99997, Trashed = false, ParentId = -1, UserId = 0, Level = 0, Path = "-1,99997", SortOrder = 0, UniqueId = new Guid("BB3241D5-6842-4EFA-A82A-5F56885CF528"), Text = "Test Content Type 1", NodeObjectType = new Guid(Constants.ObjectTypes.DocumentType), CreateDate = DateTime.Now }); DatabaseContext.Database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = 99998, Trashed = false, ParentId = -1, UserId = 0, Level = 0, Path = "-1,99998", SortOrder = 0, UniqueId = new Guid("EEA66B06-302E-49BA-A8B2-EDF07248BC59"), Text = "Test Content Type 2", NodeObjectType = new Guid(Constants.ObjectTypes.DocumentType), CreateDate = DateTime.Now }); DatabaseContext.Database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = 99999, Trashed = false, ParentId = -1, UserId = 0, Level = 0, Path = "-1,99999", SortOrder = 0, UniqueId = new Guid("C45CC083-BB27-4C1C-B448-6F703CC9B799"), Text = "Test Content Type 2", NodeObjectType = new Guid(Constants.ObjectTypes.DocumentType), CreateDate = DateTime.Now }); - DatabaseContext.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} OFF ", SqlSyntaxContext.SqlSyntaxProvider.GetQuotedTableName("umbracoNode")))); + DatabaseContext.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} OFF ", SqlSyntax.GetQuotedTableName("umbracoNode")))); - DatabaseContext.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} ON ", SqlSyntaxContext.SqlSyntaxProvider.GetQuotedTableName("cmsTemplate")))); + DatabaseContext.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} ON ", SqlSyntax.GetQuotedTableName("cmsTemplate")))); DatabaseContext.Database.Insert("cmsTemplate", "pk", false, new TemplateDto { NodeId = 55554, Alias = "testTemplate1", Design = "", PrimaryKey = 22221}); DatabaseContext.Database.Insert("cmsTemplate", "pk", false, new TemplateDto { NodeId = 55555, Alias = "testTemplate2", Design = "", PrimaryKey = 22222 }); - DatabaseContext.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} OFF ", SqlSyntaxContext.SqlSyntaxProvider.GetQuotedTableName("cmsTemplate")))); + DatabaseContext.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} OFF ", SqlSyntax.GetQuotedTableName("cmsTemplate")))); - DatabaseContext.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} ON ", SqlSyntaxContext.SqlSyntaxProvider.GetQuotedTableName("cmsContentType")))); + DatabaseContext.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} ON ", SqlSyntax.GetQuotedTableName("cmsContentType")))); DatabaseContext.Database.Insert("cmsContentType", "pk", false, new ContentTypeDto { PrimaryKey = 88887, NodeId = 99997, Alias = "TestContentType1", Icon = "icon-folder", Thumbnail = "folder.png", IsContainer = false, AllowAtRoot = true }); DatabaseContext.Database.Insert("cmsContentType", "pk", false, new ContentTypeDto { PrimaryKey = 88888, NodeId = 99998, Alias = "TestContentType2", Icon = "icon-folder", Thumbnail = "folder.png", IsContainer = false, AllowAtRoot = true }); DatabaseContext.Database.Insert("cmsContentType", "pk", false, new ContentTypeDto { PrimaryKey = 88889, NodeId = 99999, Alias = "TestContentType3", Icon = "icon-folder", Thumbnail = "folder.png", IsContainer = false, AllowAtRoot = true }); - DatabaseContext.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} OFF ", SqlSyntaxContext.SqlSyntaxProvider.GetQuotedTableName("cmsContentType")))); + DatabaseContext.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} OFF ", SqlSyntax.GetQuotedTableName("cmsContentType")))); DatabaseContext.Database.Insert(new DocumentTypeDto { ContentTypeNodeId = 99997, IsDefault = true, TemplateNodeId = 55555 }); DatabaseContext.Database.Insert(new DocumentTypeDto { ContentTypeNodeId = 99997, IsDefault = false, TemplateNodeId = 55554 }); @@ -88,17 +88,17 @@ namespace Umbraco.Tests.Persistence.Querying { using (var transaction = DatabaseContext.Database.GetTransaction()) { - DatabaseContext.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} ON ", SqlSyntaxContext.SqlSyntaxProvider.GetQuotedTableName("umbracoNode")))); + DatabaseContext.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} ON ", SqlSyntax.GetQuotedTableName("umbracoNode")))); DatabaseContext.Database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = 99997, Trashed = false, ParentId = -1, UserId = 0, Level = 0, Path = "-1,99997", SortOrder = 0, UniqueId = new Guid("BB3241D5-6842-4EFA-A82A-5F56885CF528"), Text = "Test Media Type 1", NodeObjectType = new Guid(Constants.ObjectTypes.MediaType), CreateDate = DateTime.Now }); DatabaseContext.Database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = 99998, Trashed = false, ParentId = -1, UserId = 0, Level = 0, Path = "-1,99998", SortOrder = 0, UniqueId = new Guid("EEA66B06-302E-49BA-A8B2-EDF07248BC59"), Text = "Test Media Type 2", NodeObjectType = new Guid(Constants.ObjectTypes.MediaType), CreateDate = DateTime.Now }); DatabaseContext.Database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = 99999, Trashed = false, ParentId = -1, UserId = 0, Level = 0, Path = "-1,99999", SortOrder = 0, UniqueId = new Guid("C45CC083-BB27-4C1C-B448-6F703CC9B799"), Text = "Test Media Type 2", NodeObjectType = new Guid(Constants.ObjectTypes.MediaType), CreateDate = DateTime.Now }); - DatabaseContext.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} OFF ", SqlSyntaxContext.SqlSyntaxProvider.GetQuotedTableName("umbracoNode")))); + DatabaseContext.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} OFF ", SqlSyntax.GetQuotedTableName("umbracoNode")))); - DatabaseContext.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} ON ", SqlSyntaxContext.SqlSyntaxProvider.GetQuotedTableName("cmsContentType")))); + DatabaseContext.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} ON ", SqlSyntax.GetQuotedTableName("cmsContentType")))); DatabaseContext.Database.Insert("cmsContentType", "pk", false, new ContentTypeDto { PrimaryKey = 88887, NodeId = 99997, Alias = "TestContentType1", Icon = "icon-folder", Thumbnail = "folder.png", IsContainer = false, AllowAtRoot = true }); DatabaseContext.Database.Insert("cmsContentType", "pk", false, new ContentTypeDto { PrimaryKey = 88888, NodeId = 99998, Alias = "TestContentType2", Icon = "icon-folder", Thumbnail = "folder.png", IsContainer = false, AllowAtRoot = true }); DatabaseContext.Database.Insert("cmsContentType", "pk", false, new ContentTypeDto { PrimaryKey = 88889, NodeId = 99999, Alias = "TestContentType3", Icon = "icon-folder", Thumbnail = "folder.png", IsContainer = false, AllowAtRoot = true }); - DatabaseContext.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} OFF ", SqlSyntaxContext.SqlSyntaxProvider.GetQuotedTableName("cmsContentType")))); + DatabaseContext.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} OFF ", SqlSyntax.GetQuotedTableName("cmsContentType")))); DatabaseContext.Database.Insert(new ContentTypeAllowedContentTypeDto { AllowedId = 99998, Id = 99997, SortOrder = 1 }); DatabaseContext.Database.Insert(new ContentTypeAllowedContentTypeDto { AllowedId = 99999, Id = 99997, SortOrder = 2 }); @@ -137,27 +137,27 @@ namespace Umbraco.Tests.Persistence.Querying { using (var transaction = DatabaseContext.Database.GetTransaction()) { - DatabaseContext.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} ON ", SqlSyntaxContext.SqlSyntaxProvider.GetQuotedTableName("umbracoNode")))); + DatabaseContext.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} ON ", SqlSyntax.GetQuotedTableName("umbracoNode")))); DatabaseContext.Database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = 55555, Trashed = false, ParentId = -1, UserId = 0, Level = 1, Path = "-1,55555", SortOrder = 1, UniqueId = new Guid("3390BDF4-C974-4211-AA95-3812A8CE7C46"), Text = "Test Data Type", NodeObjectType = new Guid(Constants.ObjectTypes.DataType), CreateDate = DateTime.Now }); DatabaseContext.Database.Insert("umbracoNode", "id", false, new NodeDto { NodeId = 99999, Trashed = false, ParentId = -1, UserId = 0, Level = 0, Path = "-1,99999", SortOrder = 0, UniqueId = new Guid("129241F0-D24E-4FC3-92D1-BC2D48B7C431"), Text = "Test Content Type", NodeObjectType = new Guid(Constants.ObjectTypes.DocumentType), CreateDate = DateTime.Now }); - DatabaseContext.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} OFF ", SqlSyntaxContext.SqlSyntaxProvider.GetQuotedTableName("umbracoNode")))); + DatabaseContext.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} OFF ", SqlSyntax.GetQuotedTableName("umbracoNode")))); - DatabaseContext.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} ON ", SqlSyntaxContext.SqlSyntaxProvider.GetQuotedTableName("cmsDataType")))); + DatabaseContext.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} ON ", SqlSyntax.GetQuotedTableName("cmsDataType")))); DatabaseContext.Database.Insert("cmsDataType", "pk", false, new DataTypeDto { PrimaryKey = 44444, DataTypeId = 55555, PropertyEditorAlias = Constants.PropertyEditors.TextboxAlias, DbType = "Nvarchar" }); - DatabaseContext.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} OFF ", SqlSyntaxContext.SqlSyntaxProvider.GetQuotedTableName("cmsDataType")))); + DatabaseContext.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} OFF ", SqlSyntax.GetQuotedTableName("cmsDataType")))); - DatabaseContext.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} ON ", SqlSyntaxContext.SqlSyntaxProvider.GetQuotedTableName("cmsContentType")))); + DatabaseContext.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} ON ", SqlSyntax.GetQuotedTableName("cmsContentType")))); DatabaseContext.Database.Insert("cmsContentType", "pk", false, new ContentTypeDto { PrimaryKey = 88888, NodeId = 99999, Alias = "TestContentType", Icon = "icon-folder", Thumbnail = "folder.png", IsContainer = false, AllowAtRoot = true }); - DatabaseContext.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} OFF ", SqlSyntaxContext.SqlSyntaxProvider.GetQuotedTableName("cmsContentType")))); + DatabaseContext.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} OFF ", SqlSyntax.GetQuotedTableName("cmsContentType")))); - DatabaseContext.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} ON ", SqlSyntaxContext.SqlSyntaxProvider.GetQuotedTableName("cmsPropertyTypeGroup")))); + DatabaseContext.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} ON ", SqlSyntax.GetQuotedTableName("cmsPropertyTypeGroup")))); DatabaseContext.Database.Insert("cmsPropertyTypeGroup", "id", false, new PropertyTypeGroupDto { Id = 77776, ContentTypeNodeId = 99999, Text = "Group1", SortOrder = 1 }); DatabaseContext.Database.Insert("cmsPropertyTypeGroup", "id", false, new PropertyTypeGroupDto { Id = 77777, ContentTypeNodeId = 99999, Text = "Group2", SortOrder = 2 }); DatabaseContext.Database.Insert("cmsPropertyTypeGroup", "id", false, new PropertyTypeGroupDto { Id = 77778, ContentTypeNodeId = 99999, Text = "Group3", SortOrder = 3 }); DatabaseContext.Database.Insert("cmsPropertyTypeGroup", "id", false, new PropertyTypeGroupDto { Id = 77779, ContentTypeNodeId = 99999, Text = "Group4", SortOrder = 4 }); - DatabaseContext.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} OFF ", SqlSyntaxContext.SqlSyntaxProvider.GetQuotedTableName("cmsPropertyTypeGroup")))); + DatabaseContext.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} OFF ", SqlSyntax.GetQuotedTableName("cmsPropertyTypeGroup")))); - DatabaseContext.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} ON ", SqlSyntaxContext.SqlSyntaxProvider.GetQuotedTableName("cmsPropertyType")))); + DatabaseContext.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} ON ", SqlSyntax.GetQuotedTableName("cmsPropertyType")))); DatabaseContext.Database.Insert("cmsPropertyType", "id", false, new PropertyTypeDto { Id = 66662, DataTypeId = 55555, ContentTypeId = 99999, PropertyTypeGroupId = 77776, Alias = "property1", Name = "Property 1", SortOrder = 0, Mandatory = false, ValidationRegExp = null, Description = null }); DatabaseContext.Database.Insert("cmsPropertyType", "id", false, new PropertyTypeDto { Id = 66663, DataTypeId = 55555, ContentTypeId = 99999, PropertyTypeGroupId = 77776, Alias = "property2", Name = "Property 2", SortOrder = 1, Mandatory = false, ValidationRegExp = null, Description = null }); DatabaseContext.Database.Insert("cmsPropertyType", "id", false, new PropertyTypeDto { Id = 66664, DataTypeId = 55555, ContentTypeId = 99999, PropertyTypeGroupId = 77777, Alias = "property3", Name = "Property 3", SortOrder = 2, Mandatory = false, ValidationRegExp = null, Description = null }); @@ -165,7 +165,7 @@ namespace Umbraco.Tests.Persistence.Querying DatabaseContext.Database.Insert("cmsPropertyType", "id", false, new PropertyTypeDto { Id = 66666, DataTypeId = 55555, ContentTypeId = 99999, PropertyTypeGroupId = null, Alias = "property5", Name = "Property 5", SortOrder = 4, Mandatory = false, ValidationRegExp = null, Description = null }); DatabaseContext.Database.Insert("cmsPropertyType", "id", false, new PropertyTypeDto { Id = 66667, DataTypeId = 55555, ContentTypeId = 99999, PropertyTypeGroupId = 77778, Alias = "property6", Name = "Property 6", SortOrder = 5, Mandatory = false, ValidationRegExp = null, Description = null }); DatabaseContext.Database.Insert("cmsPropertyType", "id", false, new PropertyTypeDto { Id = 66668, DataTypeId = 55555, ContentTypeId = 99999, PropertyTypeGroupId = 77778, Alias = "property7", Name = "Property 7", SortOrder = 6, Mandatory = false, ValidationRegExp = null, Description = null }); - DatabaseContext.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} OFF ", SqlSyntaxContext.SqlSyntaxProvider.GetQuotedTableName("cmsPropertyType")))); + DatabaseContext.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} OFF ", SqlSyntax.GetQuotedTableName("cmsPropertyType")))); transaction.Complete(); } diff --git a/src/Umbraco.Tests/Persistence/Querying/DataTypeDefinitionRepositorySqlClausesTest.cs b/src/Umbraco.Tests/Persistence/Querying/DataTypeDefinitionRepositorySqlClausesTest.cs index 113ed68e81..92ad7e893b 100644 --- a/src/Umbraco.Tests/Persistence/Querying/DataTypeDefinitionRepositorySqlClausesTest.cs +++ b/src/Umbraco.Tests/Persistence/Querying/DataTypeDefinitionRepositorySqlClausesTest.cs @@ -23,10 +23,10 @@ namespace Umbraco.Tests.Persistence.Querying var sql = new Sql(); sql.Select("*") - .From() - .InnerJoin() - .On(left => left.DataTypeId, right => right.NodeId) - .Where(x => x.NodeObjectType == NodeObjectTypeId); + .From(SqlSyntax) + .InnerJoin(SqlSyntax) + .On(SqlSyntax, left => left.DataTypeId, right => right.NodeId) + .Where(SqlSyntax, x => x.NodeObjectType == NodeObjectTypeId); Assert.That(sql.SQL, Is.EqualTo(expected.SQL)); diff --git a/src/Umbraco.Tests/Persistence/Querying/ExpressionTests.cs b/src/Umbraco.Tests/Persistence/Querying/ExpressionTests.cs index 3aa48e0e8e..437c2c6704 100644 --- a/src/Umbraco.Tests/Persistence/Querying/ExpressionTests.cs +++ b/src/Umbraco.Tests/Persistence/Querying/ExpressionTests.cs @@ -34,7 +34,7 @@ namespace Umbraco.Tests.Persistence.Querying { //Arrange Expression> predicate = content => content.Path.StartsWith("-1"); - var modelToSqlExpressionHelper = new ModelToSqlExpressionHelper(); + var modelToSqlExpressionHelper = new ModelToSqlExpressionHelper(SqlSyntax); var result = modelToSqlExpressionHelper.Visit(predicate); Console.WriteLine("Model to Sql ExpressionHelper: \n" + result); @@ -48,7 +48,7 @@ namespace Umbraco.Tests.Persistence.Querying { //Arrange Expression> predicate = content => content.ParentId == -1; - var modelToSqlExpressionHelper = new ModelToSqlExpressionHelper(); + var modelToSqlExpressionHelper = new ModelToSqlExpressionHelper(SqlSyntax); var result = modelToSqlExpressionHelper.Visit(predicate); Console.WriteLine("Model to Sql ExpressionHelper: \n" + result); @@ -61,7 +61,7 @@ namespace Umbraco.Tests.Persistence.Querying public void Equals_Operator_For_Value_Gets_Escaped() { Expression> predicate = user => user.Username == "hello@world.com"; - var modelToSqlExpressionHelper = new ModelToSqlExpressionHelper(); + var modelToSqlExpressionHelper = new ModelToSqlExpressionHelper(SqlSyntax); var result = modelToSqlExpressionHelper.Visit(predicate); Console.WriteLine("Model to Sql ExpressionHelper: \n" + result); @@ -74,7 +74,7 @@ namespace Umbraco.Tests.Persistence.Querying public void Equals_Method_For_Value_Gets_Escaped() { Expression> predicate = user => user.Username.Equals("hello@world.com"); - var modelToSqlExpressionHelper = new ModelToSqlExpressionHelper(); + var modelToSqlExpressionHelper = new ModelToSqlExpressionHelper(SqlSyntax); var result = modelToSqlExpressionHelper.Visit(predicate); Console.WriteLine("Model to Sql ExpressionHelper: \n" + result); @@ -87,10 +87,9 @@ namespace Umbraco.Tests.Persistence.Querying public void Model_Expression_Value_Does_Not_Get_Double_Escaped() { //mysql escapes backslashes, so we'll test with that - SqlSyntaxContext.SqlSyntaxProvider = new MySqlSyntaxProvider(Mock.Of()); Expression> predicate = user => user.Username.Equals("mydomain\\myuser"); - var modelToSqlExpressionHelper = new ModelToSqlExpressionHelper(); + var modelToSqlExpressionHelper = new ModelToSqlExpressionHelper(new MySqlSyntaxProvider(Mock.Of())); var result = modelToSqlExpressionHelper.Visit(predicate); Console.WriteLine("Model to Sql ExpressionHelper: \n" + result); @@ -104,10 +103,9 @@ namespace Umbraco.Tests.Persistence.Querying public void Poco_Expression_Value_Does_Not_Get_Double_Escaped() { //mysql escapes backslashes, so we'll test with that - SqlSyntaxContext.SqlSyntaxProvider = new MySqlSyntaxProvider(Mock.Of()); Expression> predicate = user => user.Login.StartsWith("mydomain\\myuser"); - var modelToSqlExpressionHelper = new PocoToSqlExpressionHelper(); + var modelToSqlExpressionHelper = new PocoToSqlExpressionHelper(new MySqlSyntaxProvider(Mock.Of())); var result = modelToSqlExpressionHelper.Visit(predicate); Console.WriteLine("Poco to Sql ExpressionHelper: \n" + result); diff --git a/src/Umbraco.Tests/Persistence/Querying/MediaRepositorySqlClausesTest.cs b/src/Umbraco.Tests/Persistence/Querying/MediaRepositorySqlClausesTest.cs index 5e680a426e..89343826f3 100644 --- a/src/Umbraco.Tests/Persistence/Querying/MediaRepositorySqlClausesTest.cs +++ b/src/Umbraco.Tests/Persistence/Querying/MediaRepositorySqlClausesTest.cs @@ -24,12 +24,12 @@ namespace Umbraco.Tests.Persistence.Querying var sql = new Sql(); sql.Select("*") - .From() - .InnerJoin() - .On(left => left.NodeId, right => right.NodeId) - .InnerJoin() - .On(left => left.NodeId, right => right.NodeId) - .Where(x => x.NodeObjectType == NodeObjectTypeId); + .From(SqlSyntax) + .InnerJoin(SqlSyntax) + .On(SqlSyntax, left => left.NodeId, right => right.NodeId) + .InnerJoin(SqlSyntax) + .On(SqlSyntax, left => left.NodeId, right => right.NodeId) + .Where(SqlSyntax, x => x.NodeObjectType == NodeObjectTypeId); Assert.That(sql.SQL, Is.EqualTo(expected.SQL)); diff --git a/src/Umbraco.Tests/Persistence/Querying/MediaTypeRepositorySqlClausesTest.cs b/src/Umbraco.Tests/Persistence/Querying/MediaTypeRepositorySqlClausesTest.cs index 31fc08d822..871fba78b9 100644 --- a/src/Umbraco.Tests/Persistence/Querying/MediaTypeRepositorySqlClausesTest.cs +++ b/src/Umbraco.Tests/Persistence/Querying/MediaTypeRepositorySqlClausesTest.cs @@ -23,10 +23,10 @@ namespace Umbraco.Tests.Persistence.Querying var sql = new Sql(); sql.Select("*") - .From() - .InnerJoin() - .On(left => left.NodeId, right => right.NodeId) - .Where(x => x.NodeObjectType == NodeObjectTypeId); + .From(SqlSyntax) + .InnerJoin(SqlSyntax) + .On(SqlSyntax, left => left.NodeId, right => right.NodeId) + .Where(SqlSyntax, x => x.NodeObjectType == NodeObjectTypeId); Assert.That(sql.SQL, Is.EqualTo(expected.SQL)); diff --git a/src/Umbraco.Tests/Persistence/Querying/PetaPocoSqlTests.cs b/src/Umbraco.Tests/Persistence/Querying/PetaPocoSqlTests.cs index f934b0c536..672b115415 100644 --- a/src/Umbraco.Tests/Persistence/Querying/PetaPocoSqlTests.cs +++ b/src/Umbraco.Tests/Persistence/Querying/PetaPocoSqlTests.cs @@ -20,7 +20,8 @@ namespace Umbraco.Tests.Persistence.Querying public void Where_Clause_With_Starts_With_Additional_Parameters() { var content = new NodeDto() { NodeId = 123, Path = "-1,123" }; - var sql = new Sql("SELECT *").From().Where(x => x.Path.SqlStartsWith(content.Path, TextColumnType.NVarchar)); + var sql = new Sql("SELECT *").From(SqlSyntax) + .Where(SqlSyntax, x => x.Path.SqlStartsWith(content.Path, TextColumnType.NVarchar)); Assert.AreEqual("SELECT * FROM [umbracoNode] WHERE (upper([umbracoNode].[path]) LIKE upper(@0))", sql.SQL.Replace("\n", " ")); Assert.AreEqual(1, sql.Arguments.Length); @@ -31,7 +32,8 @@ namespace Umbraco.Tests.Persistence.Querying public void Where_Clause_With_Starts_With_By_Variable() { var content = new NodeDto() {NodeId = 123, Path = "-1,123"}; - var sql = new Sql("SELECT *").From().Where(x => x.Path.StartsWith(content.Path) && x.NodeId != content.NodeId); + var sql = new Sql("SELECT *").From(SqlSyntax) + .Where(SqlSyntax, x => x.Path.StartsWith(content.Path) && x.NodeId != content.NodeId); Assert.AreEqual("SELECT * FROM [umbracoNode] WHERE (upper([umbracoNode].[path]) LIKE upper(@0) AND [umbracoNode].[id] <> @1)", sql.SQL.Replace("\n", " ")); Assert.AreEqual(2, sql.Arguments.Length); @@ -43,7 +45,8 @@ namespace Umbraco.Tests.Persistence.Querying public void Where_Clause_With_Not_Starts_With() { var level = 1; - var sql = new Sql("SELECT *").From().Where(x => x.Level == level && !x.Path.StartsWith("-20")); + var sql = new Sql("SELECT *").From(SqlSyntax) + .Where(SqlSyntax, x => x.Level == level && !x.Path.StartsWith("-20")); Assert.AreEqual("SELECT * FROM [umbracoNode] WHERE ([umbracoNode].[level] = @0 AND NOT (upper([umbracoNode].[path]) LIKE upper(@1)))", sql.SQL.Replace("\n", " ")); Assert.AreEqual(2, sql.Arguments.Length); @@ -54,7 +57,8 @@ namespace Umbraco.Tests.Persistence.Querying [Test] public void Where_Clause_With_Equals_Clause() { - var sql = new Sql("SELECT *").From().Where(x => x.Text.Equals("Hello@world.com")); + var sql = new Sql("SELECT *").From(SqlSyntax) + .Where(SqlSyntax, x => x.Text.Equals("Hello@world.com")); Assert.AreEqual("SELECT * FROM [umbracoNode] WHERE (upper([umbracoNode].[text]) = upper(@0))", sql.SQL.Replace("\n", " ")); Assert.AreEqual(1, sql.Arguments.Length); @@ -64,7 +68,8 @@ namespace Umbraco.Tests.Persistence.Querying [Test] public void Where_Clause_With_False_Boolean() { - var sql = new Sql("SELECT *").From().Where(x => !x.Trashed); + var sql = new Sql("SELECT *").From(SqlSyntax) + .Where(SqlSyntax, x => !x.Trashed); Assert.AreEqual("SELECT * FROM [umbracoNode] WHERE (NOT ([umbracoNode].[trashed] = @0))", sql.SQL.Replace("\n", " ")); Assert.AreEqual(1, sql.Arguments.Length); @@ -74,7 +79,8 @@ namespace Umbraco.Tests.Persistence.Querying [Test] public void Where_Clause_With_Boolean() { - var sql = new Sql("SELECT *").From().Where(x => x.Trashed); + var sql = new Sql("SELECT *").From(SqlSyntax) + .Where(SqlSyntax, x => x.Trashed); Assert.AreEqual("SELECT * FROM [umbracoNode] WHERE ([umbracoNode].[trashed] = @0)", sql.SQL.Replace("\n", " ")); Assert.AreEqual(1, sql.Arguments.Length); @@ -84,7 +90,8 @@ namespace Umbraco.Tests.Persistence.Querying [Test] public void Where_Clause_With_ToUpper() { - var sql = new Sql("SELECT *").From().Where(x => x.Text.ToUpper() == "hello".ToUpper()); + var sql = new Sql("SELECT *").From(SqlSyntax) + .Where(SqlSyntax, x => x.Text.ToUpper() == "hello".ToUpper()); Assert.AreEqual("SELECT * FROM [umbracoNode] WHERE (upper([umbracoNode].[text]) = upper(@0))", sql.SQL.Replace("\n", " ")); Assert.AreEqual(1, sql.Arguments.Length); @@ -94,7 +101,8 @@ namespace Umbraco.Tests.Persistence.Querying [Test] public void Where_Clause_With_ToString() { - var sql = new Sql("SELECT *").From().Where(x => x.Text == 1.ToString()); + var sql = new Sql("SELECT *").From(SqlSyntax) + .Where(SqlSyntax, x => x.Text == 1.ToString()); Assert.AreEqual("SELECT * FROM [umbracoNode] WHERE ([umbracoNode].[text] = @0)", sql.SQL.Replace("\n", " ")); Assert.AreEqual(1, sql.Arguments.Length); @@ -104,7 +112,8 @@ namespace Umbraco.Tests.Persistence.Querying [Test] public void Where_Clause_With_Wildcard() { - var sql = new Sql("SELECT *").From().Where(x => x.Text.StartsWith("D")); + var sql = new Sql("SELECT *").From(SqlSyntax) + .Where(SqlSyntax, x => x.Text.StartsWith("D")); Assert.AreEqual("SELECT * FROM [umbracoNode] WHERE (upper([umbracoNode].[text]) LIKE upper(@0))", sql.SQL.Replace("\n", " ")); Assert.AreEqual(1, sql.Arguments.Length); @@ -114,7 +123,8 @@ namespace Umbraco.Tests.Persistence.Querying [Test] public void Where_Clause_Single_Constant() { - var sql = new Sql("SELECT *").From().Where(x => x.NodeId == 2); + var sql = new Sql("SELECT *").From(SqlSyntax) + .Where(SqlSyntax, x => x.NodeId == 2); Assert.AreEqual("SELECT * FROM [umbracoNode] WHERE ([umbracoNode].[id] = @0)", sql.SQL.Replace("\n", " ")); Assert.AreEqual(1, sql.Arguments.Length); @@ -124,7 +134,8 @@ namespace Umbraco.Tests.Persistence.Querying [Test] public void Where_Clause_And_Constant() { - var sql = new Sql("SELECT *").From().Where(x => x.NodeId != 2 && x.NodeId != 3); + var sql = new Sql("SELECT *").From(SqlSyntax) + .Where(SqlSyntax, x => x.NodeId != 2 && x.NodeId != 3); Assert.AreEqual("SELECT * FROM [umbracoNode] WHERE ([umbracoNode].[id] <> @0 AND [umbracoNode].[id] <> @1)", sql.SQL.Replace("\n", " ")); Assert.AreEqual(2, sql.Arguments.Length); @@ -135,7 +146,8 @@ namespace Umbraco.Tests.Persistence.Querying [Test] public void Where_Clause_Or_Constant() { - var sql = new Sql("SELECT *").From().Where(x => x.Text == "hello" || x.NodeId == 3); + var sql = new Sql("SELECT *").From(SqlSyntax) + .Where(SqlSyntax, x => x.Text == "hello" || x.NodeId == 3); Assert.AreEqual("SELECT * FROM [umbracoNode] WHERE ([umbracoNode].[text] = @0 OR [umbracoNode].[id] = @1)", sql.SQL.Replace("\n", " ")); Assert.AreEqual(2, sql.Arguments.Length); @@ -150,7 +162,7 @@ namespace Umbraco.Tests.Persistence.Querying expected.Select("*").From("[cmsContent]"); var sql = new Sql(); - sql.Select("*").From(); + sql.Select("*").From(SqlSyntax); Assert.That(sql.SQL, Is.EqualTo(expected.SQL)); @@ -167,9 +179,9 @@ namespace Umbraco.Tests.Persistence.Querying .On("[cmsDocument].[versionId] = [cmsContentVersion].[VersionId]"); var sql = new Sql(); - sql.Select("*").From() - .InnerJoin() - .On(left => left.VersionId, right => right.VersionId); + sql.Select("*").From(SqlSyntax) + .InnerJoin(SqlSyntax) + .On(SqlSyntax, left => left.VersionId, right => right.VersionId); Assert.That(sql.SQL, Is.EqualTo(expected.SQL)); @@ -183,7 +195,7 @@ namespace Umbraco.Tests.Persistence.Querying expected.Select("*").From("[cmsContent]").OrderBy("([cmsContent].[contentType])"); var sql = new Sql(); - sql.Select("*").From().OrderBy(x => x.ContentTypeId); + sql.Select("*").From(SqlSyntax).OrderBy(SqlSyntax, x => x.ContentTypeId); Assert.That(sql.SQL, Is.EqualTo(expected.SQL)); @@ -197,7 +209,7 @@ namespace Umbraco.Tests.Persistence.Querying expected.Select("*").From("[cmsContent]").GroupBy("[contentType]"); var sql = new Sql(); - sql.Select("*").From().GroupBy(x => x.ContentTypeId); + sql.Select("*").From(SqlSyntax).GroupBy(SqlSyntax, x => x.ContentTypeId); Assert.That(sql.SQL, Is.EqualTo(expected.SQL)); @@ -211,7 +223,7 @@ namespace Umbraco.Tests.Persistence.Querying expected.Select("*").From("[cmsContent]").Where("[cmsContent].[nodeId] = @0", 1045); var sql = new Sql(); - sql.Select("*").From().Where(x => x.NodeId == 1045); + sql.Select("*").From(SqlSyntax).Where(SqlSyntax, x => x.NodeId == 1045); Assert.That(sql.SQL, Is.EqualTo(expected.SQL)); @@ -229,9 +241,9 @@ namespace Umbraco.Tests.Persistence.Querying var sql = new Sql(); sql.Select("*") - .From() - .Where(x => x.NodeId == 1045) - .Where(x => x.ContentTypeId == 1050); + .From(SqlSyntax) + .Where(SqlSyntax, x => x.NodeId == 1045) + .Where(SqlSyntax, x => x.ContentTypeId == 1050); Assert.That(sql.SQL, Is.EqualTo(expected.SQL)); diff --git a/src/Umbraco.Tests/Persistence/Querying/QueryBuilderTests.cs b/src/Umbraco.Tests/Persistence/Querying/QueryBuilderTests.cs index 28cdd36e3c..aacc28d1b3 100644 --- a/src/Umbraco.Tests/Persistence/Querying/QueryBuilderTests.cs +++ b/src/Umbraco.Tests/Persistence/Querying/QueryBuilderTests.cs @@ -22,7 +22,7 @@ namespace Umbraco.Tests.Persistence.Querying sql.Select("*"); sql.From("umbracoNode"); - var query = Query.Builder.Where(x => x.Path.StartsWith("-1")); + var query = new Query(SqlSyntax).Where(x => x.Path.StartsWith("-1")); // Act var translator = new SqlTranslator(sql, query); @@ -49,7 +49,7 @@ namespace Umbraco.Tests.Persistence.Querying sql.Select("*"); sql.From("umbracoNode"); - var query = Query.Builder.Where(x => x.ParentId == -1); + var query = new Query(SqlSyntax).Where(x => x.ParentId == -1); // Act var translator = new SqlTranslator(sql, query); @@ -76,7 +76,7 @@ namespace Umbraco.Tests.Persistence.Querying sql.Select("*"); sql.From("umbracoNode"); - var query = Query.Builder.Where(x => x.Alias == "umbTextpage"); + var query = new Query(SqlSyntax).Where(x => x.Alias == "umbTextpage"); // Act var translator = new SqlTranslator(sql, query); @@ -104,16 +104,16 @@ namespace Umbraco.Tests.Persistence.Querying var sql = new Sql(); sql.Select("*") - .From() - .InnerJoin() - .On(left => left.VersionId, right => right.VersionId) - .InnerJoin() - .On(left => left.NodeId, right => right.NodeId) - .InnerJoin() - .On(left => left.NodeId, right => right.NodeId) - .Where(x => x.NodeObjectType == nodeObjectTypeId); + .From(SqlSyntax) + .InnerJoin(SqlSyntax) + .On(SqlSyntax, left => left.VersionId, right => right.VersionId) + .InnerJoin(SqlSyntax) + .On(SqlSyntax, left => left.NodeId, right => right.NodeId) + .InnerJoin(SqlSyntax) + .On(SqlSyntax, left => left.NodeId, right => right.NodeId) + .Where(SqlSyntax, x => x.NodeObjectType == nodeObjectTypeId); - var query = Query.Builder.Where(x => x.Path.StartsWith(path) && x.Id != id && x.Published == true && x.Trashed == false); + var query = new Query(SqlSyntax).Where(x => x.Path.StartsWith(path) && x.Id != id && x.Published == true && x.Trashed == false); // Act var translator = new SqlTranslator(sql, query); diff --git a/src/Umbraco.Tests/Persistence/Repositories/ContentRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/ContentRepositoryTest.cs index 0a0b38a0b0..04b54f2898 100644 --- a/src/Umbraco.Tests/Persistence/Repositories/ContentRepositoryTest.cs +++ b/src/Umbraco.Tests/Persistence/Repositories/ContentRepositoryTest.cs @@ -394,7 +394,7 @@ namespace Umbraco.Tests.Persistence.Repositories using (var repository = CreateRepository(unitOfWork, out contentTypeRepository)) { // Act - var query = Query.Builder.Where(x => x.Level == 2); + var query = new Query(SqlSyntax).Where(x => x.Level == 2); var result = repository.GetByQuery(query); // Assert @@ -443,7 +443,7 @@ namespace Umbraco.Tests.Persistence.Repositories using (var repository = CreateRepository(unitOfWork, out contentTypeRepository)) { // Act - var query = Query.Builder.Where(x => x.Level == 2); + var query = new Query(SqlSyntax).Where(x => x.Level == 2); int totalRecords; var result = repository.GetPagedResultsByQuery(query, 0, 1, out totalRecords, "Name", Direction.Ascending); @@ -464,7 +464,7 @@ namespace Umbraco.Tests.Persistence.Repositories using (var repository = CreateRepository(unitOfWork, out contentTypeRepository)) { // Act - var query = Query.Builder.Where(x => x.Level == 2); + var query = new Query(SqlSyntax).Where(x => x.Level == 2); int totalRecords; var result = repository.GetPagedResultsByQuery(query, 1, 1, out totalRecords, "Name", Direction.Ascending); @@ -485,7 +485,7 @@ namespace Umbraco.Tests.Persistence.Repositories using (var repository = CreateRepository(unitOfWork, out contentTypeRepository)) { // Act - var query = Query.Builder.Where(x => x.Level == 2); + var query = new Query(SqlSyntax).Where(x => x.Level == 2); int totalRecords; var result = repository.GetPagedResultsByQuery(query, 0, 2, out totalRecords, "Name", Direction.Ascending); @@ -506,7 +506,7 @@ namespace Umbraco.Tests.Persistence.Repositories using (var repository = CreateRepository(unitOfWork, out contentTypeRepository)) { // Act - var query = Query.Builder.Where(x => x.Level == 2); + var query = new Query(SqlSyntax).Where(x => x.Level == 2); int totalRecords; var result = repository.GetPagedResultsByQuery(query, 0, 1, out totalRecords, "Name", Direction.Descending); @@ -527,7 +527,7 @@ namespace Umbraco.Tests.Persistence.Repositories using (var repository = CreateRepository(unitOfWork, out contentTypeRepository)) { // Act - var query = Query.Builder.Where(x => x.Level == 2); + var query = new Query(SqlSyntax).Where(x => x.Level == 2); int totalRecords; var result = repository.GetPagedResultsByQuery(query, 0, 1, out totalRecords, "Name", Direction.Ascending, "Page 2"); @@ -548,7 +548,7 @@ namespace Umbraco.Tests.Persistence.Repositories using (var repository = CreateRepository(unitOfWork, out contentTypeRepository)) { // Act - var query = Query.Builder.Where(x => x.Level == 2); + var query = new Query(SqlSyntax).Where(x => x.Level == 2); int totalRecords; var result = repository.GetPagedResultsByQuery(query, 0, 1, out totalRecords, "Name", Direction.Ascending, "Page"); @@ -629,7 +629,7 @@ namespace Umbraco.Tests.Persistence.Repositories { // Act int level = 2; - var query = Query.Builder.Where(x => x.Level == level); + var query = new Query(SqlSyntax).Where(x => x.Level == level); var result = repository.Count(query); // Assert @@ -668,7 +668,7 @@ namespace Umbraco.Tests.Persistence.Repositories using (var repository = CreateRepository(unitOfWork, out contentTypeRepository)) { // Act - var query = Query.Builder.Where(x => x.Key == new Guid("B58B3AD4-62C2-4E27-B1BE-837BD7C533E0")); + var query = new Query(SqlSyntax).Where(x => x.Key == new Guid("B58B3AD4-62C2-4E27-B1BE-837BD7C533E0")); var content = repository.GetByQuery(query).SingleOrDefault(); // Assert diff --git a/src/Umbraco.Tests/Persistence/Repositories/DataTypeDefinitionRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/DataTypeDefinitionRepositoryTest.cs index 3cb4e57efd..7f75b3fa20 100644 --- a/src/Umbraco.Tests/Persistence/Repositories/DataTypeDefinitionRepositoryTest.cs +++ b/src/Umbraco.Tests/Persistence/Repositories/DataTypeDefinitionRepositoryTest.cs @@ -162,7 +162,7 @@ namespace Umbraco.Tests.Persistence.Repositories { // Act - var query = Query.Builder.Where(x => x.PropertyEditorAlias == Constants.PropertyEditors.RadioButtonListAlias); + var query = new Query(SqlSyntax).Where(x => x.PropertyEditorAlias == Constants.PropertyEditors.RadioButtonListAlias); var result = repository.GetByQuery(query); // Assert @@ -182,7 +182,7 @@ namespace Umbraco.Tests.Persistence.Repositories { // Act - var query = Query.Builder.Where(x => x.Name.StartsWith("D")); + var query = new Query(SqlSyntax).Where(x => x.Name.StartsWith("D")); int count = repository.Count(query); // Assert diff --git a/src/Umbraco.Tests/Persistence/Repositories/DictionaryRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/DictionaryRepositoryTest.cs index 25fcc5e13a..c19e0f2eca 100644 --- a/src/Umbraco.Tests/Persistence/Repositories/DictionaryRepositoryTest.cs +++ b/src/Umbraco.Tests/Persistence/Repositories/DictionaryRepositoryTest.cs @@ -247,7 +247,7 @@ namespace Umbraco.Tests.Persistence.Repositories { // Act - var query = Query.Builder.Where(x => x.ItemKey == "Article"); + var query = new Query(SqlSyntax).Where(x => x.ItemKey == "Article"); var result = repository.GetByQuery(query); // Assert @@ -268,7 +268,7 @@ namespace Umbraco.Tests.Persistence.Repositories { // Act - var query = Query.Builder.Where(x => x.ItemKey.StartsWith("Read")); + var query = new Query(SqlSyntax).Where(x => x.ItemKey.StartsWith("Read")); var result = repository.Count(query); // Assert diff --git a/src/Umbraco.Tests/Persistence/Repositories/LanguageRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/LanguageRepositoryTest.cs index e4c403b280..653e4a5738 100644 --- a/src/Umbraco.Tests/Persistence/Repositories/LanguageRepositoryTest.cs +++ b/src/Umbraco.Tests/Persistence/Repositories/LanguageRepositoryTest.cs @@ -170,7 +170,7 @@ namespace Umbraco.Tests.Persistence.Repositories { // Act - var query = Query.Builder.Where(x => x.IsoCode == "da-DK"); + var query = new Query(SqlSyntax).Where(x => x.IsoCode == "da-DK"); var result = repository.GetByQuery(query); // Assert @@ -190,7 +190,7 @@ namespace Umbraco.Tests.Persistence.Repositories { // Act - var query = Query.Builder.Where(x => x.IsoCode.StartsWith("D")); + var query = new Query(SqlSyntax).Where(x => x.IsoCode.StartsWith("D")); int count = repository.Count(query); // Assert diff --git a/src/Umbraco.Tests/Persistence/Repositories/MacroRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/MacroRepositoryTest.cs index 251fb7c566..fe37a227aa 100644 --- a/src/Umbraco.Tests/Persistence/Repositories/MacroRepositoryTest.cs +++ b/src/Umbraco.Tests/Persistence/Repositories/MacroRepositoryTest.cs @@ -133,7 +133,7 @@ namespace Umbraco.Tests.Persistence.Repositories using (var repository = new MacroRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax)) { // Act - var query = Query.Builder.Where(x => x.Alias.ToUpper() == "TEST1"); + var query = new Query(SqlSyntax).Where(x => x.Alias.ToUpper() == "TEST1"); var result = repository.GetByQuery(query); // Assert @@ -150,7 +150,7 @@ namespace Umbraco.Tests.Persistence.Repositories using (var repository = new MacroRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax)) { // Act - var query = Query.Builder.Where(x => x.Name.StartsWith("Test")); + var query = new Query(SqlSyntax).Where(x => x.Name.StartsWith("Test")); int count = repository.Count(query); // Assert diff --git a/src/Umbraco.Tests/Persistence/Repositories/MediaRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/MediaRepositoryTest.cs index 348f2015f7..3a28425c84 100644 --- a/src/Umbraco.Tests/Persistence/Repositories/MediaRepositoryTest.cs +++ b/src/Umbraco.Tests/Persistence/Repositories/MediaRepositoryTest.cs @@ -298,7 +298,7 @@ namespace Umbraco.Tests.Persistence.Repositories using (var repository = CreateRepository(unitOfWork, out mediaTypeRepository)) { // Act - var query = Query.Builder.Where(x => x.Level == 2); + var query = new Query(SqlSyntax).Where(x => x.Level == 2); var result = repository.GetByQuery(query); // Assert @@ -316,7 +316,7 @@ namespace Umbraco.Tests.Persistence.Repositories using (var repository = CreateRepository(unitOfWork, out mediaTypeRepository)) { // Act - var query = Query.Builder.Where(x => x.Level == 2); + var query = new Query(SqlSyntax).Where(x => x.Level == 2); int totalRecords; var result = repository.GetPagedResultsByQuery(query, 0, 1, out totalRecords, "SortOrder", Direction.Ascending); @@ -337,7 +337,7 @@ namespace Umbraco.Tests.Persistence.Repositories using (var repository = CreateRepository(unitOfWork, out mediaTypeRepository)) { // Act - var query = Query.Builder.Where(x => x.Level == 2); + var query = new Query(SqlSyntax).Where(x => x.Level == 2); int totalRecords; var result = repository.GetPagedResultsByQuery(query, 1, 1, out totalRecords, "SortOrder", Direction.Ascending); @@ -358,7 +358,7 @@ namespace Umbraco.Tests.Persistence.Repositories using (var repository = CreateRepository(unitOfWork, out mediaTypeRepository)) { // Act - var query = Query.Builder.Where(x => x.Level == 2); + var query = new Query(SqlSyntax).Where(x => x.Level == 2); int totalRecords; var result = repository.GetPagedResultsByQuery(query, 0, 2, out totalRecords, "SortOrder", Direction.Ascending); @@ -379,7 +379,7 @@ namespace Umbraco.Tests.Persistence.Repositories using (var repository = CreateRepository(unitOfWork, out mediaTypeRepository)) { // Act - var query = Query.Builder.Where(x => x.Level == 2); + var query = new Query(SqlSyntax).Where(x => x.Level == 2); int totalRecords; var result = repository.GetPagedResultsByQuery(query, 0, 1, out totalRecords, "SortOrder", Direction.Descending); @@ -400,7 +400,7 @@ namespace Umbraco.Tests.Persistence.Repositories using (var repository = CreateRepository(unitOfWork, out mediaTypeRepository)) { // Act - var query = Query.Builder.Where(x => x.Level == 2); + var query = new Query(SqlSyntax).Where(x => x.Level == 2); int totalRecords; var result = repository.GetPagedResultsByQuery(query, 0, 1, out totalRecords, "Name", Direction.Ascending); @@ -421,7 +421,7 @@ namespace Umbraco.Tests.Persistence.Repositories using (var repository = CreateRepository(unitOfWork, out mediaTypeRepository)) { // Act - var query = Query.Builder.Where(x => x.Level == 2); + var query = new Query(SqlSyntax).Where(x => x.Level == 2); int totalRecords; var result = repository.GetPagedResultsByQuery(query, 0, 1, out totalRecords, "SortOrder", Direction.Ascending, "File"); @@ -442,7 +442,7 @@ namespace Umbraco.Tests.Persistence.Repositories using (var repository = CreateRepository(unitOfWork, out mediaTypeRepository)) { // Act - var query = Query.Builder.Where(x => x.Level == 2); + var query = new Query(SqlSyntax).Where(x => x.Level == 2); int totalRecords; var result = repository.GetPagedResultsByQuery(query, 0, 1, out totalRecords, "SortOrder", Direction.Ascending, "Test"); @@ -527,7 +527,7 @@ namespace Umbraco.Tests.Persistence.Repositories // Act int level = 2; - var query = Query.Builder.Where(x => x.Level == level); + var query = new Query(SqlSyntax).Where(x => x.Level == level); var result = repository.Count(query); // Assert diff --git a/src/Umbraco.Tests/Persistence/Repositories/MemberRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/MemberRepositoryTest.cs index 0f0b9ed48f..f5ca17ee1b 100644 --- a/src/Umbraco.Tests/Persistence/Repositories/MemberRepositoryTest.cs +++ b/src/Umbraco.Tests/Persistence/Repositories/MemberRepositoryTest.cs @@ -191,7 +191,7 @@ namespace Umbraco.Tests.Persistence.Repositories var member = CreateTestMember(key: key); // Act - var query = Query.Builder.Where(x => x.Key == key); + var query = new Query(SqlSyntax).Where(x => x.Key == key); var result = repository.GetByQuery(query); // Assert @@ -318,7 +318,7 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void Can_Create_Correct_Subquery() { - var query = Query.Builder.Where(x => + var query = new Query(SqlSyntax).Where(x => ((Member) x).LongStringPropertyValue.Contains("1095") && ((Member) x).PropertyTypeAlias == "headshot"); @@ -327,8 +327,8 @@ namespace Umbraco.Tests.Persistence.Repositories var subquery = translator.Translate(); var sql = GetBaseQuery(false) .Append(new Sql("WHERE umbracoNode.id IN (" + subquery.SQL + ")", subquery.Arguments)) - .OrderByDescending(x => x.VersionDate) - .OrderBy(x => x.SortOrder); + .OrderByDescending(SqlSyntax, x => x.VersionDate) + .OrderBy(SqlSyntax, x => x.SortOrder); Console.WriteLine(sql.SQL); Assert.That(sql.SQL, Is.Not.Empty); @@ -378,12 +378,12 @@ namespace Umbraco.Tests.Persistence.Repositories { var sqlCount = new Sql() .Select("COUNT(*)") - .From() - .InnerJoin().On(left => left.NodeId, right => right.NodeId) - .InnerJoin().On(left => left.NodeId, right => right.ContentTypeId) - .InnerJoin().On(left => left.NodeId, right => right.NodeId) - .InnerJoin().On(left => left.NodeId, right => right.NodeId) - .Where(x => x.NodeObjectType == NodeObjectTypeId); + .From(SqlSyntax) + .InnerJoin(SqlSyntax).On(SqlSyntax, left => left.NodeId, right => right.NodeId) + .InnerJoin(SqlSyntax).On(SqlSyntax, left => left.NodeId, right => right.ContentTypeId) + .InnerJoin(SqlSyntax).On(SqlSyntax, left => left.NodeId, right => right.NodeId) + .InnerJoin(SqlSyntax).On(SqlSyntax, left => left.NodeId, right => right.NodeId) + .Where(SqlSyntax, x => x.NodeObjectType == NodeObjectTypeId); return sqlCount; } @@ -396,16 +396,16 @@ namespace Umbraco.Tests.Persistence.Repositories "cmsPropertyType.Name", "cmsPropertyType.mandatory", "cmsPropertyType.validationRegExp", "cmsPropertyType.helpText", "cmsPropertyType.sortOrder AS PropertyTypeSortOrder", "cmsPropertyType.propertyTypeGroupId", "cmsPropertyType.dataTypeId", "cmsDataType.propertyEditorAlias", "cmsDataType.dbType") - .From() - .InnerJoin().On(left => left.NodeId, right => right.NodeId) - .InnerJoin().On(left => left.NodeId, right => right.ContentTypeId) - .InnerJoin().On(left => left.NodeId, right => right.NodeId) - .InnerJoin().On(left => left.NodeId, right => right.NodeId) - .LeftJoin().On(left => left.ContentTypeId, right => right.ContentTypeId) - .LeftJoin().On(left => left.DataTypeId, right => right.DataTypeId) - .LeftJoin().On(left => left.PropertyTypeId, right => right.Id) + .From(SqlSyntax) + .InnerJoin(SqlSyntax).On(SqlSyntax, left => left.NodeId, right => right.NodeId) + .InnerJoin(SqlSyntax).On(SqlSyntax, left => left.NodeId, right => right.ContentTypeId) + .InnerJoin(SqlSyntax).On(SqlSyntax, left => left.NodeId, right => right.NodeId) + .InnerJoin(SqlSyntax).On(SqlSyntax, left => left.NodeId, right => right.NodeId) + .LeftJoin(SqlSyntax).On(SqlSyntax, left => left.ContentTypeId, right => right.ContentTypeId) + .LeftJoin(SqlSyntax).On(SqlSyntax, left => left.DataTypeId, right => right.DataTypeId) + .LeftJoin(SqlSyntax).On(SqlSyntax, left => left.PropertyTypeId, right => right.Id) .Append("AND cmsPropertyData.versionId = cmsContentVersion.VersionId") - .Where(x => x.NodeObjectType == NodeObjectTypeId); + .Where(SqlSyntax, x => x.NodeObjectType == NodeObjectTypeId); return sql; } @@ -413,16 +413,16 @@ namespace Umbraco.Tests.Persistence.Repositories { var sql = new Sql(); sql.Select("umbracoNode.id") - .From() - .InnerJoin().On(left => left.NodeId, right => right.NodeId) - .InnerJoin().On(left => left.NodeId, right => right.ContentTypeId) - .InnerJoin().On(left => left.NodeId, right => right.NodeId) - .InnerJoin().On(left => left.NodeId, right => right.NodeId) - .LeftJoin().On(left => left.ContentTypeId, right => right.ContentTypeId) - .LeftJoin().On(left => left.DataTypeId, right => right.DataTypeId) - .LeftJoin().On(left => left.PropertyTypeId, right => right.Id) + .From(SqlSyntax) + .InnerJoin(SqlSyntax).On(SqlSyntax, left => left.NodeId, right => right.NodeId) + .InnerJoin(SqlSyntax).On(SqlSyntax, left => left.NodeId, right => right.ContentTypeId) + .InnerJoin(SqlSyntax).On(SqlSyntax, left => left.NodeId, right => right.NodeId) + .InnerJoin(SqlSyntax).On(SqlSyntax, left => left.NodeId, right => right.NodeId) + .LeftJoin(SqlSyntax).On(SqlSyntax, left => left.ContentTypeId, right => right.ContentTypeId) + .LeftJoin(SqlSyntax).On(SqlSyntax, left => left.DataTypeId, right => right.DataTypeId) + .LeftJoin(SqlSyntax).On(SqlSyntax, left => left.PropertyTypeId, right => right.Id) .Append("AND cmsPropertyData.versionId = cmsContentVersion.VersionId") - .Where(x => x.NodeObjectType == NodeObjectTypeId); + .Where(SqlSyntax, x => x.NodeObjectType == NodeObjectTypeId); return sql; } diff --git a/src/Umbraco.Tests/Persistence/Repositories/NotificationsRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/NotificationsRepositoryTest.cs index 54387a03f9..4d28e909ca 100644 --- a/src/Umbraco.Tests/Persistence/Repositories/NotificationsRepositoryTest.cs +++ b/src/Umbraco.Tests/Persistence/Repositories/NotificationsRepositoryTest.cs @@ -22,7 +22,7 @@ namespace Umbraco.Tests.Persistence.Repositories { var provider = new PetaPocoUnitOfWorkProvider(Logger); var unitOfWork = provider.GetUnitOfWork(); - var repo = new NotificationsRepository(unitOfWork); + var repo = new NotificationsRepository(unitOfWork, SqlSyntax); var node = new NodeDto {CreateDate = DateTime.Now, Level = 1, NodeObjectType = Guid.Parse(Constants.ObjectTypes.ContentItem), ParentId = -1, Path = "-1,123", SortOrder = 1, Text = "hello", Trashed = false, UniqueId = Guid.NewGuid(), UserId = 0}; var result = unitOfWork.Database.Insert(node); @@ -42,7 +42,7 @@ namespace Umbraco.Tests.Persistence.Repositories { var provider = new PetaPocoUnitOfWorkProvider(Logger); var unitOfWork = provider.GetUnitOfWork(); - var repo = new NotificationsRepository(unitOfWork); + var repo = new NotificationsRepository(unitOfWork, SqlSyntax); var userDto = new UserDto { ContentStartId = -1, Email = "test" , Login = "test" , MediaStartId = -1, Password = "test" , Type = 1, UserName = "test" , UserLanguage = "en" }; unitOfWork.Database.Insert(userDto); @@ -68,7 +68,7 @@ namespace Umbraco.Tests.Persistence.Repositories { var provider = new PetaPocoUnitOfWorkProvider(Logger); var unitOfWork = provider.GetUnitOfWork(); - var repo = new NotificationsRepository(unitOfWork); + var repo = new NotificationsRepository(unitOfWork, SqlSyntax); var node1 = new NodeDto { CreateDate = DateTime.Now, Level = 1, NodeObjectType = Guid.Parse(Constants.ObjectTypes.ContentItem), ParentId = -1, Path = "-1,1", SortOrder = 1, Text = "hello1", Trashed = false, UniqueId = Guid.NewGuid(), UserId = 0 }; unitOfWork.Database.Insert(node1); @@ -95,7 +95,7 @@ namespace Umbraco.Tests.Persistence.Repositories { var provider = new PetaPocoUnitOfWorkProvider(Logger); var unitOfWork = provider.GetUnitOfWork(); - var repo = new NotificationsRepository(unitOfWork); + var repo = new NotificationsRepository(unitOfWork, SqlSyntax); var node1 = new NodeDto { CreateDate = DateTime.Now, Level = 1, NodeObjectType = Guid.Parse(Constants.ObjectTypes.ContentItem), ParentId = -1, Path = "-1,1", SortOrder = 1, Text = "hello1", Trashed = false, UniqueId = Guid.NewGuid(), UserId = 0 }; unitOfWork.Database.Insert(node1); @@ -122,7 +122,7 @@ namespace Umbraco.Tests.Persistence.Repositories { var provider = new PetaPocoUnitOfWorkProvider(Logger); var unitOfWork = provider.GetUnitOfWork(); - var repo = new NotificationsRepository(unitOfWork); + var repo = new NotificationsRepository(unitOfWork, SqlSyntax); var userDto = new UserDto { ContentStartId = -1, Email = "test", Login = "test", MediaStartId = -1, Password = "test", Type = 1, UserName = "test", UserLanguage = "en" }; unitOfWork.Database.Insert(userDto); diff --git a/src/Umbraco.Tests/Persistence/Repositories/RelationRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/RelationRepositoryTest.cs index ad021920fa..4e79b9094b 100644 --- a/src/Umbraco.Tests/Persistence/Repositories/RelationRepositoryTest.cs +++ b/src/Umbraco.Tests/Persistence/Repositories/RelationRepositoryTest.cs @@ -199,7 +199,7 @@ namespace Umbraco.Tests.Persistence.Repositories { // Act - var query = Query.Builder.Where(x => x.ParentId == NodeDto.NodeIdSeed + 1); + var query = new Query(SqlSyntax).Where(x => x.ParentId == NodeDto.NodeIdSeed + 1); int count = repository.Count(query); // Assert @@ -218,7 +218,7 @@ namespace Umbraco.Tests.Persistence.Repositories { // Act - var query = Query.Builder.Where(x => x.RelationTypeId == RelationTypeDto.NodeIdSeed); + var query = new Query(SqlSyntax).Where(x => x.RelationTypeId == RelationTypeDto.NodeIdSeed); var relations = repository.GetByQuery(query); // Assert diff --git a/src/Umbraco.Tests/Persistence/Repositories/RelationTypeRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/RelationTypeRepositoryTest.cs index 2a95957ea8..c1c46d22a5 100644 --- a/src/Umbraco.Tests/Persistence/Repositories/RelationTypeRepositoryTest.cs +++ b/src/Umbraco.Tests/Persistence/Repositories/RelationTypeRepositoryTest.cs @@ -192,7 +192,7 @@ namespace Umbraco.Tests.Persistence.Repositories { // Act - var query = Query.Builder.Where(x => x.Alias.StartsWith("relate")); + var query = new Query(SqlSyntax).Where(x => x.Alias.StartsWith("relate")); int count = repository.Count(query); // Assert @@ -211,7 +211,7 @@ namespace Umbraco.Tests.Persistence.Repositories // Act var childObjType = new Guid(Constants.ObjectTypes.DocumentType); - var query = Query.Builder.Where(x => x.ChildObjectType == childObjType); + var query = new Query(SqlSyntax).Where(x => x.ChildObjectType == childObjType); var result = repository.GetByQuery(query); // Assert diff --git a/src/Umbraco.Tests/Persistence/Repositories/ServerRegistrationRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/ServerRegistrationRepositoryTest.cs index 9433c9a2b6..b76d082d07 100644 --- a/src/Umbraco.Tests/Persistence/Repositories/ServerRegistrationRepositoryTest.cs +++ b/src/Umbraco.Tests/Persistence/Repositories/ServerRegistrationRepositoryTest.cs @@ -128,7 +128,7 @@ namespace Umbraco.Tests.Persistence.Repositories using (var repository = CreateRepositor(unitOfWork)) { // Act - var query = Query.Builder.Where(x => x.ComputerName.ToUpper() == "COMPUTER3"); + var query = new Query(SqlSyntax).Where(x => x.ComputerName.ToUpper() == "COMPUTER3"); var result = repository.GetByQuery(query); // Assert @@ -145,7 +145,7 @@ namespace Umbraco.Tests.Persistence.Repositories using (var repository = CreateRepositor(unitOfWork)) { // Act - var query = Query.Builder.Where(x => x.ServerAddress.StartsWith("http://")); + var query = new Query(SqlSyntax).Where(x => x.ServerAddress.StartsWith("http://")); int count = repository.Count(query); // Assert diff --git a/src/Umbraco.Tests/Persistence/Repositories/UserRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/UserRepositoryTest.cs index 1d26e59113..d74a84ecac 100644 --- a/src/Umbraco.Tests/Persistence/Repositories/UserRepositoryTest.cs +++ b/src/Umbraco.Tests/Persistence/Repositories/UserRepositoryTest.cs @@ -252,7 +252,7 @@ namespace Umbraco.Tests.Persistence.Repositories CreateAndCommitMultipleUsers(repository, unitOfWork); // Act - var query = Query.Builder.Where(x => x.Username == "TestUser1"); + var query = new Query(SqlSyntax).Where(x => x.Username == "TestUser1"); var result = repository.GetByQuery(query); // Assert @@ -333,7 +333,7 @@ namespace Umbraco.Tests.Persistence.Repositories var users = CreateAndCommitMultipleUsers(repository, unitOfWork); // Act - var query = Query.Builder.Where(x => x.Username == "TestUser1" || x.Username == "TestUser2"); + var query = new Query(SqlSyntax).Where(x => x.Username == "TestUser1" || x.Username == "TestUser2"); var result = repository.Count(query); // Assert diff --git a/src/Umbraco.Tests/Persistence/Repositories/UserTypeRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/UserTypeRepositoryTest.cs index 5efc139931..5f7ce5e858 100644 --- a/src/Umbraco.Tests/Persistence/Repositories/UserTypeRepositoryTest.cs +++ b/src/Umbraco.Tests/Persistence/Repositories/UserTypeRepositoryTest.cs @@ -193,7 +193,7 @@ namespace Umbraco.Tests.Persistence.Repositories CreateAndCommitMultipleUserTypes(repository, unitOfWork); // Act - var query = Query.Builder.Where(x => x.Alias == "testUserType1"); + var query = new Query(SqlSyntax).Where(x => x.Alias == "testUserType1"); var result = repository.GetByQuery(query); // Assert @@ -270,7 +270,7 @@ namespace Umbraco.Tests.Persistence.Repositories var userTypes = CreateAndCommitMultipleUserTypes(repository, unitOfWork); // Act - var query = Query.Builder.Where(x => x.Alias == "testUserType1" || x.Alias == "testUserType2"); + var query = new Query(SqlSyntax).Where(x => x.Alias == "testUserType1" || x.Alias == "testUserType2"); var result = repository.Count(query); // Assert diff --git a/src/Umbraco.Tests/Persistence/SyntaxProvider/MySqlSyntaxProviderTests.cs b/src/Umbraco.Tests/Persistence/SyntaxProvider/MySqlSyntaxProviderTests.cs deleted file mode 100644 index 7b16e77171..0000000000 --- a/src/Umbraco.Tests/Persistence/SyntaxProvider/MySqlSyntaxProviderTests.cs +++ /dev/null @@ -1,52 +0,0 @@ -using System; - -using Moq; -using NUnit.Framework; -using Umbraco.Core.Logging; -using Umbraco.Core.Models.Rdbms; -using Umbraco.Core.Persistence.DatabaseModelDefinitions; -using Umbraco.Core.Persistence.SqlSyntax; - -namespace Umbraco.Tests.Persistence.SyntaxProvider -{ - [NUnit.Framework.Ignore("This doesn't actually test anything")] - [TestFixture] - public class MySqlSyntaxProviderTests - { - [SetUp] - public void SetUp() - { - SqlSyntaxContext.SqlSyntaxProvider = new MySqlSyntaxProvider(Mock.Of()); - } - - [Test] - public void Can_Generate_Create_Table_Statement() - { - var type = typeof(TagRelationshipDto); - var definition = DefinitionFactory.GetTableDefinition(type); - - string create = SqlSyntaxContext.SqlSyntaxProvider.Format(definition); - string primaryKey = SqlSyntaxContext.SqlSyntaxProvider.FormatPrimaryKey(definition); - var indexes = SqlSyntaxContext.SqlSyntaxProvider.Format(definition.Indexes); - var keys = SqlSyntaxContext.SqlSyntaxProvider.Format(definition.ForeignKeys); - - Console.WriteLine(create); - Console.WriteLine(primaryKey); - foreach (var sql in keys) - { - Console.WriteLine(sql); - } - - foreach (var sql in indexes) - { - Console.WriteLine(sql); - } - } - - [TearDown] - public void TearDown() - { - SqlSyntaxContext.SqlSyntaxProvider = null; - } - } -} \ No newline at end of file diff --git a/src/Umbraco.Tests/Persistence/SyntaxProvider/SqlCeSyntaxProviderTests.cs b/src/Umbraco.Tests/Persistence/SyntaxProvider/SqlCeSyntaxProviderTests.cs index b574cb81bd..8cb4d6f675 100644 --- a/src/Umbraco.Tests/Persistence/SyntaxProvider/SqlCeSyntaxProviderTests.cs +++ b/src/Umbraco.Tests/Persistence/SyntaxProvider/SqlCeSyntaxProviderTests.cs @@ -15,24 +15,21 @@ namespace Umbraco.Tests.Persistence.SyntaxProvider [TestFixture] public class SqlCeSyntaxProviderTests { - [SetUp] - public void SetUp() - { - SqlSyntaxContext.SqlSyntaxProvider = new SqlCeSyntaxProvider(); - } [Test] public void Can_Generate_Delete_SubQuery_Statement() { + var sqlSyntax = new SqlCeSyntaxProvider(); + var mediaObjectType = Guid.Parse(Constants.ObjectTypes.Media); var subQuery = new Sql() .Select("DISTINCT cmsContentXml.nodeId") - .From() - .InnerJoin() - .On(left => left.NodeId, right => right.NodeId) - .Where(dto => dto.NodeObjectType == mediaObjectType); + .From(sqlSyntax) + .InnerJoin(sqlSyntax) + .On(sqlSyntax, left => left.NodeId, right => right.NodeId) + .Where(sqlSyntax, dto => dto.NodeObjectType == mediaObjectType); - var sql = SqlSyntaxContext.SqlSyntaxProvider.GetDeleteSubquery("cmsContentXml", "nodeId", subQuery); + var sql = sqlSyntax.GetDeleteSubquery("cmsContentXml", "nodeId", subQuery); Assert.AreEqual(@"DELETE FROM [cmsContentXml] WHERE [nodeId] IN (SELECT [nodeId] FROM (SELECT DISTINCT cmsContentXml.nodeId FROM [cmsContentXml] @@ -49,13 +46,15 @@ WHERE ([umbracoNode].[nodeObjectType] = @0)) x)".Replace(Environment.NewLine, " [Test] public void Can_Generate_Create_Table_Statement() { - var type = typeof (NodeDto); - var definition = DefinitionFactory.GetTableDefinition(type); + var sqlSyntax = new SqlCeSyntaxProvider(); - string create = SqlSyntaxContext.SqlSyntaxProvider.Format(definition); - string primaryKey = SqlSyntaxContext.SqlSyntaxProvider.FormatPrimaryKey(definition); - var indexes = SqlSyntaxContext.SqlSyntaxProvider.Format(definition.Indexes); - var keys = SqlSyntaxContext.SqlSyntaxProvider.Format(definition.ForeignKeys); + var type = typeof (NodeDto); + var definition = DefinitionFactory.GetTableDefinition(type, sqlSyntax); + + string create = sqlSyntax.Format(definition); + string primaryKey = sqlSyntax.FormatPrimaryKey(definition); + var indexes = sqlSyntax.Format(definition.Indexes); + var keys = sqlSyntax.Format(definition.ForeignKeys); Console.WriteLine(create); Console.WriteLine(primaryKey); @@ -73,32 +72,32 @@ WHERE ([umbracoNode].[nodeObjectType] = @0)) x)".Replace(Environment.NewLine, " [Test] public void Format_SqlServer_NonClusteredIndexDefinition_AddsNonClusteredDirective() { - SqlSyntaxContext.SqlSyntaxProvider = new SqlServerSyntaxProvider(); + var sqlSyntax = new SqlServerSyntaxProvider(); var indexDefinition = CreateIndexDefinition(); indexDefinition.IndexType = IndexTypes.NonClustered; - var actual = SqlSyntaxContext.SqlSyntaxProvider.Format(indexDefinition); + var actual = sqlSyntax.Format(indexDefinition); Assert.AreEqual("CREATE NONCLUSTERED INDEX [IX_A] ON [TheTable] ([A])", actual); } [Test] public void Format_SqlServer_NonClusteredIndexDefinition_UsingIsClusteredFalse_AddsClusteredDirective() { - SqlSyntaxContext.SqlSyntaxProvider = new SqlServerSyntaxProvider(); + var sqlSyntax = new SqlServerSyntaxProvider(); var indexDefinition = CreateIndexDefinition(); indexDefinition.IsClustered = false; - var actual = SqlSyntaxContext.SqlSyntaxProvider.Format(indexDefinition); + var actual = sqlSyntax.Format(indexDefinition); Assert.AreEqual("CREATE CLUSTERED INDEX [IX_A] ON [TheTable] ([A])", actual); } [Test] public void CreateIndexBuilder_SqlServer_NonClustered_CreatesNonClusteredIndex() { - SqlSyntaxContext.SqlSyntaxProvider = new SqlServerSyntaxProvider(); - var createExpression = new CreateIndexExpression { Index = { Name = "IX_A" } }; + var sqlSyntax = new SqlServerSyntaxProvider(); + var createExpression = new CreateIndexExpression(sqlSyntax, DatabaseProviders.SqlServerCE) { Index = { Name = "IX_A" } }; var builder = new CreateIndexBuilder(createExpression); builder.OnTable("TheTable").OnColumn("A").Ascending().WithOptions().NonClustered(); Assert.AreEqual("CREATE NONCLUSTERED INDEX [IX_A] ON [TheTable] ([A])", createExpression.ToString()); @@ -107,8 +106,8 @@ WHERE ([umbracoNode].[nodeObjectType] = @0)) x)".Replace(Environment.NewLine, " [Test] public void CreateIndexBuilder_SqlServer_Unique_CreatesUniqueNonClusteredIndex() { - SqlSyntaxContext.SqlSyntaxProvider = new SqlServerSyntaxProvider(); - var createExpression = new CreateIndexExpression { Index = { Name = "IX_A" } }; + var sqlSyntax = new SqlServerSyntaxProvider(); + var createExpression = new CreateIndexExpression(sqlSyntax, DatabaseProviders.SqlServerCE) { Index = { Name = "IX_A" } }; var builder = new CreateIndexBuilder(createExpression); builder.OnTable("TheTable").OnColumn("A").Ascending().WithOptions().Unique(); Assert.AreEqual("CREATE UNIQUE NONCLUSTERED INDEX [IX_A] ON [TheTable] ([A])", createExpression.ToString()); @@ -117,8 +116,8 @@ WHERE ([umbracoNode].[nodeObjectType] = @0)) x)".Replace(Environment.NewLine, " [Test] public void CreateIndexBuilder_SqlServer_Clustered_CreatesClusteredIndex() { - SqlSyntaxContext.SqlSyntaxProvider = new SqlServerSyntaxProvider(); - var createExpression = new CreateIndexExpression { Index = { Name = "IX_A" } }; + var sqlSyntax = new SqlServerSyntaxProvider(); + var createExpression = new CreateIndexExpression(sqlSyntax, DatabaseProviders.SqlServerCE) { Index = { Name = "IX_A" } }; var builder = new CreateIndexBuilder(createExpression); builder.OnTable("TheTable").OnColumn("A").Ascending().WithOptions().Clustered(); Assert.AreEqual("CREATE CLUSTERED INDEX [IX_A] ON [TheTable] ([A])", createExpression.ToString()); @@ -135,10 +134,5 @@ WHERE ([umbracoNode].[nodeObjectType] = @0)) x)".Replace(Environment.NewLine, " }; } - [TearDown] - public void TearDown() - { - SqlSyntaxContext.SqlSyntaxProvider = null; - } } } \ No newline at end of file diff --git a/src/Umbraco.Tests/Services/ContentServiceTests.cs b/src/Umbraco.Tests/Services/ContentServiceTests.cs index e517d835cd..52107a8deb 100644 --- a/src/Umbraco.Tests/Services/ContentServiceTests.cs +++ b/src/Umbraco.Tests/Services/ContentServiceTests.cs @@ -785,7 +785,7 @@ namespace Umbraco.Tests.Services var provider = new PetaPocoUnitOfWorkProvider(Logger); using (var uow = provider.GetUnitOfWork()) { - uow.Database.TruncateTable("cmsContentXml"); + uow.Database.TruncateTable(SqlSyntax, "cmsContentXml"); } @@ -820,7 +820,7 @@ namespace Umbraco.Tests.Services using (var uow = provider.GetUnitOfWork()) { - uow.Database.TruncateTable("cmsContentXml"); + uow.Database.TruncateTable(SqlSyntax, "cmsContentXml"); } //for this test we are also going to save a revision for a content item that is not published, this is to ensure //that it's published version still makes it into the cmsContentXml table! diff --git a/src/Umbraco.Tests/Services/MemberServiceTests.cs b/src/Umbraco.Tests/Services/MemberServiceTests.cs index d9cb75e587..d86af1a918 100644 --- a/src/Umbraco.Tests/Services/MemberServiceTests.cs +++ b/src/Umbraco.Tests/Services/MemberServiceTests.cs @@ -1028,11 +1028,11 @@ namespace Umbraco.Tests.Services //now ensure the col is correct var sql = new Sql().Select("cmsPropertyData.*") - .From() - .InnerJoin() - .On(dto => dto.PropertyTypeId, dto => dto.Id) - .Where(dto => dto.NodeId == member.Id) - .Where(dto => dto.Alias == Constants.Conventions.Member.LastLoginDate); + .From(SqlSyntax) + .InnerJoin(SqlSyntax) + .On(SqlSyntax, dto => dto.PropertyTypeId, dto => dto.Id) + .Where(SqlSyntax, dto => dto.NodeId == member.Id) + .Where(SqlSyntax, dto => dto.Alias == Constants.Conventions.Member.LastLoginDate); var colResult = DatabaseContext.Database.Fetch(sql); diff --git a/src/Umbraco.Tests/Services/PerformanceTests.cs b/src/Umbraco.Tests/Services/PerformanceTests.cs index 438705eec8..901ec4c20e 100644 --- a/src/Umbraco.Tests/Services/PerformanceTests.cs +++ b/src/Umbraco.Tests/Services/PerformanceTests.cs @@ -194,7 +194,7 @@ namespace Umbraco.Tests.Services //now we insert each record for the ones we've deleted like we do in the content service. var xmlItems = nodes.Select(node => new ContentXmlDto { NodeId = node.NodeId, Xml = UpdatedXmlStructure }).ToList(); - DatabaseContext.Database.BulkInsertRecords(xmlItems); + DatabaseContext.Database.BulkInsertRecords(SqlSyntax, xmlItems); } } @@ -215,7 +215,7 @@ namespace Umbraco.Tests.Services INNER JOIN cmsContent ON cmsContentXml.nodeId = cmsContent.nodeId)"); - DatabaseContext.Database.BulkInsertRecords(xmlItems, tr); + DatabaseContext.Database.BulkInsertRecords(SqlSyntax, xmlItems, tr); tr.Complete(); } @@ -288,21 +288,21 @@ namespace Umbraco.Tests.Services Path = "" }); } - DatabaseContext.Database.BulkInsertRecords(nodes); + DatabaseContext.Database.BulkInsertRecords(SqlSyntax, nodes); //re-get the nodes with ids var sql = new Sql(); - sql.Select("*").From().Where(x => x.NodeObjectType == customObjectType); + sql.Select("*").From(SqlSyntax).Where(SqlSyntax, x => x.NodeObjectType == customObjectType); nodes = DatabaseContext.Database.Fetch(sql); //create the cmsContent data, each with a new content type id (so we can query on it later if needed) var contentTypeId = 0; var cmsContentItems = nodes.Select(node => new ContentDto { NodeId = node.NodeId, ContentTypeId = contentTypeId++ }).ToList(); - DatabaseContext.Database.BulkInsertRecords(cmsContentItems); + DatabaseContext.Database.BulkInsertRecords(SqlSyntax, cmsContentItems); //create the xml data var xmlItems = nodes.Select(node => new ContentXmlDto { NodeId = node.NodeId, Xml = TestXmlStructure }).ToList(); - DatabaseContext.Database.BulkInsertRecords(xmlItems); + DatabaseContext.Database.BulkInsertRecords(SqlSyntax, xmlItems); return nodes; } diff --git a/src/Umbraco.Tests/TestHelpers/BaseDatabaseFactoryTest.cs b/src/Umbraco.Tests/TestHelpers/BaseDatabaseFactoryTest.cs index 567e09ea11..22a40cfe8b 100644 --- a/src/Umbraco.Tests/TestHelpers/BaseDatabaseFactoryTest.cs +++ b/src/Umbraco.Tests/TestHelpers/BaseDatabaseFactoryTest.cs @@ -243,7 +243,7 @@ namespace Umbraco.Tests.TestHelpers var schemaHelper = new DatabaseSchemaHelper(DatabaseContext.Database, Logger, SqlSyntax); //Create the umbraco database and its base data - schemaHelper.CreateDatabaseSchema(false, ApplicationContext); + schemaHelper.CreateDatabaseSchema(); //close the connections, we're gonna read this baby in as a byte array so we don't have to re-initialize the // damn db for each test @@ -273,7 +273,6 @@ namespace Umbraco.Tests.TestHelpers AppDomain.CurrentDomain.SetData("DataDirectory", null); - SqlSyntaxContext.SqlSyntaxProvider = null; } base.TearDown(); diff --git a/src/Umbraco.Tests/TestHelpers/BaseDatabaseTest.cs b/src/Umbraco.Tests/TestHelpers/BaseDatabaseTest.cs index 2167190167..9914c33a07 100644 --- a/src/Umbraco.Tests/TestHelpers/BaseDatabaseTest.cs +++ b/src/Umbraco.Tests/TestHelpers/BaseDatabaseTest.cs @@ -80,11 +80,11 @@ namespace Umbraco.Tests.TestHelpers IsReady = true }; - SqlSyntaxContext.SqlSyntaxProvider = SyntaxProvider; //Create the umbraco database _database = new Database(ConnectionString, ProviderName); - _database.CreateDatabaseSchema(false); + var databaseSchemaHelper = new DatabaseSchemaHelper(_database, Mock.Of(), SyntaxProvider); + databaseSchemaHelper.CreateDatabaseSchema(); } public abstract string ConnectionString { get; } diff --git a/src/Umbraco.Tests/TestHelpers/BaseSeleniumTest.cs b/src/Umbraco.Tests/TestHelpers/BaseSeleniumTest.cs deleted file mode 100644 index 3f7a59050c..0000000000 --- a/src/Umbraco.Tests/TestHelpers/BaseSeleniumTest.cs +++ /dev/null @@ -1,150 +0,0 @@ -using System; -using System.Data.SqlServerCe; -using System.Diagnostics; -using System.IO; -using System.Text; -using Moq; -using NUnit.Framework; -using OpenQA.Selenium; -using OpenQA.Selenium.Firefox; -using Umbraco.Core; -using Umbraco.Core.Logging; -using Umbraco.Core.Persistence; -using Umbraco.Core.Persistence.Migrations.Initial; -using Umbraco.Core.Persistence.SqlSyntax; - -namespace Umbraco.Tests.TestHelpers -{ - public class BaseSeleniumTest - { - internal IWebDriver Driver; - internal string BaseUrl; - - private StringBuilder _verificationErrors; - private UmbracoDatabase _database; - - protected ApplicationContext ApplicationContext - { - get { return ApplicationContext.Current; } - } - - [SetUp] - public virtual void Initialize() - { - - // Disable medium trust - var transform = TransformWebConfig("Release"); - - var assemblyPath = TestHelper.CurrentAssemblyDirectory; - assemblyPath = Path.Combine(assemblyPath, @"..\..\..\Umbraco.Web.UI\"); - var webUiPath = Path.GetFullPath(new Uri(assemblyPath).LocalPath); - - var installedPackagesConfig = string.Format("{0}App_Data\\packages\\installed\\installedPackages.config", webUiPath); - if (File.Exists(installedPackagesConfig)) - File.Delete(installedPackagesConfig); - - var databaseDataPath = string.Format(@"{0}\App_Data\Umbraco.sdf", webUiPath); - var connectionString = string.Format(@"Data Source={0}", databaseDataPath); - - //Create the Sql CE database - var engine = new SqlCeEngine(connectionString); - if (File.Exists(databaseDataPath) == false) - engine.CreateDatabase(); - - var syntaxProvider = new SqlCeSyntaxProvider(); - SqlSyntaxContext.SqlSyntaxProvider = syntaxProvider; - - _database = new UmbracoDatabase(connectionString, "System.Data.SqlServerCe.4.0", Mock.Of()); - - // First remove anything in the database - var creation = new DatabaseSchemaCreation(_database, Mock.Of(), syntaxProvider); - creation.UninstallDatabaseSchema(); - - // Then populate it with fresh data - _database.CreateDatabaseSchema(false); - - _database.Execute("UPDATE umbracoUser SET userName = 'admin', userPassword = 'W477AMlLwwJQeAGlPZKiEILr8TA=', userEmail = 'none' WHERE id = 0"); // password: test - - // Recycle app pool so the new user can log in - //var webConfigFilePath = string.Format(@"{0}\web.config", webUiPath); - //File.SetLastWriteTime(webConfigFilePath, DateTime.Now); - - // Disable medium trust - transform = TransformWebConfig("Release"); - - Driver = new FirefoxDriver(); - BaseUrl = "http://localhost:61639/"; - _verificationErrors = new StringBuilder(); - } - - [TearDown] - public virtual void TearDown() - { - try - { - Driver.Quit(); - } - catch (Exception) - { - // Ignore errors if unable to close the browser - } - - // Re-enable medium trust - var transform = TransformWebConfig("Debug"); - - Assert.AreEqual("", _verificationErrors.ToString()); - } - - private static string TransformWebConfig(string configurationToUse) - { - var assemblyPath = TestHelper.CurrentAssemblyDirectory; - var toolsPath = Path.Combine(assemblyPath, @"..\..\..\..\tools\ConfigTransformTool\"); - var webUiPath = Path.GetFullPath(new Uri(Path.Combine(assemblyPath, @"..\..\..\Umbraco.Web.UI\")).LocalPath); - - var fileToTransform = webUiPath + "web.config"; - var transformFile = string.Format("{0}web.Template.{1}.config", webUiPath, configurationToUse); - - var psi = new ProcessStartInfo(string.Format("{0}ctt.exe", toolsPath), string.Format("s:\"{0}\" t:\"{1}\" d:\"{2}\" pw v", fileToTransform, transformFile, fileToTransform)) - { - WorkingDirectory = Environment.CurrentDirectory, - UseShellExecute = false, - RedirectStandardOutput = true, - RedirectStandardError = true, - CreateNoWindow = true - }; - - string[] result = {string.Empty}; - using (var process = new Process { StartInfo = psi }) - { - // delegate for writing the process output to the response output - Action dataReceived = ((sender, e) => - { - if (e.Data != null) // sometimes a random event is received with null data, not sure why - I prefer to leave it out - { - result[0] += e.Data; - result[0] += "\r\n"; - } - }); - - process.OutputDataReceived += new DataReceivedEventHandler(dataReceived); - process.ErrorDataReceived += new DataReceivedEventHandler(dataReceived); - - // start the process and start reading the standard and error outputs - process.Start(); - process.BeginErrorReadLine(); - process.BeginOutputReadLine(); - - // wait for the process to exit - process.WaitForExit(); - - // an exit code other than 0 generally means an error - if (process.ExitCode != 0) - { - result[0] = result[0] + "\r\n - Exited with exitcode " + process.ExitCode; - } - } - - return result[0]; - } - } -} diff --git a/src/Umbraco.Tests/TestHelpers/BaseUsingSqlCeSyntax.cs b/src/Umbraco.Tests/TestHelpers/BaseUsingSqlCeSyntax.cs index 777be67736..fc2a839873 100644 --- a/src/Umbraco.Tests/TestHelpers/BaseUsingSqlCeSyntax.cs +++ b/src/Umbraco.Tests/TestHelpers/BaseUsingSqlCeSyntax.cs @@ -14,13 +14,22 @@ namespace Umbraco.Tests.TestHelpers [TestFixture] public abstract class BaseUsingSqlCeSyntax { + private SqlCeSyntaxProvider _sqlSyntax; + protected SqlCeSyntaxProvider SqlSyntax + { + get { return _sqlSyntax ?? (_sqlSyntax = new SqlCeSyntaxProvider()); } + } + [SetUp] public virtual void Initialize() { var container = new ServiceContainer(); + container.Register(factory => SqlSyntax, new PerContainerLifetime()); + container.Register(factory => Mock.Of(), new PerContainerLifetime()); + container.Register(factory => Mock.Of(), new PerContainerLifetime()); var logger = new ProfilingLogger(Mock.Of(), Mock.Of()); - SqlSyntaxContext.SqlSyntaxProvider = new SqlCeSyntaxProvider(); + PluginManager.Current = new PluginManager(new ActivatorServiceProvider(), new NullCacheProvider(), logger, false); @@ -39,7 +48,6 @@ namespace Umbraco.Tests.TestHelpers public virtual void TearDown() { MappingResolver.Reset(); - SqlSyntaxContext.SqlSyntaxProvider = null; PluginManager.Current = null; } } diff --git a/src/Umbraco.Tests/Umbraco.Tests.csproj b/src/Umbraco.Tests/Umbraco.Tests.csproj index fde3eab2da..4f21fc4da1 100644 --- a/src/Umbraco.Tests/Umbraco.Tests.csproj +++ b/src/Umbraco.Tests/Umbraco.Tests.csproj @@ -174,6 +174,7 @@ + @@ -190,7 +191,6 @@ - @@ -259,7 +259,6 @@ - @@ -277,7 +276,6 @@ - @@ -310,8 +308,6 @@ - - diff --git a/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj b/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj index 10da500cd5..42346d6f73 100644 --- a/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj +++ b/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj @@ -1484,8 +1484,6 @@ - - diff --git a/src/Umbraco.Web.UI/umbraco/webservices/TagsAutoCompleteHandler.ashx b/src/Umbraco.Web.UI/umbraco/webservices/TagsAutoCompleteHandler.ashx deleted file mode 100644 index 240d6ba908..0000000000 --- a/src/Umbraco.Web.UI/umbraco/webservices/TagsAutoCompleteHandler.ashx +++ /dev/null @@ -1 +0,0 @@ -<%@ WebHandler Language="C#" CodeBehind="TagsAutoCompleteHandler.ashx.cs" Class="umbraco.presentation.umbraco.webservices.TagsAutoCompleteHandler" %> diff --git a/src/Umbraco.Web.UI/umbraco/webservices/UltimatePickerAutoCompleteHandler.ashx b/src/Umbraco.Web.UI/umbraco/webservices/UltimatePickerAutoCompleteHandler.ashx deleted file mode 100644 index 9b5b98a9b8..0000000000 --- a/src/Umbraco.Web.UI/umbraco/webservices/UltimatePickerAutoCompleteHandler.ashx +++ /dev/null @@ -1 +0,0 @@ -<%@ WebHandler Language="C#" CodeBehind="UltimatePickerAutoCompleteHandler.ashx.cs" Class="umbraco.presentation.umbraco.webservices.UltimatePickerAutoCompleteHandler" %> diff --git a/src/Umbraco.Web.UI/umbraco/webservices/tagService.asmx b/src/Umbraco.Web.UI/umbraco/webservices/tagService.asmx deleted file mode 100644 index c83c8c7a5c..0000000000 --- a/src/Umbraco.Web.UI/umbraco/webservices/tagService.asmx +++ /dev/null @@ -1 +0,0 @@ -<%@ WebService Language="C#" CodeBehind="tagService.asmx.cs" Class="umbracoTags.webservice.tagService" %> diff --git a/src/Umbraco.Web.UI/umbraco/webservices/ultimatePickerAutoSuggest.asmx b/src/Umbraco.Web.UI/umbraco/webservices/ultimatePickerAutoSuggest.asmx deleted file mode 100644 index 0d8a23409d..0000000000 --- a/src/Umbraco.Web.UI/umbraco/webservices/ultimatePickerAutoSuggest.asmx +++ /dev/null @@ -1 +0,0 @@ -<%@ WebService Language="C#" CodeBehind="ultimatePickerAutoSuggest.asmx.cs" Class="umbraco.presentation.umbraco.webservices.ultimatePickerAutoSuggest" %> diff --git a/src/Umbraco.Web/Install/InstallSteps/DatabaseInstallStep.cs b/src/Umbraco.Web/Install/InstallSteps/DatabaseInstallStep.cs index fe3725e45d..dc3c27c7f5 100644 --- a/src/Umbraco.Web/Install/InstallSteps/DatabaseInstallStep.cs +++ b/src/Umbraco.Web/Install/InstallSteps/DatabaseInstallStep.cs @@ -21,6 +21,9 @@ namespace Umbraco.Web.Install.InstallSteps public override InstallSetupResult Execute(object model) { + if (_applicationContext.IsConfigured) + throw new Exception("Umbraco is already configured!"); + var result = _applicationContext.DatabaseContext.CreateDatabaseSchemaAndData(); if (result.Success == false) diff --git a/src/Umbraco.Web/Install/InstallSteps/MajorVersion7UpgradeReport.cs b/src/Umbraco.Web/Install/InstallSteps/MajorVersion7UpgradeReport.cs index e7ee95dadb..f1903f96a4 100644 --- a/src/Umbraco.Web/Install/InstallSteps/MajorVersion7UpgradeReport.cs +++ b/src/Umbraco.Web/Install/InstallSteps/MajorVersion7UpgradeReport.cs @@ -81,16 +81,18 @@ namespace Umbraco.Web.Install.InstallSteps { var errorReport = new List(); + var sqlSyntax = _applicationContext.DatabaseContext.SqlSyntax; + var sql = new Sql(); sql .Select( - SqlSyntaxContext.SqlSyntaxProvider.GetQuotedColumn("cmsDataType", "controlId"), - SqlSyntaxContext.SqlSyntaxProvider.GetQuotedColumn("umbracoNode", "text")) - .From(SqlSyntaxContext.SqlSyntaxProvider.GetQuotedTableName("cmsDataType")) - .InnerJoin(SqlSyntaxContext.SqlSyntaxProvider.GetQuotedTableName("umbracoNode")) + sqlSyntax.GetQuotedColumn("cmsDataType", "controlId"), + sqlSyntax.GetQuotedColumn("umbracoNode", "text")) + .From(sqlSyntax.GetQuotedTableName("cmsDataType")) + .InnerJoin(sqlSyntax.GetQuotedTableName("umbracoNode")) .On( - SqlSyntaxContext.SqlSyntaxProvider.GetQuotedColumn("cmsDataType", "nodeId") + " = " + - SqlSyntaxContext.SqlSyntaxProvider.GetQuotedColumn("umbracoNode", "id")); + sqlSyntax.GetQuotedColumn("cmsDataType", "nodeId") + " = " + + sqlSyntax.GetQuotedColumn("umbracoNode", "id")); var list = _applicationContext.DatabaseContext.Database.Fetch(sql); foreach (var item in list) diff --git a/src/Umbraco.Web/Strategies/Migrations/ClearMediaXmlCacheForDeletedItemsAfterUpgrade.cs b/src/Umbraco.Web/Strategies/Migrations/ClearMediaXmlCacheForDeletedItemsAfterUpgrade.cs index 54b4144fc0..b4ed4ccd15 100644 --- a/src/Umbraco.Web/Strategies/Migrations/ClearMediaXmlCacheForDeletedItemsAfterUpgrade.cs +++ b/src/Umbraco.Web/Strategies/Migrations/ClearMediaXmlCacheForDeletedItemsAfterUpgrade.cs @@ -17,7 +17,14 @@ namespace Umbraco.Web.Strategies.Migrations /// * If current is less than or equal to 7.0.0 /// public class ClearMediaXmlCacheForDeletedItemsAfterUpgrade : MigrationStartupHander - { + { + private readonly ISqlSyntaxProvider _sqlSyntax; + + public ClearMediaXmlCacheForDeletedItemsAfterUpgrade(ISqlSyntaxProvider sqlSyntax) + { + _sqlSyntax = sqlSyntax; + } + protected override void AfterMigration(MigrationRunner sender, MigrationEventArgs e) { var target70 = new Version(7, 0, 0); @@ -30,7 +37,7 @@ namespace Umbraco.Web.Strategies.Migrations var sql = @"DELETE FROM cmsContentXml WHERE nodeId IN (SELECT nodeId FROM (SELECT DISTINCT cmsContentXml.nodeId FROM cmsContentXml INNER JOIN umbracoNode ON cmsContentXml.nodeId = umbracoNode.id - WHERE nodeObjectType = '" + Constants.ObjectTypes.Media + "' AND " + SqlSyntaxContext.SqlSyntaxProvider.GetQuotedColumnName("path") + " LIKE '%-21%') x)"; + WHERE nodeObjectType = '" + Constants.ObjectTypes.Media + "' AND " + _sqlSyntax.GetQuotedColumnName("path") + " LIKE '%-21%') x)"; var count = e.MigrationContext.Database.Execute(sql); diff --git a/src/Umbraco.Web/Strategies/Migrations/EnsureListViewDataTypeIsCreated.cs b/src/Umbraco.Web/Strategies/Migrations/EnsureListViewDataTypeIsCreated.cs index 610c57b592..7244be8710 100644 --- a/src/Umbraco.Web/Strategies/Migrations/EnsureListViewDataTypeIsCreated.cs +++ b/src/Umbraco.Web/Strategies/Migrations/EnsureListViewDataTypeIsCreated.cs @@ -18,6 +18,13 @@ namespace Umbraco.Web.Strategies.Migrations /// public class EnsureDefaultListViewDataTypesCreated : MigrationStartupHander { + private readonly ISqlSyntaxProvider _sqlSyntax; + + public EnsureDefaultListViewDataTypesCreated(ISqlSyntaxProvider sqlSyntax) + { + _sqlSyntax = sqlSyntax; + } + protected override void AfterMigration(MigrationRunner sender, MigrationEventArgs e) { var target720 = new Version(7, 2, 0); @@ -39,8 +46,8 @@ namespace Umbraco.Web.Strategies.Migrations try { //Turn on identity insert if db provider is not mysql - if (SqlSyntaxContext.SqlSyntaxProvider.SupportsIdentityInsert()) - e.MigrationContext.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} ON ", SqlSyntaxContext.SqlSyntaxProvider.GetQuotedTableName("umbracoNode")))); + if (_sqlSyntax.SupportsIdentityInsert()) + e.MigrationContext.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} ON ", _sqlSyntax.GetQuotedTableName("umbracoNode")))); if (e.MigrationContext.Database.Exists(Constants.System.DefaultContentListViewDataTypeId)) { @@ -55,16 +62,16 @@ namespace Umbraco.Web.Strategies.Migrations finally { //Turn off identity insert if db provider is not mysql - if (SqlSyntaxContext.SqlSyntaxProvider.SupportsIdentityInsert()) - e.MigrationContext.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} OFF;", SqlSyntaxContext.SqlSyntaxProvider.GetQuotedTableName("umbracoNode")))); + if (_sqlSyntax.SupportsIdentityInsert()) + e.MigrationContext.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} OFF;", _sqlSyntax.GetQuotedTableName("umbracoNode")))); } try { //Turn on identity insert if db provider is not mysql - if (SqlSyntaxContext.SqlSyntaxProvider.SupportsIdentityInsert()) - e.MigrationContext.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} ON ", SqlSyntaxContext.SqlSyntaxProvider.GetQuotedTableName("cmsDataType")))); + if (_sqlSyntax.SupportsIdentityInsert()) + e.MigrationContext.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} ON ", _sqlSyntax.GetQuotedTableName("cmsDataType")))); e.MigrationContext.Database.Insert("cmsDataType", "pk", false, new DataTypeDto { PrimaryKey = -26, DataTypeId = Constants.System.DefaultContentListViewDataTypeId, PropertyEditorAlias = Constants.PropertyEditors.ListViewAlias, DbType = "Nvarchar" }); e.MigrationContext.Database.Insert("cmsDataType", "pk", false, new DataTypeDto { PrimaryKey = -27, DataTypeId = Constants.System.DefaultMediaListViewDataTypeId, PropertyEditorAlias = Constants.PropertyEditors.ListViewAlias, DbType = "Nvarchar" }); @@ -73,8 +80,8 @@ namespace Umbraco.Web.Strategies.Migrations finally { //Turn off identity insert if db provider is not mysql - if (SqlSyntaxContext.SqlSyntaxProvider.SupportsIdentityInsert()) - e.MigrationContext.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} OFF;", SqlSyntaxContext.SqlSyntaxProvider.GetQuotedTableName("cmsDataType")))); + if (_sqlSyntax.SupportsIdentityInsert()) + e.MigrationContext.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} OFF;", _sqlSyntax.GetQuotedTableName("cmsDataType")))); } @@ -82,8 +89,8 @@ namespace Umbraco.Web.Strategies.Migrations try { //Turn on identity insert if db provider is not mysql - if (SqlSyntaxContext.SqlSyntaxProvider.SupportsIdentityInsert()) - e.MigrationContext.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} ON ", SqlSyntaxContext.SqlSyntaxProvider.GetQuotedTableName("cmsDataTypePreValues")))); + if (_sqlSyntax.SupportsIdentityInsert()) + e.MigrationContext.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} ON ", _sqlSyntax.GetQuotedTableName("cmsDataTypePreValues")))); //defaults for the member list e.MigrationContext.Database.Insert("cmsDataTypePreValues", "id", false, new DataTypePreValueDto { Id = -1, Alias = "pageSize", SortOrder = 1, DataTypeNodeId = Constants.System.DefaultMembersListViewDataTypeId, Value = "10" }); @@ -94,8 +101,8 @@ namespace Umbraco.Web.Strategies.Migrations finally { //Turn off identity insert if db provider is not mysql - if (SqlSyntaxContext.SqlSyntaxProvider.SupportsIdentityInsert()) - e.MigrationContext.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} OFF;", SqlSyntaxContext.SqlSyntaxProvider.GetQuotedTableName("cmsDataTypePreValues")))); + if (_sqlSyntax.SupportsIdentityInsert()) + e.MigrationContext.Database.Execute(new Sql(string.Format("SET IDENTITY_INSERT {0} OFF;", _sqlSyntax.GetQuotedTableName("cmsDataTypePreValues")))); } diff --git a/src/Umbraco.Web/Strategies/Migrations/PublishAfterUpgradeToVersionSixth.cs b/src/Umbraco.Web/Strategies/Migrations/PublishAfterUpgradeToVersionSixth.cs index 3e0df97e88..a6ec19078a 100644 --- a/src/Umbraco.Web/Strategies/Migrations/PublishAfterUpgradeToVersionSixth.cs +++ b/src/Umbraco.Web/Strategies/Migrations/PublishAfterUpgradeToVersionSixth.cs @@ -8,6 +8,7 @@ using Umbraco.Core.Persistence.Migrations; using Umbraco.Core.Persistence.UnitOfWork; using umbraco.interfaces; using Umbraco.Core; +using Umbraco.Core.Persistence.SqlSyntax; namespace Umbraco.Web.Strategies.Migrations { @@ -17,6 +18,13 @@ namespace Umbraco.Web.Strategies.Migrations /// public class PublishAfterUpgradeToVersionSixth : MigrationStartupHander { + private readonly ISqlSyntaxProvider _sqlSyntax; + + public PublishAfterUpgradeToVersionSixth(ISqlSyntaxProvider sqlSyntax) + { + _sqlSyntax = sqlSyntax; + } + protected override void AfterMigration(MigrationRunner sender, MigrationEventArgs e) { var target = new Version(6, 0, 0); @@ -24,15 +32,15 @@ namespace Umbraco.Web.Strategies.Migrations { var sql = new Sql(); sql.Select("*") - .From() - .InnerJoin() - .On(left => left.VersionId, right => right.VersionId) - .InnerJoin() - .On(left => left.NodeId, right => right.NodeId) - .InnerJoin() - .On(left => left.NodeId, right => right.NodeId) - .Where(x => x.NodeObjectType == new Guid(Constants.ObjectTypes.Document)) - .Where(x => x.Path.StartsWith("-1")); + .From(_sqlSyntax) + .InnerJoin(_sqlSyntax) + .On(_sqlSyntax, left => left.VersionId, right => right.VersionId) + .InnerJoin(_sqlSyntax) + .On(_sqlSyntax, left => left.NodeId, right => right.NodeId) + .InnerJoin(_sqlSyntax) + .On(_sqlSyntax, left => left.NodeId, right => right.NodeId) + .Where(_sqlSyntax, x => x.NodeObjectType == new Guid(Constants.ObjectTypes.Document)) + .Where(_sqlSyntax, x => x.Path.StartsWith("-1")); var dtos = e.MigrationContext.Database.Fetch(sql); var toUpdate = new List(); diff --git a/src/Umbraco.Web/Umbraco.Web.csproj b/src/Umbraco.Web/Umbraco.Web.csproj index 2a51454fe1..673b922ac7 100644 --- a/src/Umbraco.Web/Umbraco.Web.csproj +++ b/src/Umbraco.Web/Umbraco.Web.csproj @@ -750,9 +750,7 @@ ASPXCodeBehind - - ASPXCodeBehind - + ASPXCodeBehind @@ -967,9 +965,7 @@ ASPXCodeBehind - - ASPXCodeBehind - + ASPXCodeBehind @@ -1083,7 +1079,6 @@ publish.aspx - ASPXCodeBehind publish.aspx @@ -1139,7 +1134,6 @@ EditRelationType.aspx - ASPXCodeBehind EditRelationType.aspx @@ -1196,7 +1190,6 @@ republish.aspx - ASPXCodeBehind republish.aspx @@ -1361,7 +1354,6 @@ rollBack.aspx - ASPXCodeBehind rollBack.aspx @@ -1396,7 +1388,6 @@ EditMemberType.aspx - ASPXCodeBehind EditMemberType.aspx @@ -1458,9 +1449,6 @@ MacroContainerService.asmx Component - - TagsAutoCompleteHandler.ashx - TreeClientService.asmx Component @@ -1622,9 +1610,6 @@ trashcan.asmx Component - - UltimatePickerAutoCompleteHandler.ashx - ASPXCodeBehind @@ -1835,8 +1820,6 @@ XmlTree.xsd - - diff --git a/src/Umbraco.Web/WebServices/XmlDataIntegrityController.cs b/src/Umbraco.Web/WebServices/XmlDataIntegrityController.cs index 6c1859dbfa..4029fc1dcf 100644 --- a/src/Umbraco.Web/WebServices/XmlDataIntegrityController.cs +++ b/src/Umbraco.Web/WebServices/XmlDataIntegrityController.cs @@ -38,9 +38,9 @@ namespace Umbraco.Web.WebServices var subQuery = new Sql() .Select("DISTINCT cmsContentXml.nodeId") - .From() - .InnerJoin() - .On(left => left.NodeId, right => right.NodeId); + .From(DatabaseContext.SqlSyntax) + .InnerJoin(DatabaseContext.SqlSyntax) + .On(DatabaseContext.SqlSyntax, left => left.NodeId, right => right.NodeId); var totalXml = ApplicationContext.DatabaseContext.Database.ExecuteScalar("SELECT COUNT(*) FROM (" + subQuery.SQL + ") as tmp"); @@ -54,10 +54,10 @@ namespace Umbraco.Web.WebServices var mediaObjectType = Guid.Parse(Constants.ObjectTypes.Media); var subQuery = new Sql() .Select("Count(*)") - .From() - .InnerJoin() - .On(left => left.NodeId, right => right.NodeId) - .Where(dto => dto.NodeObjectType == mediaObjectType); + .From(DatabaseContext.SqlSyntax) + .InnerJoin(DatabaseContext.SqlSyntax) + .On(DatabaseContext.SqlSyntax, left => left.NodeId, right => right.NodeId) + .Where(DatabaseContext.SqlSyntax, dto => dto.NodeObjectType == mediaObjectType); var totalXml = ApplicationContext.DatabaseContext.Database.ExecuteScalar(subQuery); return totalXml == total; @@ -70,10 +70,10 @@ namespace Umbraco.Web.WebServices var memberObjectType = Guid.Parse(Constants.ObjectTypes.Member); var subQuery = new Sql() .Select("Count(*)") - .From() - .InnerJoin() - .On(left => left.NodeId, right => right.NodeId) - .Where(dto => dto.NodeObjectType == memberObjectType); + .From(DatabaseContext.SqlSyntax) + .InnerJoin(DatabaseContext.SqlSyntax) + .On(DatabaseContext.SqlSyntax, left => left.NodeId, right => right.NodeId) + .Where(DatabaseContext.SqlSyntax, dto => dto.NodeObjectType == memberObjectType); var totalXml = ApplicationContext.DatabaseContext.Database.ExecuteScalar(subQuery); return totalXml == total; diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/dialogs/umbracoField.aspx.cs b/src/Umbraco.Web/umbraco.presentation/umbraco/dialogs/umbracoField.aspx.cs index d875b856e9..583618011a 100644 --- a/src/Umbraco.Web/umbraco.presentation/umbraco/dialogs/umbracoField.aspx.cs +++ b/src/Umbraco.Web/umbraco.presentation/umbraco/dialogs/umbracoField.aspx.cs @@ -61,7 +61,7 @@ namespace umbraco.dialogs { //exclude built-in memberhip properties from showing up here var exclude = Constants.Conventions.Member.GetStandardPropertyTypeStubs() - .Select(x => SqlSyntaxContext.SqlSyntaxProvider.GetQuotedValue(x.Key)).ToArray(); + .Select(x => ApplicationContext.Current.DatabaseContext.SqlSyntax.GetQuotedValue(x.Key)).ToArray(); fieldSql = string.Format( "select distinct alias from cmsPropertyType where alias not in ({0}) order by alias", diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/webservices/TagsAutoCompleteHandler.ashx b/src/Umbraco.Web/umbraco.presentation/umbraco/webservices/TagsAutoCompleteHandler.ashx deleted file mode 100644 index 240d6ba908..0000000000 --- a/src/Umbraco.Web/umbraco.presentation/umbraco/webservices/TagsAutoCompleteHandler.ashx +++ /dev/null @@ -1 +0,0 @@ -<%@ WebHandler Language="C#" CodeBehind="TagsAutoCompleteHandler.ashx.cs" Class="umbraco.presentation.umbraco.webservices.TagsAutoCompleteHandler" %> diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/webservices/TagsAutoCompleteHandler.ashx.cs b/src/Umbraco.Web/umbraco.presentation/umbraco/webservices/TagsAutoCompleteHandler.ashx.cs deleted file mode 100644 index 3ba7a1a6b8..0000000000 --- a/src/Umbraco.Web/umbraco.presentation/umbraco/webservices/TagsAutoCompleteHandler.ashx.cs +++ /dev/null @@ -1,102 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Web; -using System.Web.Script.Serialization; -using System.Web.Services; -using Umbraco.Core.Logging; -using Umbraco.Core.Persistence.SqlSyntax; -using umbraco.DataLayer; -using umbraco.BusinessLogic; -using umbraco.presentation.webservices; - -namespace umbraco.presentation.umbraco.webservices -{ - - [WebService(Namespace = "http://tempuri.org/")] - [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] - public class TagsAutoCompleteHandler : IHttpHandler - { - - public void ProcessRequest(HttpContext context) - { - legacyAjaxCalls.Authorize(); - - string format = context.Request.QueryString["format"]; - bool returnJson = format == "json"; - - context.Response.ContentType = returnJson ? "application/json" : "text/plain"; - - int count = 2; - string prefixText = context.Request.QueryString["q"]; - - if (string.IsNullOrEmpty(prefixText)) - prefixText = context.Request.QueryString["term"]; - - string group = context.Request.QueryString["group"]; - string id = context.Request.QueryString["id"]; - - string sql; - - IRecordsReader rr; - - try - { - //if all is correct - if (!String.IsNullOrEmpty(group) && !String.IsNullOrEmpty(id)) - { - sql = @"SELECT TOP (20) tag FROM cmsTags WHERE tag LIKE @prefix AND cmsTags.id not in - (SELECT tagID FROM cmsTagRelationShip WHERE NodeId = @nodeId) AND cmstags." + SqlSyntaxContext.SqlSyntaxProvider.GetQuotedColumnName("group") + " = @group;"; - - rr = SqlHelper.ExecuteReader(sql, - SqlHelper.CreateParameter("@count", count), - SqlHelper.CreateParameter("@prefix", prefixText + "%"), - SqlHelper.CreateParameter("@nodeId", id), - SqlHelper.CreateParameter("@group", group) - ); - - - - } - else - { - //fallback... - sql = "SELECT TOP (20) tag FROM cmsTags WHERE tag LIKE @prefix"; - - rr = SqlHelper.ExecuteReader(sql, - SqlHelper.CreateParameter("@count", count), - SqlHelper.CreateParameter("@prefix", prefixText + "%") - ); - } - - var tagList = new List(); - while (rr.Read()) - { - tagList.Add(rr.GetString("tag")); - } - - context.Response.Write(returnJson - ? new JavaScriptSerializer().Serialize(tagList) - : string.Join(Environment.NewLine, tagList)); - } - catch (Exception ex) - { - LogHelper.Error("An error occurred", ex); - } - - } - - public static ISqlHelper SqlHelper - { - get { return Application.SqlHelper; } - } - - public bool IsReusable - { - get - { - return false; - } - } - } -} diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/webservices/UltimatePickerAutoCompleteHandler.ashx b/src/Umbraco.Web/umbraco.presentation/umbraco/webservices/UltimatePickerAutoCompleteHandler.ashx deleted file mode 100644 index 9b5b98a9b8..0000000000 --- a/src/Umbraco.Web/umbraco.presentation/umbraco/webservices/UltimatePickerAutoCompleteHandler.ashx +++ /dev/null @@ -1 +0,0 @@ -<%@ WebHandler Language="C#" CodeBehind="UltimatePickerAutoCompleteHandler.ashx.cs" Class="umbraco.presentation.umbraco.webservices.UltimatePickerAutoCompleteHandler" %> diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/webservices/UltimatePickerAutoCompleteHandler.ashx.cs b/src/Umbraco.Web/umbraco.presentation/umbraco/webservices/UltimatePickerAutoCompleteHandler.ashx.cs deleted file mode 100644 index 8d2acf4f8f..0000000000 --- a/src/Umbraco.Web/umbraco.presentation/umbraco/webservices/UltimatePickerAutoCompleteHandler.ashx.cs +++ /dev/null @@ -1,163 +0,0 @@ -using System; -using System.Linq; -using System.Web; -using System.Web.Services; -using Umbraco.Web.WebServices; -using umbraco.BasePages; -using umbraco.BusinessLogic; -using umbraco.cms.businesslogic.web; -using umbraco.cms.businesslogic; - -namespace umbraco.presentation.umbraco.webservices -{ - /// - /// Summary description for $codebehindclassname$ - /// - [WebService(Namespace = "http://tempuri.org/")] - [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] - public class UltimatePickerAutoCompleteHandler : UmbracoAuthorizedHttpHandler - { - - private int _nodeCount; - private int _counter; - private string[] _output; - private string _prefix; - - public override void ProcessRequest(HttpContext context) - { - if (BasePage.ValidateUserContextID(BasePage.umbracoUserContextID) == false) - throw new Exception("Client authorization failed. User is not logged in"); - - //user must be allowed to see content or media - if (AuthorizeRequest(DefaultApps.content.ToString()) == false && AuthorizeRequest(DefaultApps.media.ToString()) == false) - return; - - context.Response.ContentType = "text/plain"; - - _prefix = context.Request.QueryString["q"]; - - var parentNodeId = Convert.ToInt32(context.Request.QueryString["id"]); - var showGrandChildren = Convert.ToBoolean(context.Request.QueryString["showchildren"]); - - var documentAliasFilter = context.Request.QueryString["filter"]; - var documentAliasFilters = documentAliasFilter.Split(",".ToCharArray()); - - var parent = new CMSNode(parentNodeId); - - _nodeCount = 0; - - //store children array here because iterating over an Array property object is very inneficient. - var children = parent.Children; - foreach (CMSNode child in children) - { - NodeChildrenCount(child, showGrandChildren, documentAliasFilters); - } - - _output = new string[_nodeCount]; - _counter = 0; - int level = 1; - - foreach (CMSNode child in children) - { - AddNode(child, level, showGrandChildren, documentAliasFilters); - } - - foreach (var item in _output) - { - context.Response.Write(item + Environment.NewLine); - } - } - - private bool ValidNode(string nodeText) - { - return nodeText.Length >= _prefix.Length && nodeText.Substring(0, _prefix.Length).ToLower() == _prefix.ToLower(); - } - - private void NodeChildrenCount(CMSNode node, bool countChildren, string[] documentAliasFilters) - { - if (documentAliasFilters.Length > 0) - { - foreach (var filter in documentAliasFilters) - { - var trimmedFilter = filter.TrimStart(" ".ToCharArray()); - trimmedFilter = trimmedFilter.TrimEnd(" ".ToCharArray()); - - if ((new Document(node.Id).ContentType.Alias == trimmedFilter || trimmedFilter == string.Empty) && ValidNode(node.Text)) - { - _nodeCount += 1; - } - } - } - else - { - if (ValidNode(node.Text)) - { - _nodeCount += 1; - } - } - - if (countChildren) - { - //store children array here because iterating over an Array property object is very inneficient. - var children = node.Children; - foreach (CMSNode child in children) - { - NodeChildrenCount(child, countChildren, documentAliasFilters); - } - } - - } - - private void AddNode(CMSNode node, int level, bool showGrandChildren, string[] documentAliasFilters) - { - var preText = string.Empty; - - for (var i = 1; i < level; i++) - { - preText += "- "; - } - - if (documentAliasFilters.Length > 0) - { - foreach (var filter in documentAliasFilters) - { - var trimmedFilter = filter.TrimStart(" ".ToCharArray()); - trimmedFilter = trimmedFilter.TrimEnd(" ".ToCharArray()); - - if ((new Document(node.Id).ContentType.Alias == trimmedFilter || trimmedFilter == string.Empty) && ValidNode(node.Text)) - { - _output[_counter] = preText + node.Text + " [" + node.Id + "]"; - _counter++; - } - - } - } - else - { - if (ValidNode(node.Text)) - { - _output[_counter] = preText + node.Text + " [" + node.Id + "]"; - _counter++; - } - } - - if (showGrandChildren) - { - if (node.HasChildren) - { - //store children array here because iterating over an Array property object is very inneficient. - var children = node.Children; - foreach (CMSNode child in children) - { - AddNode(child, level + 1, showGrandChildren, documentAliasFilters); - } - } - } - } - - public override bool IsReusable - { - get { return false; } - } - } -} diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/webservices/ultimatePickerAutoSuggest.asmx b/src/Umbraco.Web/umbraco.presentation/umbraco/webservices/ultimatePickerAutoSuggest.asmx deleted file mode 100644 index 0d8a23409d..0000000000 --- a/src/Umbraco.Web/umbraco.presentation/umbraco/webservices/ultimatePickerAutoSuggest.asmx +++ /dev/null @@ -1 +0,0 @@ -<%@ WebService Language="C#" CodeBehind="ultimatePickerAutoSuggest.asmx.cs" Class="umbraco.presentation.umbraco.webservices.ultimatePickerAutoSuggest" %> diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/webservices/ultimatePickerAutoSuggest.asmx.cs b/src/Umbraco.Web/umbraco.presentation/umbraco/webservices/ultimatePickerAutoSuggest.asmx.cs deleted file mode 100644 index 297e790e25..0000000000 --- a/src/Umbraco.Web/umbraco.presentation/umbraco/webservices/ultimatePickerAutoSuggest.asmx.cs +++ /dev/null @@ -1,216 +0,0 @@ -using System; -using System.Data; -using System.Web; -using System.Collections; -using System.Web.Services; -using System.Web.Services.Protocols; -using System.ComponentModel; -using System.Web.Script.Services; -using umbraco; -using umbraco.BasePages; -using umbraco.cms.businesslogic; -using umbraco.cms.businesslogic.web; - - - -namespace umbraco.presentation.umbraco.webservices -{ - /// - /// Summary description for ultimatePickerAutoSuggest - /// - - [WebService(Namespace = "http://umbraco.org/webservices")] - [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] - [ToolboxItem(false)] - [ScriptService] - public class ultimatePickerAutoSuggest : System.Web.Services.WebService - { - private string temp; - private int nodeCount; - private int Counter; - private string[] output; - private string prefix; - - [WebMethod] - public string[] getNodes(string prefixText, int count, string contextKey) - { - if (BasePage.ValidateUserContextID(BasePage.umbracoUserContextID)) - { - prefix = prefixText; - string[] config = contextKey.Split("|".ToCharArray()); - int parentNodeId = Convert.ToInt32(config[0]); - bool showGrandChildren = Convert.ToBoolean(config[1]); - - string documentAliasFilter = config[2]; - string[] documentAliasFilters = documentAliasFilter.Split(",".ToCharArray()); - - - CMSNode parent = new CMSNode(parentNodeId); - if (!showGrandChildren) - { - nodeCount = 0; - - //store children array here because iterating over an Array property object is very inneficient. - var children = parent.Children; - foreach (CMSNode child in children) - { - - - nodeChildrenCount(child, false,documentAliasFilters); - - } - - output = new string[nodeCount]; - - int i = 0; - Counter = 0; - int level = 1; - - //why is there a 2nd iteration of the same thing here? - foreach (CMSNode child in children) - { - - addNode(child, level, showGrandChildren,documentAliasFilters); - } - - return output; - } - else - { - nodeCount = 0; - - //store children array here because iterating over an Array property object is very inneficient. - var children = parent.Children; - foreach (CMSNode child in children) - { - nodeChildrenCount(child, true,documentAliasFilters); - } - - output = new string[nodeCount]; - Counter = 0; - int level = 1; - - foreach (CMSNode child in children) - { - addNode(child, level, showGrandChildren,documentAliasFilters); - } - - return output; - - } - - } - return new string[1]; - - - } - - private bool validNode(string nodeText) - { - - - if (nodeText.Length >= prefix.Length) - { - - - if (nodeText.Substring(0, prefix.Length).ToLower() == prefix.ToLower()) - { - return true; - } - } - - return false; - } - - private void nodeChildrenCount(CMSNode node, bool countChildren, string[] documentAliasFilters) - { - if (documentAliasFilters.Length > 0) - { - - foreach (string filter in documentAliasFilters) - { - string trimmedFilter = filter.TrimStart(" ".ToCharArray()); - trimmedFilter = trimmedFilter.TrimEnd(" ".ToCharArray()); - - if (new Document(node.Id).ContentType.Alias == trimmedFilter || trimmedFilter == string.Empty) - { - if (validNode(node.Text)) - { - nodeCount += 1; - } - - } - } - } - else - { - if (validNode(node.Text)) - { - nodeCount += 1; - } - } - - if (countChildren) - { - //store children array here because iterating over an Array property object is very inneficient. - var children = node.Children; - foreach (CMSNode child in children) - { - nodeChildrenCount(child, countChildren,documentAliasFilters); - } - } - - } - - private void addNode(CMSNode node, int level, bool showGrandChildren, string[] documentAliasFilters) - { - - string preText = string.Empty; - - for (int i = 1; i < level; i++) - { - preText += "- "; - } - - if (documentAliasFilters.Length > 0) - { - foreach (string filter in documentAliasFilters) - { - string trimmedFilter = filter.TrimStart(" ".ToCharArray()); - trimmedFilter = trimmedFilter.TrimEnd(" ".ToCharArray()); - - if (new Document(node.Id).ContentType.Alias == trimmedFilter || trimmedFilter == string.Empty) - { - if (validNode(node.Text)) - { - output[Counter] = preText + node.Text + "|" + node.Id; - Counter++; - } - } - - } - } - else - { - if (validNode(node.Text)) - { - output[Counter] = preText + node.Text + "|" + node.Id; - Counter++; - } - } - - if (showGrandChildren) - { - if (node.HasChildren) - { - //store children array here because iterating over an Array property object is very inneficient. - var children = node.Children; - foreach (CMSNode child in children) - { - addNode(child, level + 1, showGrandChildren,documentAliasFilters); - } - } - } - } - } -} diff --git a/src/umbraco.cms/businesslogic/CMSNode.cs b/src/umbraco.cms/businesslogic/CMSNode.cs index 8bc14bec82..4a2ae44de1 100644 --- a/src/umbraco.cms/businesslogic/CMSNode.cs +++ b/src/umbraco.cms/businesslogic/CMSNode.cs @@ -18,10 +18,8 @@ using Umbraco.Core.IO; using System.Collections; using umbraco.cms.businesslogic.task; using umbraco.cms.businesslogic.workflow; -using umbraco.cms.businesslogic.Tags; using File = System.IO.File; using Media = umbraco.cms.businesslogic.media.Media; -using Tag = umbraco.cms.businesslogic.Tags.Tag; using Notification = umbraco.cms.businesslogic.workflow.Notification; using Task = umbraco.cms.businesslogic.task.Task; @@ -568,8 +566,8 @@ order by level,sortOrder"; //remove permissions Permission.DeletePermissions(this); - //removes tag associations (i know the key is set to cascade but do it anyways) - Tag.RemoveTagsFromNode(this.Id); + ////removes tag associations (i know the key is set to cascade but do it anyways) + //Tag.RemoveTagsFromNode(this.Id); SqlHelper.ExecuteNonQuery("DELETE FROM umbracoNode WHERE uniqueID= @uniqueId", SqlHelper.CreateParameter("@uniqueId", _uniqueID)); FireAfterDelete(e); diff --git a/src/umbraco.cms/businesslogic/Tags/Tag.cs b/src/umbraco.cms/businesslogic/Tags/Tag.cs deleted file mode 100644 index 5917c0629c..0000000000 --- a/src/umbraco.cms/businesslogic/Tags/Tag.cs +++ /dev/null @@ -1,423 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using Umbraco.Core; -using Umbraco.Core.Logging; -using Umbraco.Core.Models.Rdbms; -using Umbraco.Core.Persistence.SqlSyntax; -using umbraco.DataLayer; -using umbraco.BusinessLogic; -using umbraco.interfaces; -using umbraco.cms.businesslogic.media; -using umbraco.cms.businesslogic.web; - -namespace umbraco.cms.businesslogic.Tags -{ - [Obsolete("Use the TagService to query tags or the UmbracoHelper on the front-end and use the SetTags, RemoveTags extension methods on IContentBase to manipulate tags")] - public class Tag : ITag - { - - private const string SqlGetTagPropertyIdsForNode = @"SELECT cmsPropertyType.id FROM cmsPropertyType - INNER JOIN cmsContent ON cmsContent.contentType = cmsPropertyType.contentTypeId - INNER JOIN cmsDataType ON cmsDataType.nodeId = cmsPropertyType.dataTypeId - WHERE cmsContent.nodeId = {0} - AND cmsDataType.propertyEditorAlias = '" + Constants.PropertyEditors.TagsAlias + "'"; - - #region Constructors - public Tag() { } - public Tag(int id, string tag, string group, int nodeCount) - { - Id = id; - TagCaption = tag; - Group = group; - NodeCount = nodeCount; - } - #endregion - - #region Public Properties - public int NodeCount { get; private set; } - - #region ITag Members - - public int Id - { - get; - set; - } - - public string TagCaption - { - get; - set; - } - - public string Group - { - get; - set; - } - - #endregion - #endregion - - - public static void AssociateTagToNode(int nodeId, int tagId) - { - //need to check if there's a tag property type to associate with the node, this is a new change with the db change - var tagProperties = ApplicationContext.Current.DatabaseContext.Database.Fetch( - string.Format(SqlGetTagPropertyIdsForNode, nodeId)).ToArray(); - if (tagProperties.Any() == false) - { - throw new InvalidOperationException("Cannot associate a tag to a node that doesn't have a Property Type assigned to a Tag Property Editor"); - } - if (tagProperties.Length > 1) - { - LogHelper.Warn("Because the legacy Tag data layer is being used, the tags being associated with the node will only be associated with the first found Property Type containing a Tag Property Editor"); - } - - if (ApplicationContext.Current.DatabaseContext.Database.ExecuteScalar( - "SELECT COUNT(*) FROM cmsTagRelationship WHERE nodeId=@nodeId AND tagId=@tagId AND propertyTypeId=@propertyTypeId", - new {tagId = tagId, nodeId = nodeId, propertyTypeId = tagProperties[0]}) == 0) - { - ApplicationContext.Current.DatabaseContext.Database.Insert(new TagRelationshipDto - { - NodeId = nodeId, - TagId = tagId, - PropertyTypeId = tagProperties[0] - }); - } - - } - - public static void AddTagsToNode(int nodeId, string tags, string group) - { - //need to check if there's a tag property type to associate with the node, this is a new change with the db change - var tagProperties = ApplicationContext.Current.DatabaseContext.Database.Fetch( - string.Format(SqlGetTagPropertyIdsForNode, nodeId)).ToArray(); - if (tagProperties.Any() == false) - { - throw new InvalidOperationException("Cannot associate a tag to a node that doesn't have a Property Type assigned to a Tag Property Editor"); - } - if (tagProperties.Length > 1) - { - LogHelper.Warn("Because the legacy Tag data layer is being used, the tags being associated with the node will only be associated with the first found Property Type containing a Tag Property Editor"); - } - - string[] allTags = tags.Split(",".ToCharArray()); - for (int i = 0; i < allTags.Length; i++) - { - //if not found we'll get zero and handle that onsave instead... - int id = GetTagId(allTags[i], group); - if (id == 0) - id = AddTag(allTags[i], group); - - //Perform a subselect insert into cmsTagRelationship using a left outer join to perform the if not exists check - var sql = "insert into cmsTagRelationship (nodeId,tagId,propertyTypeId) select " + string.Format("{0}", nodeId) + ", " + string.Format("{0}", id) + ", " + string.Format("{0}", tagProperties[0]) + " from cmsTags "; - //sorry, gotta do this, @params not supported in join clause - sql += "left outer join cmsTagRelationship on (cmsTags.id = cmsTagRelationship.TagId and cmsTagRelationship.nodeId = " + string.Format("{0}", nodeId) + ") "; - sql += "where cmsTagRelationship.tagId is null and cmsTags.id = " + string.Format("{0}", id); - - SqlHelper.ExecuteNonQuery(sql); - - - } - - } - - public static void MergeTagsToNode(int nodeId, string tags, string group) - { - //need to check if there's a tag property type to associate with the node, this is a new change with the db change - var tagProperties = ApplicationContext.Current.DatabaseContext.Database.Fetch( - string.Format(SqlGetTagPropertyIdsForNode, nodeId)).ToArray(); - if (tagProperties.Any() == false) - { - throw new InvalidOperationException("Cannot associate a tag to a node that doesn't have a Property Type assigned to a Tag Property Editor"); - } - if (tagProperties.Length > 1) - { - LogHelper.Warn("Because the legacy Tag data layer is being used, the tags being associated with the node will only be associated with the first found Property Type containing a Tag Property Editor"); - } - - - //GE 2011-11-01 - //When you have a new CSV list of tags (e.g. from control) and want to push those to the DB, the only way to do this - //is delete all the existing tags and add the new ones. - //On a lot of tags, or a very full cmsTagRelationship table, this will perform too slowly - - string sql = null; - string TagSet = GetSqlSet(tags, group); - - //deletes any tags not found in csv - sql = "delete from cmsTagRelationship where nodeId = " + string.Format("{0}", nodeId) + " "; - sql += " and tagId in ( "; - sql += " select cmsTagRelationship.tagId "; - sql += " from "; - sql += " cmsTagRelationship "; - sql += " left outer join "; - sql += " ("; - sql += " select NewTags.Id from "; - sql += " " + TagSet + " "; - sql += " inner join cmsTags as NewTags on (TagSet.Tag = NewTags.Tag and TagSet." + SqlSyntaxContext.SqlSyntaxProvider.GetQuotedColumnName("Group") + " = TagSet." + SqlSyntaxContext.SqlSyntaxProvider.GetQuotedColumnName("Group") + ") "; - sql += " ) as NewTagsSet "; - sql += " on (cmsTagRelationship.TagId = NewTagsSet.Id and cmsTagRelationship.NodeId = " + string.Format("{0}", nodeId) + ") "; - sql += " inner join cmsTags as OldTags on (cmsTagRelationship.tagId = OldTags.Id) "; - sql += " where NewTagsSet.Id is null "; - sql += " )"; - SqlHelper.ExecuteNonQuery(sql); - - //adds any tags found in csv that aren't in cmsTag for that group - sql = "insert into cmsTags (Tag," + SqlSyntaxContext.SqlSyntaxProvider.GetQuotedColumnName("Group") + @") "; - sql += " select TagSet." + SqlSyntaxContext.SqlSyntaxProvider.GetQuotedColumnName("Tag") + @", TagSet." + SqlSyntaxContext.SqlSyntaxProvider.GetQuotedColumnName("Group") + @" from "; - sql += " " + TagSet + " "; - sql += " left outer join cmsTags on (TagSet.Tag = cmsTags.Tag and TagSet." + SqlSyntaxContext.SqlSyntaxProvider.GetQuotedColumnName("Group") + " = cmsTags." + SqlSyntaxContext.SqlSyntaxProvider.GetQuotedColumnName("Group") + ")"; - sql += " where cmsTags.Id is null "; - SqlHelper.ExecuteNonQuery(sql); - - //adds any tags found in csv that aren't in tagrelationships - sql = "insert into cmsTagRelationship (TagId,NodeId,propertyTypeId) "; - sql += "select NewTagsSet.Id, " + string.Format("{0}", nodeId) + ", " + string.Format("{0}", tagProperties[0]) + " from "; - sql += "( "; - sql += "select NewTags.Id from "; - sql += " " + TagSet + " "; - sql += "inner join cmsTags as NewTags on (TagSet.Tag = NewTags.Tag and TagSet." + SqlSyntaxContext.SqlSyntaxProvider.GetQuotedColumnName("Group") + " = TagSet." + SqlSyntaxContext.SqlSyntaxProvider.GetQuotedColumnName("Group") + ") "; - sql += ") as NewTagsSet "; - sql += "left outer join cmsTagRelationship "; - sql += "on (cmsTagRelationship.TagId = NewTagsSet.Id and cmsTagRelationship.NodeId = " + string.Format("{0}", nodeId) + ") "; - sql += "where cmsTagRelationship.tagId is null "; - SqlHelper.ExecuteNonQuery(sql); - - } - - /// - /// Removes a tag from the database, this will also remove all relations - /// - /// - public static void RemoveTag(int tagId) - { - SqlHelper.ExecuteNonQuery("DELETE FROM cmsTagRelationship WHERE (tagid = @tagId)", - SqlHelper.CreateParameter("@tagId", tagId)); - SqlHelper.ExecuteNonQuery("DELETE FROM cmsTags WHERE (id = @tagId)", - SqlHelper.CreateParameter("@tagId", tagId)); - } - - /// - /// Delete all tag associations for the node specified - /// - /// - public static void RemoveTagsFromNode(int nodeId) - { - SqlHelper.ExecuteNonQuery("DELETE FROM cmsTagRelationship WHERE nodeId = @nodeId", - SqlHelper.CreateParameter("@nodeId", nodeId)); - } - - /// - /// Delete all tag associations for the node & group specified - /// - /// - /// - public static void RemoveTagsFromNode(int nodeId, string group) - { - SqlHelper.ExecuteNonQuery("DELETE FROM cmsTagRelationship WHERE (nodeId = @nodeId) AND EXISTS (SELECT id FROM cmsTags WHERE (cmsTagRelationship.tagId = id) AND (" + SqlSyntaxContext.SqlSyntaxProvider.GetQuotedColumnName("group") + " = @group));", - SqlHelper.CreateParameter("@nodeId", nodeId), - SqlHelper.CreateParameter("@group", group)); - } - - /// - /// Remove a single tag association - /// - /// - /// - /// - public static void RemoveTagFromNode(int nodeId, string tag, string group) - { - int tagId = GetTagId(tag, group); - if (tagId != 0) - { - SqlHelper.ExecuteNonQuery("DELETE FROM cmsTagRelationship WHERE (nodeId = @nodeId and tagId = @tagId)", - SqlHelper.CreateParameter("@nodeId", nodeId), - SqlHelper.CreateParameter("@tagId", tagId)); - } - } - - public static int AddTag(string tag, string group) - { - SqlHelper.ExecuteNonQuery("INSERT INTO cmsTags(tag," + SqlSyntaxContext.SqlSyntaxProvider.GetQuotedColumnName("group") + ") VALUES (@tag,@group)", - SqlHelper.CreateParameter("@tag", tag.Trim()), - SqlHelper.CreateParameter("@group", group)); - return GetTagId(tag, group); - } - - public static int GetTagId(string tag, string group) - { - int retval = 0; - string sql = "SELECT id FROM cmsTags where tag=@tag AND " + SqlSyntaxContext.SqlSyntaxProvider.GetQuotedColumnName("group") + "=@group;"; - object result = SqlHelper.ExecuteScalar(sql, - SqlHelper.CreateParameter("@tag", tag), - SqlHelper.CreateParameter("@group", group)); - - if (result != null) - retval = int.Parse(result.ToString()); - - return retval; - } - - public static IEnumerable GetTags(int nodeId, string group) - { - var sql = @"SELECT cmsTags.id, cmsTags.tag, cmsTags." + SqlSyntaxContext.SqlSyntaxProvider.GetQuotedColumnName("group") + @", count(cmsTagRelationShip.tagid) AS nodeCount FROM cmsTags - INNER JOIN cmsTagRelationship ON cmsTagRelationShip.tagId = cmsTags.id - WHERE cmsTags." + SqlSyntaxContext.SqlSyntaxProvider.GetQuotedColumnName("group") + @" = @group AND cmsTagRelationship.nodeid = @nodeid - GROUP BY cmsTags.id, cmsTags.tag, cmsTags." + SqlSyntaxContext.SqlSyntaxProvider.GetQuotedColumnName("group"); - - return ConvertSqlToTags(sql, - SqlHelper.CreateParameter("@group", group), - SqlHelper.CreateParameter("@nodeid", nodeId)); - - } - - /// - /// Gets the tags from node as ITag objects. - /// - /// The node id. - /// - public static IEnumerable GetTags(int nodeId) - { - - string sql = @"SELECT cmsTags.id, cmsTags.tag, cmsTags." + SqlSyntaxContext.SqlSyntaxProvider.GetQuotedColumnName("group") + @", count(cmsTagRelationShip.tagid) AS nodeCount FROM cmsTags - INNER JOIN cmsTagRelationShip ON cmsTagRelationShip.tagid = cmsTags.id - WHERE cmsTagRelationShip.nodeid = @nodeId - GROUP BY cmsTags.id, cmsTags.tag, cmsTags." + SqlSyntaxContext.SqlSyntaxProvider.GetQuotedColumnName("group"); - - return ConvertSqlToTags(sql, SqlHelper.CreateParameter("@nodeId", nodeId)); - - } - - /// - /// Gets the tags from group as ITag objects. - /// - /// The group. - /// - public static IEnumerable GetTags(string group) - { - - string sql = @"SELECT cmsTags.id, cmsTags.tag, cmsTags." + SqlSyntaxContext.SqlSyntaxProvider.GetQuotedColumnName("group") + @", count(cmsTagRelationShip.tagid) AS nodeCount FROM cmsTags - INNER JOIN cmsTagRelationShip ON cmsTagRelationShip.tagid = cmsTags.id - WHERE cmsTags." + SqlSyntaxContext.SqlSyntaxProvider.GetQuotedColumnName("group") + @" = @group - GROUP BY cmsTags.id, cmsTags.tag, cmsTags." + SqlSyntaxContext.SqlSyntaxProvider.GetQuotedColumnName("group"); - - return ConvertSqlToTags(sql, SqlHelper.CreateParameter("@group", group)); - - } - - /// - /// Gets all the tags as ITag objects - /// - /// The node id. - /// - public static IEnumerable GetTags() - { - - string sql = @"SELECT cmsTags.id, cmsTags.tag, cmsTags." + SqlSyntaxContext.SqlSyntaxProvider.GetQuotedColumnName("group") + @", count(cmsTagRelationShip.tagid) AS nodeCount FROM cmsTags - LEFT JOIN cmsTagRelationShip ON cmsTagRelationShip.tagid = cmsTags.id - GROUP BY cmsTags.id, cmsTags.tag, cmsTags." + SqlSyntaxContext.SqlSyntaxProvider.GetQuotedColumnName("group"); - - return ConvertSqlToTags(sql); - - } - - public static IEnumerable GetDocumentsWithTags(string tags) - { - - var docs = new List(); - string sql = @"SELECT DISTINCT cmsTagRelationShip.nodeid from cmsTagRelationShip - INNER JOIN cmsTags ON cmsTagRelationShip.tagid = cmsTags.id - INNER JOIN umbracoNode ON cmsTagRelationShip.nodeId = umbracoNode.id - WHERE (cmsTags.tag IN ({0})) AND nodeObjectType=@nodeType"; - - using (IRecordsReader rr = SqlHelper.ExecuteReader(string.Format(sql, GetSqlStringArray(tags)), - SqlHelper.CreateParameter("@nodeType", Document._objectType))) - { - while (rr.Read()) - { - Document cnode = new Document(rr.GetInt("nodeid")); - - if (cnode != null && cnode.Published) - docs.Add(cnode); - } - } - - return docs; - } - - public static IEnumerable GetNodesWithTags(string tags) - { - var nodes = new List(); - - string sql = @"SELECT DISTINCT cmsTagRelationShip.nodeid from cmsTagRelationShip - INNER JOIN cmsTags ON cmsTagRelationShip.tagid = cmsTags.id WHERE (cmsTags.tag IN (" + GetSqlStringArray(tags) + "))"; - using (IRecordsReader rr = SqlHelper.ExecuteReader(sql)) - { - while (rr.Read()) - { - nodes.Add(new CMSNode(rr.GetInt("nodeid"))); - } - } - return nodes; - } - private static string GetSqlSet(string commaSeparatedArray, string group) - { - // create array - var array = commaSeparatedArray.Trim().Split(',').ToList().ConvertAll(tag => string.Format("select '{0}' as Tag, '{1}' as " + SqlSyntaxContext.SqlSyntaxProvider.GetQuotedColumnName("Group"), tag.Replace("'", ""), group)).ToArray(); - return "(" + string.Join(" union ", array).Replace(" ", " ") + ") as TagSet"; - } - private static string GetSqlStringArray(string commaSeparatedArray) - { - // create array - string[] array = commaSeparatedArray.Trim().Split(','); - - // build SQL array - StringBuilder sqlArray = new StringBuilder(); - foreach (string item in array) - { - string trimmedItem = item.Trim(); - if (trimmedItem.Length > 0) - { - sqlArray.Append("'").Append(SqlHelper.EscapeString(trimmedItem)).Append("',"); - } - } - - // remove last comma - if (sqlArray.Length > 0) - sqlArray.Remove(sqlArray.Length - 1, 1); - return sqlArray.ToString(); - } - - private static IEnumerable ConvertSqlToTags(string sql, params IParameter[] param) - { - List tags = new List(); - using (IRecordsReader rr = SqlHelper.ExecuteReader(sql, param)) - { - while (rr.Read()) - { - tags.Add(new Tag( - rr.GetInt("id"), - rr.GetString("tag"), - rr.GetString("group"), - rr.GetInt("nodeCount"))); - } - } - - - return tags; - } - - private static ISqlHelper SqlHelper - { - get - { - return Application.SqlHelper; - } - } - - } -} diff --git a/src/umbraco.cms/umbraco.cms.csproj b/src/umbraco.cms/umbraco.cms.csproj index f6093d00f7..ddf8e75c21 100644 --- a/src/umbraco.cms/umbraco.cms.csproj +++ b/src/umbraco.cms/umbraco.cms.csproj @@ -243,7 +243,6 @@ -