using System;
using System.Collections.Generic;
using System.Data;
using Umbraco.Core.Persistence.DatabaseAnnotations;
using Umbraco.Core.Persistence.SqlSyntax.ModelDefinitions;
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 ToCreateTableStatement(TableDefinition tableDefinition);
List ToCreateForeignKeyStatements(TableDefinition tableDefinition);
List ToCreateIndexStatements(TableDefinition tableDefinition);
DbType GetColumnDbType(Type valueType);
string GetIndexType(IndexTypes indexTypes);
string GetColumnDefinition(ColumnDefinition column, string tableName);
string GetPrimaryKeyStatement(ColumnDefinition column, string tableName);
string ToCreatePrimaryKeyStatement(TableDefinition table);
string GetSpecialDbType(SpecialDbTypes dbTypes);
string GetConstraintDefinition(ColumnDefinition column, string tableName);
List ToAlterIdentitySeedStatements(TableDefinition table);
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 Format(Migrations.Model.ColumnDefinition column);
}
}