headstart icon indicating copy to clipboard operation
headstart copied to clipboard

Convert all xp classes into partials

Open ArchitectedDev opened this issue 3 years ago • 0 comments

To minimise null value bloat stored in xp of OrderCloud resources, we can update the strongly-typed xp classes to inherit from the OrderCloudModel and IPartial, which will remove unassigned properties during serialisation.

  • Inherit OrderCloudModel and IPartial
  • All properties getters and setters will also need to be reworked to utilise the Props dictionary.
  • The readme will need to be updated to reflect this as a standard practice.
  • Converting xp classes into partial xp classes will not allow default values to be set as this can unintentially override existing xp values during PATCH requests.
  • There is a dependency on updating the OrderCloud .NET SDK to support partial class deserialisation, before we can update xp classes to partials.

See the following example

// Before refactor
public class MyProductXp
{
    public string Note { get; set; }
    public string ProductType { get; set; }
    public bool IsNew { get; set; }
    public decimal Rating { get; set; }
}

// After refactor
public class MyProductXp : OrderCloudModel, IPartial
{
    public string Note { get => GetProp<string>("Note"); set => SetProp<string>("Note", value); }
    public string ProductType { get => GetProp<string>("ProductType"); set => SetProp<string>("ProductType", value); }
    public bool IsNew { get => GetProp<bool>("IsNew"); set => SetProp<bool>("IsNew", value); }
    public decimal Rating { get => GetProp<decimal>("Rating"); set => SetProp<decimal>("Rating", value); }
}

ArchitectedDev avatar Jun 02 '22 03:06 ArchitectedDev