feat(push): add service-owned firebase channels and delivery
Add push contracts, provider delivery and channel diagnostics. Link email channels to services and document migration and validation. Ref: IT-1074
This commit is contained in:
@@ -32,8 +32,8 @@ internal sealed class DevelopmentDataSeeder
|
||||
if (string.IsNullOrWhiteSpace(serviceName))
|
||||
throw new InvalidOperationException("Development seed service name is not configured.");
|
||||
|
||||
await SeedMailpitChannelAsync(serviceName, cancellationToken);
|
||||
await SeedServiceAsync(serviceName, cancellationToken);
|
||||
var serviceId = await SeedServiceAsync(serviceName, cancellationToken);
|
||||
await SeedMailpitChannelAsync(serviceId, serviceName, cancellationToken);
|
||||
|
||||
foreach (EmailTemplate template in CreateTemplates(serviceName))
|
||||
{
|
||||
@@ -55,22 +55,23 @@ internal sealed class DevelopmentDataSeeder
|
||||
}
|
||||
}
|
||||
|
||||
private async Task SeedServiceAsync(string serviceName, CancellationToken ct)
|
||||
private async Task<Guid> SeedServiceAsync(string serviceName, CancellationToken ct)
|
||||
{
|
||||
var services = await _services.GetAllAsync(ct);
|
||||
var service = services.SingleOrDefault(s => s.Name == serviceName);
|
||||
if (service?.Languages.Any(l => l.Code == DefaultLanguageCode) == true)
|
||||
return;
|
||||
return service.Id;
|
||||
var isNew = service is null;
|
||||
service ??= new NotificationServiceInfo { Name = serviceName };
|
||||
service.Languages = [..service.Languages, new ServiceLanguageInfo { Code = DefaultLanguageCode }];
|
||||
await _services.SaveAsync(service, isNew, ct);
|
||||
return service.Id;
|
||||
}
|
||||
|
||||
private async Task SeedMailpitChannelAsync(string serviceName, CancellationToken cancellationToken)
|
||||
private async Task SeedMailpitChannelAsync(Guid serviceId, string serviceName, CancellationToken cancellationToken)
|
||||
{
|
||||
IReadOnlyList<EmailChannel> existingChannels = await _channels.GetByServiceAsync(
|
||||
serviceName, cancellationToken);
|
||||
serviceId, cancellationToken);
|
||||
|
||||
if (existingChannels.Count > 0)
|
||||
{
|
||||
@@ -82,7 +83,7 @@ internal sealed class DevelopmentDataSeeder
|
||||
|
||||
var channel = new EmailChannel
|
||||
{
|
||||
ServiceName = serviceName,
|
||||
ServiceId = serviceId,
|
||||
Priority = 1,
|
||||
EmailChannelType = EmailChannelType.Smtp,
|
||||
Settings = new SmtpChannelSettings
|
||||
|
||||
Reference in New Issue
Block a user