aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2022-12-22 19:05:24 +0800
committercrupest <crupest@outlook.com>2022-12-22 19:05:24 +0800
commit93924947fecca4ddad670f1f1768f32063cfec3a (patch)
tree7cba2f6f947c2f88c386fe13ee68d38d8c6dfc4b
parent3469ac050b13b73d76f13dcbdfa77a1aefc49ae0 (diff)
downloadcrupest-93924947fecca4ddad670f1f1768f32063cfec3a.tar.gz
crupest-93924947fecca4ddad670f1f1768f32063cfec3a.tar.bz2
crupest-93924947fecca4ddad670f1f1768f32063cfec3a.zip
Develop secret api. v59
-rw-r--r--docker/crupest-api/CrupestApi/CrupestApi.Commons.Tests/Crud/TestEntity.cs2
-rw-r--r--docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/ColumnInfo.cs9
-rw-r--r--docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/ColumnMetadata.cs16
-rw-r--r--docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/EntityJsonHelper.cs4
-rw-r--r--docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/TableInfo.cs4
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.");
}