aboutsummaryrefslogtreecommitdiff
path: root/dropped/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/Migrations/DatabaseMigrator.cs
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2024-11-11 01:12:29 +0800
committerYuqian Yang <crupest@crupest.life>2024-12-19 21:42:01 +0800
commitf9aa02ec1a4c24e80a206857d4f68198bb027bb4 (patch)
tree5994f0a62733b13f9f330e3515260ae20dc4a0bd /dropped/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/Migrations/DatabaseMigrator.cs
parent7b4d49e4bbdff6ddf1f8f7e937130e700024d5e9 (diff)
downloadcrupest-f9aa02ec1a4c24e80a206857d4f68198bb027bb4.tar.gz
crupest-f9aa02ec1a4c24e80a206857d4f68198bb027bb4.tar.bz2
crupest-f9aa02ec1a4c24e80a206857d4f68198bb027bb4.zip
HALF WORK: 2024.12.19
Re-organize file structure.
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.cs44
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);
+}