aboutsummaryrefslogtreecommitdiff
path: root/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/EntityJsonHelper.cs
diff options
context:
space:
mode:
Diffstat (limited to 'docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/EntityJsonHelper.cs')
-rw-r--r--docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/EntityJsonHelper.cs31
1 files changed, 16 insertions, 15 deletions
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<TEntity> where TEntity : class
}
}
- public virtual JsonDocument ConvertEntityToJson(object? entity)
+ public virtual Dictionary<string, object?> ConvertEntityToDictionary(object? entity)
{
Debug.Assert(entity is null || entity is TEntity);
- return JsonSerializer.SerializeToDocument<TEntity?>((TEntity?)entity, _jsonSerializerOptions);
- }
- public virtual TEntity? ConvertJsonToEntity(JsonDocument json)
- {
- var entity = json.Deserialize<TEntity>();
- if (entity is null) return null;
+ var result = new Dictionary<string, object?>();
- 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);
}
}