aboutsummaryrefslogtreecommitdiff
path: root/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/TableInfo.cs
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2022-12-13 11:14:30 +0800
committercrupest <crupest@outlook.com>2022-12-20 20:32:53 +0800
commite42b048abf6c97515686c42175c29191b1527dfd (patch)
tree9d2c97e517a36644ac5069469249475a17310433 /docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/TableInfo.cs
parentbc2a3db855cca16d4f66b23f814528671b5d8591 (diff)
downloadcrupest-e42b048abf6c97515686c42175c29191b1527dfd.tar.gz
crupest-e42b048abf6c97515686c42175c29191b1527dfd.tar.bz2
crupest-e42b048abf6c97515686c42175c29191b1527dfd.zip
Develop secret api. v33
Diffstat (limited to 'docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/TableInfo.cs')
-rw-r--r--docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/TableInfo.cs72
1 files changed, 44 insertions, 28 deletions
diff --git a/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/TableInfo.cs b/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/TableInfo.cs
index b511b68..15b6320 100644
--- a/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/TableInfo.cs
+++ b/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/TableInfo.cs
@@ -431,7 +431,7 @@ CREATE TABLE {tableName}(
else
{
value = dynamicProperty.GetValue(d);
- if (value is null || value is DbNullValue)
+ if (value is null)
value = DbNullValue.Instance;
else
value = column.ColumnType.ConvertFromDatabase(value);
@@ -502,25 +502,44 @@ CREATE TABLE {tableName}(
foreach (var column in Columns)
{
InsertItem? item = insert.Items.SingleOrDefault(i => i.ColumnName == column.ColumnName);
- if (item is null)
+ object? value;
+ if (item is null || item.Value is null)
{
- object? value = null;
- column.Hooks.BeforeInsert(column, ref value);
- if (value is null || value is DbNullValue)
- realInsert.Add(column.ColumnName, null);
- else
- realInsert.Add(column.ColumnName, value);
+ value = null;
}
else
{
- object? value = item.Value ?? DbNullValue.Instance;
- column.Hooks.BeforeInsert(column, ref value);
- if (value is null || value is DbNullValue)
- realInsert.Add(column.ColumnName, null);
- else
- realInsert.Add(column.ColumnName, value);
+ value = item.Value;
+ }
+
+ if (column.IsGenerated && value is not null)
+ {
+ throw new Exception("The column is generated. You can't specify it explicitly.");
+ }
+
+ if (value is null)
+ {
+ value = column.InvokeDefaultValueGenerator();
+ }
+
+ if (value is null)
+ {
+ value = DbNullValue.Instance;
}
+ column.Hooks.BeforeInsert(column, ref value);
+
+ if (value is null)
+ value = DbNullValue.Instance;
+
+ column.InvokeValidator(value);
+
+ if (value is DbNullValue)
+ realInsert.Add(column.ColumnName, null);
+ else
+ realInsert.Add(column.ColumnName, value);
+
+
if (item?.ColumnName == KeyColumn.ColumnName)
{
key = item.Value;
@@ -546,25 +565,22 @@ CREATE TABLE {tableName}(
{
UpdateItem? item = update.Items.FirstOrDefault(i => i.ColumnName == column.ColumnName);
+ object? value;
if (item is null)
{
- object? value = null;
- column.Hooks.BeforeUpdate(column, ref value);
- if (value is not null)
- if (value is DbNullValue)
- realUpdate.Add(column.ColumnName, null);
- else
- realUpdate.Add(column.ColumnName, value);
+ value = null;
}
else
{
- object? value = item.Value ?? DbNullValue.Instance;
- column.Hooks.BeforeUpdate(column, ref value);
- if (value is not null)
- if (value is DbNullValue)
- realUpdate.Add(column.ColumnName, null);
- else
- realUpdate.Add(column.ColumnName, value);
+ value = item.Value ?? DbNullValue.Instance;
+ }
+
+ column.Hooks.BeforeUpdate(column, ref value);
+
+ if (value is not null)
+ {
+ column.InvokeValidator(value);
+ realUpdate.Add(column.ColumnName, value);
}
}