Files
2022-10-03 21:49:31 +07:00

29 lines
1.6 KiB
C#

using System.Text.Json;
using System.Text.Json.Serialization;
namespace TorchRemote.Models.Shared.Settings;
[JsonDerivedType(typeof(IntegerProperty), "integer")]
[JsonDerivedType(typeof(StringProperty), "string")]
[JsonDerivedType(typeof(BooleanProperty), "boolean")]
[JsonDerivedType(typeof(NumberProperty), "number")]
[JsonDerivedType(typeof(ObjectProperty), "object")]
[JsonDerivedType(typeof(ArrayProperty), "array")]
[JsonDerivedType(typeof(EnumProperty), "enum")]
[JsonDerivedType(typeof(DateTimeProperty), "date-time")]
[JsonDerivedType(typeof(DurationProperty), "duration")]
[JsonDerivedType(typeof(UriProperty), "uri")]
[JsonDerivedType(typeof(UuidProperty), "uuid")]
public abstract record PropertyBase(string Name);
public record IntegerProperty(string Name, int? Value) : PropertyBase(Name);
public record NumberProperty(string Name, double? Value) : PropertyBase(Name);
public record StringProperty(string Name, string? Value) : PropertyBase(Name);
public record EnumProperty(string Name, string Value) : PropertyBase(Name);
public record BooleanProperty(string Name, bool? Value) : PropertyBase(Name);
public record ObjectProperty(string Name, JsonElement Value) : PropertyBase(Name);
public record ArrayProperty(string Name, JsonElement Value) : PropertyBase(Name);
public record DateTimeProperty(string Name, DateTime? Value) : PropertyBase(Name);
public record DurationProperty(string Name, TimeSpan? Value) : PropertyBase(Name);
public record UriProperty(string Name, Uri? Value) : PropertyBase(Name);
public record UuidProperty(string Name, Guid? Value) : PropertyBase(Name);