From 3589d2c2b7148723b4414aa8a89a2cbfeb1dbca8 Mon Sep 17 00:00:00 2001 From: crupest Date: Mon, 12 Dec 2022 20:38:49 +0800 Subject: Develop secret api. v32 --- .../CrupestApi.Commons/Crud/EntityJsonHelper.cs | 31 +++++++++++----------- 1 file changed, 16 insertions(+), 15 deletions(-) (limited to 'docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/EntityJsonHelper.cs') diff --git a/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/EntityJsonHelper.cs b/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/EntityJsonHelper.cs index 6f2f446..19208d8 100644 --- a/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/EntityJsonHelper.cs +++ b/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/EntityJsonHelper.cs @@ -1,5 +1,6 @@ using System.Diagnostics; using System.Text.Json; +using System.Text.Json.Serialization; using Microsoft.Extensions.Options; namespace CrupestApi.Commons.Crud; @@ -29,27 +30,27 @@ public class EntityJsonHelper where TEntity : class } } - public virtual JsonDocument ConvertEntityToJson(object? entity) + public virtual Dictionary ConvertEntityToDictionary(object? entity) { Debug.Assert(entity is null || entity is TEntity); - return JsonSerializer.SerializeToDocument((TEntity?)entity, _jsonSerializerOptions); - } - public virtual TEntity? ConvertJsonToEntity(JsonDocument json) - { - var entity = json.Deserialize(); - if (entity is null) return null; + var result = new Dictionary(); - foreach (var column in _table.Columns) + foreach (var column in _table.PropertyColumns) { - var propertyValue = column.PropertyInfo?.GetValue(entity); - - if ((column.IsAutoIncrement || column.IsGenerated) && propertyValue is not null) - { - throw new Exception("You can't specify this property because it is auto generated."); - } + var propertyInfo = column.PropertyInfo; + var value = propertyInfo!.GetValue(entity); + result[column.ColumnName] = value; } - return entity; + return result; + } + + public virtual string ConvertEntityToJson(object? entity) + { + Debug.Assert(entity is null || entity is TEntity); + + var dictionary = ConvertEntityToDictionary(entity); + return JsonSerializer.Serialize(dictionary, _jsonSerializerOptions); } } -- cgit v1.2.3