From 5784abdad21724b1813bf54e0838ca0935cd1c01 Mon Sep 17 00:00:00 2001 From: crupest Date: Thu, 22 Dec 2022 19:05:24 +0800 Subject: Develop secret api. v59 --- .../CrupestApi/CrupestApi.Commons/Crud/ColumnInfo.cs | 9 +++++++-- .../CrupestApi/CrupestApi.Commons/Crud/ColumnMetadata.cs | 16 +++++----------- .../CrupestApi.Commons/Crud/EntityJsonHelper.cs | 4 ++-- .../CrupestApi/CrupestApi.Commons/Crud/TableInfo.cs | 4 ++-- 4 files changed, 16 insertions(+), 17 deletions(-) (limited to 'docker/crupest-api/CrupestApi/CrupestApi.Commons') 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); /// /// 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. /// @@ -71,6 +71,11 @@ public class ColumnInfo public bool IsSpecifiedAsKey => Metadata.GetValueOrDefault(ColumnMetadataKeys.ActAsKey) is true; public ColumnIndexType Index => Metadata.GetValueOrDefault(ColumnMetadataKeys.Index) ?? ColumnIndexType.None; + /// + /// Whether the column value can be generated, which means the column has a default value or a default value generator or is AUTOINCREMENT. + /// + public bool CanBeGenerated => DefaultValue is not null || DefaultValueGeneratorMethod is not null || IsAutoIncrement; + /// /// The real column name. Maybe set in metadata or just the property name. /// 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 /// /// This indicates that you take care of generate this column value when create entity. User calling the api can not specify the value. /// - public const string Generated = nameof(ColumnAttribute.Generated); + public const string OnlyGenerated = nameof(ColumnAttribute.OnlyGenerated); /// /// The default value generator method name in entity type. Default to null, aka, search for ColumnNameDefaultValueGenerator. @@ -42,14 +42,10 @@ public static class ColumnMetadataKeys /// public const string ActAsKey = nameof(ColumnAttribute.ActAsKey); - public const string DefaultValue = nameof(ColumnAttribute.DefaultValue); - /// - /// 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. /// - /// - 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 /// public bool DefaultEmptyForString { get; init; } - /// - public bool Generated { get; init; } + /// + public bool OnlyGenerated { get; init; } /// 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 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 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."); } -- cgit v1.2.3