diff options
author | crupest <crupest@outlook.com> | 2022-12-22 19:05:24 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2022-12-22 19:05:24 +0800 |
commit | 93924947fecca4ddad670f1f1768f32063cfec3a (patch) | |
tree | 7cba2f6f947c2f88c386fe13ee68d38d8c6dfc4b | |
parent | 3469ac050b13b73d76f13dcbdfa77a1aefc49ae0 (diff) | |
download | crupest-93924947fecca4ddad670f1f1768f32063cfec3a.tar.gz crupest-93924947fecca4ddad670f1f1768f32063cfec3a.tar.bz2 crupest-93924947fecca4ddad670f1f1768f32063cfec3a.zip |
Develop secret api. v59
5 files changed, 17 insertions, 18 deletions
diff --git a/docker/crupest-api/CrupestApi/CrupestApi.Commons.Tests/Crud/TestEntity.cs b/docker/crupest-api/CrupestApi/CrupestApi.Commons.Tests/Crud/TestEntity.cs index 7cc19ed..c15334c 100644 --- a/docker/crupest-api/CrupestApi/CrupestApi.Commons.Tests/Crud/TestEntity.cs +++ b/docker/crupest-api/CrupestApi/CrupestApi.Commons.Tests/Crud/TestEntity.cs @@ -11,7 +11,7 @@ public class TestEntity [Column] public float? Height { get; set; } - [Column(Generated = true, NotNull = true, NoUpdate = true)] + [Column(OnlyGenerated = true, NotNull = true, NoUpdate = true)] public string Secret { get; set; } = default!; public static string SecretDefaultValueGenerator() diff --git a/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/ColumnInfo.cs b/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/ColumnInfo.cs index 7f1782b..30b75af 100644 --- a/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/ColumnInfo.cs +++ b/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/ColumnInfo.cs @@ -60,9 +60,9 @@ public class ColumnInfo public bool IsPrimaryKey => Metadata.GetValueOrDefault(ColumnMetadataKeys.IsPrimaryKey) is true; public bool IsAutoIncrement => Metadata.GetValueOrDefault(ColumnMetadataKeys.IsAutoIncrement) is true; public bool IsNotNull => IsPrimaryKey || Metadata.GetValueOrDefault(ColumnMetadataKeys.NotNull) is true; - public bool IsGenerated => Metadata.GetValueOrDefault(ColumnMetadataKeys.Generated) is true; + public bool IsOnlyGenerated => Metadata.GetValueOrDefault(ColumnMetadataKeys.OnlyGenerated) is true; public bool IsNoUpdate => Metadata.GetValueOrDefault(ColumnMetadataKeys.NoUpdate) is true; - public bool CanBeGenerated => (bool?)Metadata.GetValueOrDefault(ColumnMetadataKeys.CanBeGenerated) ?? (DefaultValueGeneratorMethod is not null || IsAutoIncrement); + public object? DefaultValue => Metadata.GetValueOrDefault(ColumnMetadataKeys.DefaultValue); /// <summary> /// This only returns metadata value. It doesn't not fall back to primary column. If you want to get the real key column, go to table info. /// </summary> @@ -72,6 +72,11 @@ public class ColumnInfo public ColumnIndexType Index => Metadata.GetValueOrDefault<ColumnIndexType?>(ColumnMetadataKeys.Index) ?? ColumnIndexType.None; /// <summary> + /// Whether the column value can be generated, which means the column has a default value or a default value generator or is AUTOINCREMENT. + /// </summary> + public bool CanBeGenerated => DefaultValue is not null || DefaultValueGeneratorMethod is not null || IsAutoIncrement; + + /// <summary> /// The real column name. Maybe set in metadata or just the property name. /// </summary> /// <value></value> diff --git a/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/ColumnMetadata.cs b/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/ColumnMetadata.cs index 26f6105..0ee2837 100644 --- a/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/ColumnMetadata.cs +++ b/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/ColumnMetadata.cs @@ -16,7 +16,7 @@ public static class ColumnMetadataKeys /// <summary> /// This indicates that you take care of generate this column value when create entity. User calling the api can not specify the value. /// </summary> - public const string Generated = nameof(ColumnAttribute.Generated); + public const string OnlyGenerated = nameof(ColumnAttribute.OnlyGenerated); /// <summary> /// The default value generator method name in entity type. Default to null, aka, search for ColumnNameDefaultValueGenerator. @@ -42,14 +42,10 @@ public static class ColumnMetadataKeys /// </summary> public const string ActAsKey = nameof(ColumnAttribute.ActAsKey); - public const string DefaultValue = nameof(ColumnAttribute.DefaultValue); - /// <summary> - /// Default value is null, aka, whether a default value generator is specified. - /// Set to true or false to override it. + /// The default value used for the column. /// </summary> - /// <returns></returns> - public const string CanBeGenerated = nameof(ColumnAttribute.CanBeGenerated); + public const string DefaultValue = nameof(ColumnAttribute.DefaultValue); } public interface IColumnMetadata @@ -117,8 +113,8 @@ public class ColumnAttribute : Attribute, IColumnMetadata /// <seealso cref="ColumnMetadataKeys.DefaultEmptyForString"/> public bool DefaultEmptyForString { get; init; } - /// <seealso cref="ColumnMetadataKeys.Generated"/> - public bool Generated { get; init; } + /// <seealso cref="ColumnMetadataKeys.OnlyGenerated"/> + public bool OnlyGenerated { get; init; } /// <seealso cref="ColumnMetadataKeys.DefaultValueGenerator"/> public string? DefaultValueGenerator { get; init; } @@ -134,8 +130,6 @@ public class ColumnAttribute : Attribute, IColumnMetadata public object? DefaultValue { get; init; } - public bool? CanBeGenerated { get; init; } = null; - public bool TryGetValue(string key, out object? value) { var property = GetType().GetProperty(key); diff --git a/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/EntityJsonHelper.cs b/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/EntityJsonHelper.cs index 39c7b43..406e214 100644 --- a/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/EntityJsonHelper.cs +++ b/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/EntityJsonHelper.cs @@ -86,7 +86,7 @@ public class EntityJsonHelper<TEntity> where TEntity : class { if (jsonElement.TryGetProperty(column.ColumnName, out var jsonValue)) { - if (column.IsGenerated) + if (column.IsOnlyGenerated) { throw new UserException($"Property {column.ColumnName} is auto generated, you cannot set it."); } @@ -146,7 +146,7 @@ public class EntityJsonHelper<TEntity> where TEntity : class { if (jsonElement.TryGetProperty(column.ColumnName, out var jsonValue)) { - if (column.IsGenerated) + if (column.IsOnlyGenerated) { throw new UserException($"Property {column.ColumnName} is auto generated, you cannot set it."); } diff --git a/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/TableInfo.cs b/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/TableInfo.cs index e9f2d85..bc580f2 100644 --- a/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/TableInfo.cs +++ b/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/TableInfo.cs @@ -157,7 +157,7 @@ public class TableInfo { foreach (var column in Columns) { - if (column.IsGenerated && column.DefaultValueGeneratorMethod is null) + if (column.IsOnlyGenerated && column.DefaultValueGeneratorMethod is null) { throw new Exception($"Column '{column.ColumnName}' is generated but has no generator."); } @@ -504,7 +504,7 @@ CREATE TABLE {tableName}( var value = item?.Value; - if (column.IsGenerated && value is not null) + if (column.IsOnlyGenerated && value is not null) { throw new Exception($"The column '{column.ColumnName}' is auto generated. You can't specify it explicitly."); } |