using System.Data;
namespace CrupestApi.Commons.Crud.Migrations;
public class TableColumn
{
public TableColumn(string name, string type, bool notNull, int primaryKey)
{
Name = name;
Type = type;
NotNull = notNull;
PrimaryKey = primaryKey;
}
public string Name { get; set; }
public string Type { get; set; }
public bool NotNull { get; set; }
///
/// 0 if not primary key. 1-based index if in primary key.
///
public int PrimaryKey { get; set; }
}
public class Table
{
public Table(string name)
{
Name = name;
}
public string Name { get; set; }
public List Columns { get; set; } = new List();
}
public interface IDatabaseMigrator
{
Table? GetTable(IDbConnection dbConnection, string tableName);
Table ConvertTableInfoToTable(TableInfo tableInfo);
string GenerateCreateTableColumnSqlSegment(TableColumn column);
string GenerateCreateTableSql(string tableName, IEnumerable columns);
bool NeedMigrate(IDbConnection dbConnection, TableInfo tableInfo);
void AutoMigrate(IDbConnection dbConnection, TableInfo tableInfo);
}