feat(sms): complete SmsConfig bundle export/import wiring + GetSmsConfigurationByIdAsync (S10b)

This commit is contained in:
Joseph Doherty
2026-06-19 11:10:39 -04:00
parent 78fadb82d2
commit c3501ecd72
19 changed files with 586 additions and 6 deletions
@@ -15,4 +15,8 @@ public sealed record BundleSummary(
// written by older exporters (which omit these JSON properties) deserialize fine.
int Sites = 0,
int DataConnections = 0,
int Instances = 0);
int Instances = 0,
// Additive (S10b): SMS provider config count, mirroring SmtpConfigs. Defaulted to
// 0 so manifests written by older exporters (which omit this JSON property)
// deserialize fine.
int SmsConfigs = 0);
@@ -17,11 +17,18 @@ public sealed record ExportSelection(
// Additive (M8 A1): site/instance-scoped export. Defaulted to empty so every
// existing positional caller keeps compiling; older callers select no sites/instances.
IReadOnlyList<int>? SiteIds = null,
IReadOnlyList<int>? InstanceIds = null)
IReadOnlyList<int>? InstanceIds = null,
// Additive (S10b): SMS provider config export, mirroring SmtpConfigurationIds.
// Defaulted null (trailing) so every existing positional caller keeps compiling;
// older callers select no SMS configs.
IReadOnlyList<int>? SmsConfigurationIds = null)
{
/// <summary>Sites selected for site/instance-scoped export (M8). Never null.</summary>
public IReadOnlyList<int> SiteIds { get; init; } = SiteIds ?? Array.Empty<int>();
/// <summary>Instances selected for site/instance-scoped export (M8). Never null.</summary>
public IReadOnlyList<int> InstanceIds { get; init; } = InstanceIds ?? Array.Empty<int>();
/// <summary>SMS provider configurations selected for export (S10b). Never null.</summary>
public IReadOnlyList<int> SmsConfigurationIds { get; init; } = SmsConfigurationIds ?? Array.Empty<int>();
}