using System; using System.Collections.Generic; using Umbraco.Core.Persistence.DatabaseAnnotations; using Umbraco.Core.Persistence.DatabaseModelDefinitions; namespace Umbraco.Core.Persistence.SqlSyntax { /// /// Defines an SqlSyntaxProvider /// public interface ISqlSyntaxProvider { string GetQuotedTableName(string tableName); string GetQuotedColumnName(string columnName); string GetQuotedName(string name); bool DoesTableExist(Database 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 CreateConstraint { get; } string DeleteConstraint { get; } string CreateForeignKeyConstraint { get; } string DeleteDefaultConstraint { get; } string Format(TableDefinition table); string Format(IEnumerable columns); List Format(IEnumerable indexes); List Format(IEnumerable foreignKeys); string FormatPrimaryKey(TableDefinition table); string GetQuotedValue(string value); string Format(ColumnDefinition column); string Format(IndexDefinition index); string Format(ForeignKeyDefinition foreignKey); string FormatColumnRename(string tableName, string oldName, string newName); string FormatTableRename(string oldName, string newName); bool SupportsClustered(); bool SupportsIdentityInsert(); bool? SupportsCaseInsensitiveQueries(Database db); IEnumerable GetTablesInSchema(Database db); IEnumerable GetColumnsInSchema(Database db); IEnumerable> GetConstraintsPerTable(Database db); IEnumerable> GetConstraintsPerColumn(Database db); } }