diff options
Diffstat (limited to 'dropped/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/Migrations/DatabaseMigrator.cs')
| -rw-r--r-- | dropped/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/Migrations/DatabaseMigrator.cs | 44 | 
1 files changed, 44 insertions, 0 deletions
| diff --git a/dropped/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/Migrations/DatabaseMigrator.cs b/dropped/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/Migrations/DatabaseMigrator.cs new file mode 100644 index 0000000..f1ae616 --- /dev/null +++ b/dropped/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/Migrations/DatabaseMigrator.cs @@ -0,0 +1,44 @@ +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; } + +    /// <summary> +    /// 0 if not primary key. 1-based index if in primary key. +    /// </summary> +    public int PrimaryKey { get; set; } +} + +public class Table +{ +    public Table(string name) +    { +        Name = name; +    } + +    public string Name { get; set; } +    public List<TableColumn> Columns { get; set; } = new List<TableColumn>(); +} + +public interface IDatabaseMigrator +{ +    Table? GetTable(IDbConnection dbConnection, string tableName); +    Table ConvertTableInfoToTable(TableInfo tableInfo); +    string GenerateCreateTableColumnSqlSegment(TableColumn column); +    string GenerateCreateTableSql(string tableName, IEnumerable<TableColumn> columns); +    bool NeedMigrate(IDbConnection dbConnection, TableInfo tableInfo); +    void AutoMigrate(IDbConnection dbConnection, TableInfo tableInfo); +} | 
