diff options
author | crupest <crupest@outlook.com> | 2022-12-21 16:32:38 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2022-12-21 16:32:38 +0800 |
commit | 839e4fea3bd11b1b7e9e212e9fc2fbd3d94a6db1 (patch) | |
tree | 7a707dea3daa2c860a0bb215fef44bbcf76f4efc /docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/ColumnInfo.cs | |
parent | e3510f87617cebf4d11c9bf0e5e4ba640a5741e4 (diff) | |
download | crupest-839e4fea3bd11b1b7e9e212e9fc2fbd3d94a6db1.tar.gz crupest-839e4fea3bd11b1b7e9e212e9fc2fbd3d94a6db1.tar.bz2 crupest-839e4fea3bd11b1b7e9e212e9fc2fbd3d94a6db1.zip |
Develop secret api. v54
Diffstat (limited to 'docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/ColumnInfo.cs')
-rw-r--r-- | docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/ColumnInfo.cs | 34 |
1 files changed, 30 insertions, 4 deletions
diff --git a/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/ColumnInfo.cs b/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/ColumnInfo.cs index 3b095b2..3d5c652 100644 --- a/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/ColumnInfo.cs +++ b/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/ColumnInfo.cs @@ -15,7 +15,12 @@ public class ColumnInfo public ColumnInfo(TableInfo table, IColumnMetadata metadata, Type clrType, IColumnTypeProvider typeProvider, ILoggerFactory loggerFactory) { _logger = loggerFactory.CreateLogger<ColumnInfo>(); - _logger.LogInformation("Create column {} without corresponding property.", ColumnName); + if (metadata is null) + throw new ArgumentException("You must specify metadata for non-property column."); + if (metadata.TryGetValue(ColumnMetadataKeys.ColumnName, out var columnName)) + _logger.LogInformation("Create column without property.", columnName); + else + throw new ArgumentException("You must specify name in metadata for non-property column."); Table = table; _metadata.Add(metadata); @@ -28,7 +33,7 @@ public class ColumnInfo public ColumnInfo(TableInfo table, PropertyInfo propertyInfo, IColumnTypeProvider typeProvider, ILoggerFactory loggerFactory) { _logger = loggerFactory.CreateLogger<ColumnInfo>(); - _logger.LogInformation("Create column {} with corresponding property.", ColumnName); + _logger.LogInformation("Create column with property {}.", propertyInfo.Name); Table = table; PropertyInfo = propertyInfo; @@ -90,7 +95,7 @@ public class ColumnInfo if (value is null) { string methodName = ColumnName + "DefaultValueGenerator"; - result = Table.EntityType.GetMethod(methodName, BindingFlags.Static); + result = Table.EntityType.GetMethod(methodName, BindingFlags.Public | BindingFlags.Static); } else { @@ -131,7 +136,28 @@ public class ColumnInfo public object? InvokeDefaultValueGenerator() { - return DefaultValueGeneratorMethod?.Invoke(null, new object?[] { this }); + var method = this.DefaultValueGeneratorMethod; + if (method is null) + { + _logger.LogInformation("Try to invoke default value generator for column {} but it does not exist.", ColumnName); + return null; + } + var parameters = method.GetParameters(); + if (parameters.Length == 0) + { + return method.Invoke(null, new object?[0]); + } + else if (parameters.Length == 1) + { + if (parameters[0].ParameterType != typeof(ColumnInfo)) + throw new Exception("The default value generator method can only have a parameter of type ColumnInfo."); + return method.Invoke(null, new object?[] { this }); + } + else + { + throw new Exception("The default value generator method can only have 0 or 1 parameter."); + } + } public string GenerateCreateTableColumnString(string? dbProviderId = null) |