From 71dd01cb3e4711d96435a7158c47a8070b2ab4d0 Mon Sep 17 00:00:00 2001 From: crupest Date: Sun, 25 Dec 2022 18:01:48 +0800 Subject: Add migration. v2.0 --- .../Crud/Migrations/DatabaseMigrator.cs | 41 ++++++++-------------- 1 file changed, 14 insertions(+), 27 deletions(-) (limited to 'docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/Migrations/DatabaseMigrator.cs') 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 +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; } /// /// 0 if not primary key. 1-based index if in primary key. /// public int PrimaryKey { get; set; } - - bool IEquatable.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 Columns { get; set; } = new List(); } +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 GetRecords(IDbConnection dbConnection, string tableName); + + Table? GetTable(IDbConnection dbConnection, string tableName); Table ConvertTableInfoToTable(TableInfo tableInfo); string GenerateCreateTableColumnSqlSegment(TableColumn column); string GenerateCreateTableSql(string tableName, IEnumerable 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); } -- cgit v1.2.3