Files
Umbraco-CMS/src/Umbraco.Core/Persistence/SqlSyntax/ISqlSyntaxProvider.cs

126 lines
5.3 KiB
C#
Raw Normal View History

2018-06-29 19:52:40 +02:00
using System;
using System.Collections.Generic;
2018-07-17 17:20:40 +02:00
using System.Text.RegularExpressions;
2018-06-29 19:52:40 +02:00
using NPoco;
using Umbraco.Core.Persistence.DatabaseAnnotations;
using Umbraco.Core.Persistence.DatabaseModelDefinitions;
using Umbraco.Core.Persistence.Querying;
namespace Umbraco.Core.Persistence.SqlSyntax
{
/// <summary>
/// Defines an SqlSyntaxProvider
/// </summary>
public interface ISqlSyntaxProvider
{
string EscapeString(string val);
string GetWildcardPlaceholder();
string GetStringColumnEqualComparison(string column, int paramIndex, TextColumnType columnType);
string GetStringColumnWildcardComparison(string column, int paramIndex, TextColumnType columnType);
string GetConcat(params string[] args);
string GetQuotedTableName(string tableName);
string GetQuotedColumnName(string columnName);
string GetQuotedName(string name);
bool DoesTableExist(IDatabase db, string tableName);
string GetIndexType(IndexTypes indexTypes);
string GetSpecialDbType(SpecialDbTypes dbTypes);
string CreateTable { get; }
string DropTable { get; }
string AddColumn { get; }
string DropColumn { get; }
string AlterColumn { get; }
string RenameColumn { get; }
string RenameTable { get; }
string CreateSchema { get; }
string AlterSchema { get; }
string DropSchema { get; }
string CreateIndex { get; }
string DropIndex { get; }
string InsertData { get; }
string UpdateData { get; }
string DeleteData { get; }
string TruncateTable { get; }
string CreateConstraint { get; }
string DeleteConstraint { get; }
2019-05-28 17:49:50 +02:00
2018-06-29 19:52:40 +02:00
string DeleteDefaultConstraint { get; }
string FormatDateTime(DateTime date, bool includeTime = true);
string Format(TableDefinition table);
string Format(IEnumerable<ColumnDefinition> columns);
List<string> Format(IEnumerable<IndexDefinition> indexes);
List<string> Format(IEnumerable<ForeignKeyDefinition> foreignKeys);
string FormatPrimaryKey(TableDefinition table);
string GetQuotedValue(string value);
string Format(ColumnDefinition column);
string Format(ColumnDefinition column, string tableName, out IEnumerable<string> sqls);
string Format(IndexDefinition index);
string Format(ForeignKeyDefinition foreignKey);
string FormatColumnRename(string tableName, string oldName, string newName);
string FormatTableRename(string oldName, string newName);
2018-07-17 17:20:40 +02:00
/// <summary>
/// Gets a regex matching aliased fields.
/// </summary>
/// <remarks>
/// <para>Matches "(table.column) AS (alias)" where table, column and alias are properly escaped.</para>
/// </remarks>
Regex AliasRegex { get; }
2018-06-29 19:52:40 +02:00
Sql<ISqlContext> SelectTop(Sql<ISqlContext> sql, int top);
bool SupportsClustered();
bool SupportsIdentityInsert();
string ConvertIntegerToOrderableString { get; }
string ConvertDateToOrderableString { get; }
string ConvertDecimalToOrderableString { get; }
IEnumerable<string> GetTablesInSchema(IDatabase db);
IEnumerable<ColumnInfo> GetColumnsInSchema(IDatabase db);
Merge remote-tracking branch 'origin/dev-v7' into temp8 # Conflicts: # src/SolutionInfo.cs # src/Umbraco.Core/Configuration/UmbracoVersion.cs # src/Umbraco.Core/Migrations/Install/DatabaseSchemaCreator.cs # src/Umbraco.Core/Migrations/Upgrade/V_7_12_0/AddRelationTypeForMediaFolderOnDelete.cs # src/Umbraco.Core/Migrations/Upgrade/V_7_12_0/IncreaseLanguageIsoCodeColumnLength.cs # src/Umbraco.Core/Persistence/DatabaseModelDefinitions/ConstraintDefinition.cs # src/Umbraco.Core/Persistence/DatabaseModelDefinitions/DbIndexDefinition.cs # src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSeven/AddIndexToCmsMacroPropertyTable.cs # src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSeven/AddIndexToCmsMacroTable.cs # src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSeven/AlterTagsTable.cs # src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSeven/AssignMissingKeysAndIndexes.cs # src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSevenEightZero/AddIndexToPropertyTypeAliasColumn.cs # src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSevenThreeZero/AddForeignKeysForLanguageAndDictionaryTables.cs # src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSevenThreeZero/MigrateAndRemoveTemplateMasterColumn.cs # src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSevenThreeZero/UpdateUniqueIdToHaveCorrectIndexType.cs # src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSevenTwoZero/AddMissingForeignKeyForContentType.cs # src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSixTwoZero/AdditionalIndexesAndKeys.cs # src/Umbraco.Core/Persistence/SqlSyntax/ISqlSyntaxProvider.cs # src/Umbraco.Core/Persistence/SqlSyntax/MySqlSyntaxProvider.cs # src/Umbraco.Core/Persistence/SqlSyntax/SqlCeSyntaxProvider.cs # src/Umbraco.Core/Persistence/SqlSyntax/SqlServerSyntaxProvider.cs # src/Umbraco.Core/Persistence/SqlSyntax/SqlSyntaxProviderBase.cs # src/Umbraco.Core/Persistence/SqlSyntax/SqlSyntaxProviderExtensions.cs # src/Umbraco.Web.UI.Client/src/views/propertyeditors/nestedcontent/nestedcontent.editor.html # src/Umbraco.Web/HealthCheck/Checks/DataIntegrity/DatabaseSchemaValidationHealthCheck.cs # src/Umbraco.Web/Scheduling/KeepAlive.cs # src/Umbraco.Web/Trees/ApplicationTreeExtensions.cs
2018-08-20 15:16:58 +10:00
/// <summary>
/// Returns all constraints defined in the database (Primary keys, foreign keys, unique constraints...) (does not include indexes)
/// </summary>
/// <param name="db"></param>
/// <returns>
/// A Tuple containing: TableName, ConstraintName
/// </returns>
2018-06-29 19:52:40 +02:00
IEnumerable<Tuple<string, string>> GetConstraintsPerTable(IDatabase db);
Merge remote-tracking branch 'origin/dev-v7' into temp8 # Conflicts: # src/SolutionInfo.cs # src/Umbraco.Core/Configuration/UmbracoVersion.cs # src/Umbraco.Core/Migrations/Install/DatabaseSchemaCreator.cs # src/Umbraco.Core/Migrations/Upgrade/V_7_12_0/AddRelationTypeForMediaFolderOnDelete.cs # src/Umbraco.Core/Migrations/Upgrade/V_7_12_0/IncreaseLanguageIsoCodeColumnLength.cs # src/Umbraco.Core/Persistence/DatabaseModelDefinitions/ConstraintDefinition.cs # src/Umbraco.Core/Persistence/DatabaseModelDefinitions/DbIndexDefinition.cs # src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSeven/AddIndexToCmsMacroPropertyTable.cs # src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSeven/AddIndexToCmsMacroTable.cs # src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSeven/AlterTagsTable.cs # src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSeven/AssignMissingKeysAndIndexes.cs # src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSevenEightZero/AddIndexToPropertyTypeAliasColumn.cs # src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSevenThreeZero/AddForeignKeysForLanguageAndDictionaryTables.cs # src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSevenThreeZero/MigrateAndRemoveTemplateMasterColumn.cs # src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSevenThreeZero/UpdateUniqueIdToHaveCorrectIndexType.cs # src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSevenTwoZero/AddMissingForeignKeyForContentType.cs # src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSixTwoZero/AdditionalIndexesAndKeys.cs # src/Umbraco.Core/Persistence/SqlSyntax/ISqlSyntaxProvider.cs # src/Umbraco.Core/Persistence/SqlSyntax/MySqlSyntaxProvider.cs # src/Umbraco.Core/Persistence/SqlSyntax/SqlCeSyntaxProvider.cs # src/Umbraco.Core/Persistence/SqlSyntax/SqlServerSyntaxProvider.cs # src/Umbraco.Core/Persistence/SqlSyntax/SqlSyntaxProviderBase.cs # src/Umbraco.Core/Persistence/SqlSyntax/SqlSyntaxProviderExtensions.cs # src/Umbraco.Web.UI.Client/src/views/propertyeditors/nestedcontent/nestedcontent.editor.html # src/Umbraco.Web/HealthCheck/Checks/DataIntegrity/DatabaseSchemaValidationHealthCheck.cs # src/Umbraco.Web/Scheduling/KeepAlive.cs # src/Umbraco.Web/Trees/ApplicationTreeExtensions.cs
2018-08-20 15:16:58 +10:00
/// <summary>
/// Returns all constraints defined in the database (Primary keys, foreign keys, unique constraints...) (does not include indexes)
/// </summary>
/// <param name="db"></param>
/// <returns>
/// A Tuple containing: TableName, ColumnName, ConstraintName
/// </returns>
2018-06-29 19:52:40 +02:00
IEnumerable<Tuple<string, string, string>> GetConstraintsPerColumn(IDatabase db);
Merge remote-tracking branch 'origin/dev-v7' into temp8 # Conflicts: # src/SolutionInfo.cs # src/Umbraco.Core/Configuration/UmbracoVersion.cs # src/Umbraco.Core/Migrations/Install/DatabaseSchemaCreator.cs # src/Umbraco.Core/Migrations/Upgrade/V_7_12_0/AddRelationTypeForMediaFolderOnDelete.cs # src/Umbraco.Core/Migrations/Upgrade/V_7_12_0/IncreaseLanguageIsoCodeColumnLength.cs # src/Umbraco.Core/Persistence/DatabaseModelDefinitions/ConstraintDefinition.cs # src/Umbraco.Core/Persistence/DatabaseModelDefinitions/DbIndexDefinition.cs # src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSeven/AddIndexToCmsMacroPropertyTable.cs # src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSeven/AddIndexToCmsMacroTable.cs # src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSeven/AlterTagsTable.cs # src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSeven/AssignMissingKeysAndIndexes.cs # src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSevenEightZero/AddIndexToPropertyTypeAliasColumn.cs # src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSevenThreeZero/AddForeignKeysForLanguageAndDictionaryTables.cs # src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSevenThreeZero/MigrateAndRemoveTemplateMasterColumn.cs # src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSevenThreeZero/UpdateUniqueIdToHaveCorrectIndexType.cs # src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSevenTwoZero/AddMissingForeignKeyForContentType.cs # src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSixTwoZero/AdditionalIndexesAndKeys.cs # src/Umbraco.Core/Persistence/SqlSyntax/ISqlSyntaxProvider.cs # src/Umbraco.Core/Persistence/SqlSyntax/MySqlSyntaxProvider.cs # src/Umbraco.Core/Persistence/SqlSyntax/SqlCeSyntaxProvider.cs # src/Umbraco.Core/Persistence/SqlSyntax/SqlServerSyntaxProvider.cs # src/Umbraco.Core/Persistence/SqlSyntax/SqlSyntaxProviderBase.cs # src/Umbraco.Core/Persistence/SqlSyntax/SqlSyntaxProviderExtensions.cs # src/Umbraco.Web.UI.Client/src/views/propertyeditors/nestedcontent/nestedcontent.editor.html # src/Umbraco.Web/HealthCheck/Checks/DataIntegrity/DatabaseSchemaValidationHealthCheck.cs # src/Umbraco.Web/Scheduling/KeepAlive.cs # src/Umbraco.Web/Trees/ApplicationTreeExtensions.cs
2018-08-20 15:16:58 +10:00
/// <summary>
/// Returns all defined Indexes in the database excluding primary keys
/// </summary>
/// <param name="db"></param>
/// <returns>
/// A Tuple containing: TableName, IndexName, ColumnName, IsUnique
/// </returns>
2018-06-29 19:52:40 +02:00
IEnumerable<Tuple<string, string, string, bool>> GetDefinedIndexes(IDatabase db);
2019-05-28 17:49:50 +02:00
/// <summary>
2019-05-29 09:19:29 +02:00
/// Tries to gets the name of the default constraint on a column.
2019-05-28 17:49:50 +02:00
/// </summary>
/// <param name="db">The database.</param>
/// <param name="tableName">The table name.</param>
/// <param name="columnName">The column name.</param>
2019-05-29 09:19:29 +02:00
/// <param name="constraintName">The constraint name.</param>
/// <returns>A value indicating whether a default constraint was found.</returns>
/// <remarks>
/// <para>Some database engines (e.g. SqlCe) may not have names for default constraints,
/// in which case the function may return true, but <paramref name="constraintName"/> is
/// unspecified.</para>
/// </remarks>
bool TryGetDefaultConstraint(IDatabase db, string tableName, string columnName, out string constraintName);
2018-06-29 19:52:40 +02:00
}
}