refactor: simplify data connections from many-to-many site assignment to direct site ownership
Replace SiteDataConnectionAssignment join table with a direct SiteId FK on DataConnection, simplifying the data model, repositories, UI, CLI, and deployment service.
This commit is contained in:
@@ -103,8 +103,6 @@ public class ManagementActor : ReceiveActor
|
||||
or UpdateSmtpConfigCommand
|
||||
or CreateDataConnectionCommand or UpdateDataConnectionCommand
|
||||
or DeleteDataConnectionCommand
|
||||
or AssignDataConnectionToSiteCommand
|
||||
or UnassignDataConnectionFromSiteCommand
|
||||
or AddTemplateAttributeCommand or UpdateTemplateAttributeCommand or DeleteTemplateAttributeCommand
|
||||
or AddTemplateAlarmCommand or UpdateTemplateAlarmCommand or DeleteTemplateAlarmCommand
|
||||
or AddTemplateScriptCommand or UpdateTemplateScriptCommand or DeleteTemplateScriptCommand
|
||||
@@ -176,13 +174,11 @@ public class ManagementActor : ReceiveActor
|
||||
UpdateAreaCommand cmd => await HandleUpdateArea(sp, cmd, user.Username),
|
||||
|
||||
// Data Connections
|
||||
ListDataConnectionsCommand => await HandleListDataConnections(sp),
|
||||
ListDataConnectionsCommand cmd => await HandleListDataConnections(sp, cmd),
|
||||
GetDataConnectionCommand cmd => await HandleGetDataConnection(sp, cmd),
|
||||
CreateDataConnectionCommand cmd => await HandleCreateDataConnection(sp, cmd, user.Username),
|
||||
UpdateDataConnectionCommand cmd => await HandleUpdateDataConnection(sp, cmd, user.Username),
|
||||
DeleteDataConnectionCommand cmd => await HandleDeleteDataConnection(sp, cmd, user.Username),
|
||||
AssignDataConnectionToSiteCommand cmd => await HandleAssignDataConnectionToSite(sp, cmd, user.Username),
|
||||
UnassignDataConnectionFromSiteCommand cmd => await HandleUnassignDataConnectionFromSite(sp, cmd, user.Username),
|
||||
|
||||
// External Systems
|
||||
ListExternalSystemsCommand => await HandleListExternalSystems(sp),
|
||||
@@ -676,9 +672,11 @@ public class ManagementActor : ReceiveActor
|
||||
// Data Connection handlers
|
||||
// ========================================================================
|
||||
|
||||
private static async Task<object?> HandleListDataConnections(IServiceProvider sp)
|
||||
private static async Task<object?> HandleListDataConnections(IServiceProvider sp, ListDataConnectionsCommand cmd)
|
||||
{
|
||||
var repo = sp.GetRequiredService<ISiteRepository>();
|
||||
if (cmd.SiteId.HasValue)
|
||||
return await repo.GetDataConnectionsBySiteIdAsync(cmd.SiteId.Value);
|
||||
return await repo.GetAllDataConnectionsAsync();
|
||||
}
|
||||
|
||||
@@ -691,7 +689,7 @@ public class ManagementActor : ReceiveActor
|
||||
private static async Task<object?> HandleCreateDataConnection(IServiceProvider sp, CreateDataConnectionCommand cmd, string user)
|
||||
{
|
||||
var repo = sp.GetRequiredService<ISiteRepository>();
|
||||
var conn = new DataConnection(cmd.Name, cmd.Protocol) { Configuration = cmd.Configuration };
|
||||
var conn = new DataConnection(cmd.Name, cmd.Protocol, cmd.SiteId) { Configuration = cmd.Configuration };
|
||||
await repo.AddDataConnectionAsync(conn);
|
||||
await repo.SaveChangesAsync();
|
||||
await AuditAsync(sp, user, "Create", "DataConnection", conn.Id.ToString(), conn.Name, conn);
|
||||
@@ -721,28 +719,6 @@ public class ManagementActor : ReceiveActor
|
||||
return true;
|
||||
}
|
||||
|
||||
private static async Task<object?> HandleAssignDataConnectionToSite(IServiceProvider sp, AssignDataConnectionToSiteCommand cmd, string user)
|
||||
{
|
||||
var repo = sp.GetRequiredService<ISiteRepository>();
|
||||
var assignment = new SiteDataConnectionAssignment
|
||||
{
|
||||
SiteId = cmd.SiteId,
|
||||
DataConnectionId = cmd.DataConnectionId
|
||||
};
|
||||
await repo.AddSiteDataConnectionAssignmentAsync(assignment);
|
||||
await repo.SaveChangesAsync();
|
||||
await AuditAsync(sp, user, "Assign", "DataConnection", cmd.DataConnectionId.ToString(), $"Site:{cmd.SiteId}", assignment);
|
||||
return assignment;
|
||||
}
|
||||
|
||||
private static async Task<object?> HandleUnassignDataConnectionFromSite(IServiceProvider sp, UnassignDataConnectionFromSiteCommand cmd, string user)
|
||||
{
|
||||
var repo = sp.GetRequiredService<ISiteRepository>();
|
||||
await repo.DeleteSiteDataConnectionAssignmentAsync(cmd.AssignmentId);
|
||||
await repo.SaveChangesAsync();
|
||||
await AuditAsync(sp, user, "Unassign", "DataConnection", cmd.AssignmentId.ToString(), cmd.AssignmentId.ToString(), null);
|
||||
return true;
|
||||
}
|
||||
|
||||
// ========================================================================
|
||||
// External System handlers
|
||||
@@ -1011,8 +987,7 @@ public class ManagementActor : ReceiveActor
|
||||
private static async Task<object?> HandleDeployArtifacts(IServiceProvider sp, MgmtDeployArtifactsCommand cmd, string user)
|
||||
{
|
||||
var svc = sp.GetRequiredService<ArtifactDeploymentService>();
|
||||
var command = await svc.BuildDeployArtifactsCommandAsync();
|
||||
var result = await svc.DeployToAllSitesAsync(command, user);
|
||||
var result = await svc.DeployToAllSitesAsync(user);
|
||||
return result.IsSuccess
|
||||
? result.Value
|
||||
: throw new InvalidOperationException(result.Error);
|
||||
|
||||
Reference in New Issue
Block a user