NDB.Application.DataContracts

messaging
Tudor Stanciu 2020-12-20 21:05:04 +02:00
parent 9e4710e342
commit a30ef66afc
6 changed files with 112 additions and 1 deletions

View File

@ -0,0 +1,24 @@
using MediatR;
using System;
namespace NDB.Application.DataContracts
{
public interface ICommand
{
}
public abstract class Command<TResponse> : ICommand, IRequest<TResponse>
{
public Metadata Metadata { get; }
protected Command()
{
Metadata = new Metadata() { CorrelationId = Guid.NewGuid() };
}
protected Command(Metadata metadata)
{
Metadata = metadata;
}
}
}

View File

@ -0,0 +1,25 @@
using System;
using System.Collections.Generic;
namespace NDB.Application.DataContracts
{
public class Metadata : Dictionary<string, string>
{
public const string CorrelationIdKey = "CorrelationId";
public Guid CorrelationId
{
get
{
return Guid.Parse(this[CorrelationIdKey]);
}
set
{
if (ContainsKey(CorrelationIdKey))
this[CorrelationIdKey] = value.ToString();
else
Add(CorrelationIdKey, value.ToString());
}
}
}
}

View File

@ -0,0 +1,11 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="MediatR" Version="6.0.0" />
</ItemGroup>
</Project>

View File

@ -0,0 +1,6 @@
using MediatR;
namespace NDB.Application.DataContracts
{
public abstract class Query<TResponse> : IRequest<TResponse>, IBaseRequest { }
}

View File

@ -0,0 +1,35 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace NDB.Extensions.Swagger.Filters
{
public class DtoSchemaFilter : ISchemaFilter
{
public void Apply(OpenApiSchema schema, SchemaFilterContext context)
{
var targetType = context.Type;
while (targetType != null)
{
if (typeof(ICommand).IsAssignableFrom(targetType))
{
foreach (var property in schema.Properties.ToList())
{
property.Value.ReadOnly = false;
switch (property.Key)
{
case "metadata":
schema.Properties.Remove(property.Key);
break;
default:
break;
}
}
}
targetType = targetType.DeclaringType;
}
}
}
}

12
NDB.sln
View File

@ -27,7 +27,11 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "extensions", "extensions",
EndProject EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "swagger", "swagger", "{FB4E71FD-9E32-4B5C-8019-1E8EBB9DDE9F}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "swagger", "swagger", "{FB4E71FD-9E32-4B5C-8019-1E8EBB9DDE9F}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NDB.Extensions.Swagger", "NDB.Extensions.Swagger\NDB.Extensions.Swagger.csproj", "{CB9BDFCC-DB01-4A13-8091-9A241BE85CCD}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NDB.Extensions.Swagger", "NDB.Extensions.Swagger\NDB.Extensions.Swagger.csproj", "{CB9BDFCC-DB01-4A13-8091-9A241BE85CCD}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "application", "application", "{564B5266-6F7E-4AFA-A7D4-B0E8F2E7107E}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NDB.Application.DataContracts", "NDB.Application.DataContracts\NDB.Application.DataContracts.csproj", "{BDDC2DB1-96DD-49F4-BCEF-55D06B74E6F3}"
EndProject EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
@ -59,6 +63,10 @@ Global
{CB9BDFCC-DB01-4A13-8091-9A241BE85CCD}.Debug|Any CPU.Build.0 = Debug|Any CPU {CB9BDFCC-DB01-4A13-8091-9A241BE85CCD}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CB9BDFCC-DB01-4A13-8091-9A241BE85CCD}.Release|Any CPU.ActiveCfg = Release|Any CPU {CB9BDFCC-DB01-4A13-8091-9A241BE85CCD}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CB9BDFCC-DB01-4A13-8091-9A241BE85CCD}.Release|Any CPU.Build.0 = Release|Any CPU {CB9BDFCC-DB01-4A13-8091-9A241BE85CCD}.Release|Any CPU.Build.0 = Release|Any CPU
{BDDC2DB1-96DD-49F4-BCEF-55D06B74E6F3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{BDDC2DB1-96DD-49F4-BCEF-55D06B74E6F3}.Debug|Any CPU.Build.0 = Debug|Any CPU
{BDDC2DB1-96DD-49F4-BCEF-55D06B74E6F3}.Release|Any CPU.ActiveCfg = Release|Any CPU
{BDDC2DB1-96DD-49F4-BCEF-55D06B74E6F3}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE
@ -67,6 +75,8 @@ Global
{B50B55F0-9E6E-4061-9100-E2329A44E76B} = {E0202271-4E92-4DB8-900D-B5FD745B9278} {B50B55F0-9E6E-4061-9100-E2329A44E76B} = {E0202271-4E92-4DB8-900D-B5FD745B9278}
{FB4E71FD-9E32-4B5C-8019-1E8EBB9DDE9F} = {B50B55F0-9E6E-4061-9100-E2329A44E76B} {FB4E71FD-9E32-4B5C-8019-1E8EBB9DDE9F} = {B50B55F0-9E6E-4061-9100-E2329A44E76B}
{CB9BDFCC-DB01-4A13-8091-9A241BE85CCD} = {FB4E71FD-9E32-4B5C-8019-1E8EBB9DDE9F} {CB9BDFCC-DB01-4A13-8091-9A241BE85CCD} = {FB4E71FD-9E32-4B5C-8019-1E8EBB9DDE9F}
{564B5266-6F7E-4AFA-A7D4-B0E8F2E7107E} = {E0202271-4E92-4DB8-900D-B5FD745B9278}
{BDDC2DB1-96DD-49F4-BCEF-55D06B74E6F3} = {564B5266-6F7E-4AFA-A7D4-B0E8F2E7107E}
EndGlobalSection EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {87541BAB-3FAC-4ADB-A7FB-8228DA87843D} SolutionGuid = {87541BAB-3FAC-4ADB-A7FB-8228DA87843D}