From d83972278201b0809889282d9cd9da918c04f8ed Mon Sep 17 00:00:00 2001 From: Maksym Sadovnychyy Date: Tue, 26 Nov 2024 22:15:25 +0100 Subject: [PATCH] (feature): patch request model --- .../Webapi/PatchRequestModelBase.cs | 12 ++++++++++++ src/MaksIT.Core/MaksIT.Core.csproj | 2 +- .../Webapi/Models/PatchOperation.cs | 18 +++++++++++++++++- 3 files changed, 30 insertions(+), 2 deletions(-) create mode 100644 src/MaksIT.Core/Abstractions/Webapi/PatchRequestModelBase.cs diff --git a/src/MaksIT.Core/Abstractions/Webapi/PatchRequestModelBase.cs b/src/MaksIT.Core/Abstractions/Webapi/PatchRequestModelBase.cs new file mode 100644 index 0000000..fefe6c5 --- /dev/null +++ b/src/MaksIT.Core/Abstractions/Webapi/PatchRequestModelBase.cs @@ -0,0 +1,12 @@ +using System.Reflection; +using MaksIT.Core.Webapi.Models; + + +namespace MaksIT.Core.Abstractions.Webapi; + +public abstract class PatchRequestModelBase : RequestModelBase { + public bool HasNonNullPatchField => GetType() + .GetProperties(BindingFlags.Public | BindingFlags.Instance) + .Where(prop => prop.PropertyType.IsGenericType && prop.PropertyType.GetGenericTypeDefinition() == typeof(PatchField<>)) + .Any(prop => prop.GetValue(this) != null); +} diff --git a/src/MaksIT.Core/MaksIT.Core.csproj b/src/MaksIT.Core/MaksIT.Core.csproj index ab9b39a..3877777 100644 --- a/src/MaksIT.Core/MaksIT.Core.csproj +++ b/src/MaksIT.Core/MaksIT.Core.csproj @@ -8,7 +8,7 @@ MaksIT.Core - 1.1.8 + 1.1.9 Maksym Sadovnychyy MAKS-IT MaksIT.Core diff --git a/src/MaksIT.Core/Webapi/Models/PatchOperation.cs b/src/MaksIT.Core/Webapi/Models/PatchOperation.cs index f1a1925..cd74a68 100644 --- a/src/MaksIT.Core/Webapi/Models/PatchOperation.cs +++ b/src/MaksIT.Core/Webapi/Models/PatchOperation.cs @@ -1,8 +1,24 @@ namespace MaksIT.Core.Webapi.Models; public enum PatchOperation { + + /// + /// When you need to replace some field, or relpace item in collection + /// Replace, + + /// + /// When you need to set some field, or add item to collection + /// Add, + + /// + /// When you need to set some field to null, or remove item from collection + /// Remove, - Clear // for collections + + /// + /// When you need to clear collection + /// + Clear }