using ScadaLink.Commons.Messages.Artifacts;
using ScadaLink.StoreAndForward;

namespace ScadaLink.SiteRuntime.Messages;

/// <summary>
/// Outbound messages — sent by local DeploymentManagerActor/S&amp;F service
/// to the local SiteReplicationActor for forwarding to the peer node.
/// </summary>
public record ReplicateConfigDeploy(
    string InstanceName, string ConfigJson, string DeploymentId, string RevisionHash, bool IsEnabled);

public record ReplicateConfigRemove(string InstanceName);

public record ReplicateConfigSetEnabled(string InstanceName, bool IsEnabled);

public record ReplicateArtifacts(DeployArtifactsCommand Command);

public record ReplicateStoreAndForward(ReplicationOperation Operation);

/// <summary>
/// Inbound messages — received from the peer's SiteReplicationActor
/// and applied to local SQLite storage.
/// </summary>
public record ApplyConfigDeploy(
    string InstanceName, string ConfigJson, string DeploymentId, string RevisionHash, bool IsEnabled);

public record ApplyConfigRemove(string InstanceName);

public record ApplyConfigSetEnabled(string InstanceName, bool IsEnabled);

public record ApplyArtifacts(DeployArtifactsCommand Command);

public record ApplyStoreAndForward(ReplicationOperation Operation);
