fix: include recipients in artifact deployment and load shared scripts on startup

NotificationRepository.GetAllNotificationListsAsync() was missing
.Include(Recipients), causing artifact deployments to push empty recipient
lists to sites. Also load shared scripts from SQLite on DeploymentManager
startup so they're available before Instance Actors compile their scripts.
This commit is contained in:
Joseph Doherty
2026-03-18 09:13:10 -04:00
parent 78fbb13df7
commit db387c6613
2 changed files with 27 additions and 1 deletions

View File

@@ -17,7 +17,7 @@ public class NotificationRepository : INotificationRepository
=> await _context.Set<NotificationList>().FindAsync(new object[] { id }, cancellationToken);
public async Task<IReadOnlyList<NotificationList>> GetAllNotificationListsAsync(CancellationToken cancellationToken = default)
=> await _context.Set<NotificationList>().ToListAsync(cancellationToken);
=> await _context.Set<NotificationList>().Include(n => n.Recipients).ToListAsync(cancellationToken);
public async Task<NotificationList?> GetListByNameAsync(string name, CancellationToken cancellationToken = default)
=> await _context.Set<NotificationList>().FirstOrDefaultAsync(l => l.Name == name, cancellationToken);

View File

@@ -147,6 +147,9 @@ public class DeploymentManagerActor : ReceiveActor, IWithTimers
return;
}
// Load and compile shared scripts from SQLite before creating Instance Actors
LoadSharedScriptsFromStorage();
var enabledConfigs = msg.Configs.Where(c => c.IsEnabled).ToList();
_totalDeployedCount = msg.Configs.Count;
_logger.LogInformation(
@@ -449,6 +452,29 @@ public class DeploymentManagerActor : ReceiveActor, IWithTimers
}
}
// ── Shared Script Loading ──
private void LoadSharedScriptsFromStorage()
{
try
{
var scripts = _storage.GetAllSharedScriptsAsync().GetAwaiter().GetResult();
var compiled = 0;
foreach (var script in scripts)
{
if (_sharedScriptLibrary.CompileAndRegister(script.Name, script.Code))
compiled++;
}
_logger.LogInformation(
"Loaded {Compiled}/{Total} shared scripts from SQLite",
compiled, scripts.Count);
}
catch (Exception ex)
{
_logger.LogError(ex, "Failed to load shared scripts from SQLite");
}
}
// ── Debug View routing ──
private void RouteDebugViewSubscribe(SubscribeDebugViewRequest request)