- Add DateTime/Timestamp conversion in nested property mapping - Add IsReadOnly property detection to skip computed properties - Extract ElementNestedProperties for complex list element types - Skip read-only properties in GenerateComplexObjectMapping and GenerateComplexListMapping 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
80 lines
2.9 KiB
C#
80 lines
2.9 KiB
C#
using System.Collections.Generic;
|
|
using Microsoft.CodeAnalysis;
|
|
|
|
namespace Svrnty.CQRS.Grpc.Generators.Models
|
|
{
|
|
public class CommandInfo
|
|
{
|
|
public string Name { get; set; }
|
|
public string FullyQualifiedName { get; set; }
|
|
public string Namespace { get; set; }
|
|
public List<PropertyInfo> Properties { get; set; }
|
|
public string? ResultType { get; set; }
|
|
public string? ResultFullyQualifiedName { get; set; }
|
|
public bool HasResult => ResultType != null;
|
|
public string HandlerInterfaceName { get; set; }
|
|
public List<PropertyInfo> ResultProperties { get; set; }
|
|
public bool IsResultPrimitiveType { get; set; }
|
|
|
|
public CommandInfo()
|
|
{
|
|
Name = string.Empty;
|
|
FullyQualifiedName = string.Empty;
|
|
Namespace = string.Empty;
|
|
Properties = new List<PropertyInfo>();
|
|
HandlerInterfaceName = string.Empty;
|
|
ResultProperties = new List<PropertyInfo>();
|
|
IsResultPrimitiveType = false;
|
|
}
|
|
}
|
|
|
|
public class PropertyInfo
|
|
{
|
|
public string Name { get; set; }
|
|
public string Type { get; set; }
|
|
public string FullyQualifiedType { get; set; }
|
|
public string ProtoType { get; set; }
|
|
public int FieldNumber { get; set; }
|
|
public bool IsComplexType { get; set; }
|
|
public List<PropertyInfo> NestedProperties { get; set; }
|
|
|
|
// Type conversion metadata
|
|
public bool IsEnum { get; set; }
|
|
public bool IsList { get; set; }
|
|
public bool IsNullable { get; set; }
|
|
public bool IsDecimal { get; set; }
|
|
public bool IsDateTime { get; set; }
|
|
public bool IsGuid { get; set; }
|
|
public bool IsJsonElement { get; set; }
|
|
public bool IsBinaryType { get; set; } // Stream, byte[], MemoryStream
|
|
public bool IsStream { get; set; } // Specifically Stream types (not byte[])
|
|
public bool IsReadOnly { get; set; } // Read-only/computed properties should be skipped
|
|
public string? ElementType { get; set; }
|
|
public bool IsElementComplexType { get; set; }
|
|
public bool IsElementGuid { get; set; }
|
|
public List<PropertyInfo>? ElementNestedProperties { get; set; }
|
|
|
|
public PropertyInfo()
|
|
{
|
|
Name = string.Empty;
|
|
Type = string.Empty;
|
|
FullyQualifiedType = string.Empty;
|
|
ProtoType = string.Empty;
|
|
IsComplexType = false;
|
|
NestedProperties = new List<PropertyInfo>();
|
|
IsEnum = false;
|
|
IsList = false;
|
|
IsNullable = false;
|
|
IsDecimal = false;
|
|
IsDateTime = false;
|
|
IsGuid = false;
|
|
IsJsonElement = false;
|
|
IsBinaryType = false;
|
|
IsStream = false;
|
|
IsReadOnly = false;
|
|
IsElementComplexType = false;
|
|
IsElementGuid = false;
|
|
}
|
|
}
|
|
}
|