diff options
Diffstat (limited to 'docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/Migrations/DatabaseMigrator.cs')
-rw-r--r-- | docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/Migrations/DatabaseMigrator.cs | 41 |
1 files changed, 14 insertions, 27 deletions
diff --git a/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/Migrations/DatabaseMigrator.cs b/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/Migrations/DatabaseMigrator.cs index 3d59c21..e5ef05d 100644 --- a/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/Migrations/DatabaseMigrator.cs +++ b/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/Migrations/DatabaseMigrator.cs @@ -2,44 +2,24 @@ using System.Data; namespace CrupestApi.Commons.Crud.Migrations; -public class TableColumn : IEquatable<TableColumn> +public class TableColumn { - public TableColumn(string name, string type, bool isNullable, int primaryKey) + public TableColumn(string name, string type, bool notNull, int primaryKey) { Name = name.ToLowerInvariant(); Type = type.ToLowerInvariant(); - IsNullable = isNullable; + NotNull = notNull; PrimaryKey = primaryKey; } public string Name { get; set; } public string Type { get; set; } - public bool IsNullable { 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; } - - bool IEquatable<TableColumn>.Equals(TableColumn? other) - { - if (other is null) - { - return false; - } - - return Name == other.Name && Type == other.Type && IsNullable == other.IsNullable && PrimaryKey == other.PrimaryKey; - } - - public override bool Equals(object? obj) - { - return Equals(obj as TableColumn); - } - - public override int GetHashCode() - { - return HashCode.Combine(Name, Type, IsNullable, PrimaryKey); - } } public class Table @@ -53,14 +33,21 @@ public class Table public List<TableColumn> Columns { get; set; } = new List<TableColumn>(); } +public class MigrationRecord +{ + public string TableName { get; set; } = default!; + public int Version { get; set; } + public Table Structure { get; set; } = default!; +} + public interface IDatabaseMigrator { - Table GetTable(IDbConnection dbConnection, string name); + List<MigrationRecord> GetRecords(IDbConnection dbConnection, string tableName); + + Table? GetTable(IDbConnection dbConnection, string tableName); Table ConvertTableInfoToTable(TableInfo tableInfo); string GenerateCreateTableColumnSqlSegment(TableColumn column); string GenerateCreateTableSql(string tableName, IEnumerable<TableColumn> columns); - bool TableExists(IDbConnection connection, string tableName); bool NeedMigrate(IDbConnection dbConnection, TableInfo tableInfo); - bool CanAutoMigrate(IDbConnection dbConnection, TableInfo tableInfo); void AutoMigrate(IDbConnection dbConnection, TableInfo tableInfo); } |