aboutsummaryrefslogtreecommitdiff
path: root/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/Migrations/DatabaseMigrator.cs
diff options
context:
space:
mode:
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.cs41
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);
}