feat(uns): equipment-bound virtual-tag CRUD
This commit is contained in:
@@ -185,4 +185,48 @@ public interface IUnsTreeService
|
||||
/// <param name="ct">A token to cancel the operation.</param>
|
||||
/// <returns>Success, a concurrency failure, or a delete-failed failure.</returns>
|
||||
Task<UnsMutationResult> DeleteTagAsync(string tagId, byte[] rowVersion, CancellationToken ct = default);
|
||||
|
||||
/// <summary>
|
||||
/// Loads the scripts eligible to back a virtual tag, ordered by name. Each is projected to a
|
||||
/// <c>(ScriptId, Display)</c> pair where <c>Display</c> is <c>"{Name} ({Language})"</c>.
|
||||
/// </summary>
|
||||
/// <param name="ct">A token to cancel the load.</param>
|
||||
/// <returns>The scripts projected to <c>(ScriptId, Display)</c> pairs.</returns>
|
||||
Task<IReadOnlyList<(string ScriptId, string Display)>> LoadScriptsAsync(CancellationToken ct = default);
|
||||
|
||||
/// <summary>
|
||||
/// Creates a new equipment-bound virtual tag (plan decision #2 — virtual tags are always scoped
|
||||
/// to an equipment). Fails if the equipment does not exist, if no script is chosen, if neither a
|
||||
/// change trigger nor a timer is set, if the timer is below the 50 ms minimum, on a duplicate
|
||||
/// <c>VirtualTagId</c>, or on a name already used on the equipment.
|
||||
/// </summary>
|
||||
/// <param name="equipmentId">The owning equipment.</param>
|
||||
/// <param name="input">The operator-editable virtual-tag fields.</param>
|
||||
/// <param name="ct">A token to cancel the operation.</param>
|
||||
/// <returns>Success, or one of the guard failures.</returns>
|
||||
Task<UnsMutationResult> CreateVirtualTagAsync(string equipmentId, VirtualTagInput input, CancellationToken ct = default);
|
||||
|
||||
/// <summary>
|
||||
/// Updates an equipment-bound virtual tag's name, data type, script binding, triggers, historize,
|
||||
/// and enabled flags. The owning <c>EquipmentId</c> is preserved. Re-runs the script-chosen,
|
||||
/// change-or-timer, and 50 ms timer-minimum guards, and enforces name uniqueness on the tag's
|
||||
/// existing equipment excluding this virtual tag. Uses last-write-wins optimistic concurrency on
|
||||
/// <see cref="Configuration.Entities.VirtualTag.RowVersion"/>.
|
||||
/// </summary>
|
||||
/// <param name="virtualTagId">The virtual tag to update.</param>
|
||||
/// <param name="input">The new operator-editable virtual-tag fields.</param>
|
||||
/// <param name="rowVersion">The concurrency token the caller last read.</param>
|
||||
/// <param name="ct">A token to cancel the operation.</param>
|
||||
/// <returns>Success, a missing-row failure, a guard failure, or a concurrency failure.</returns>
|
||||
Task<UnsMutationResult> UpdateVirtualTagAsync(string virtualTagId, VirtualTagInput input, byte[] rowVersion, CancellationToken ct = default);
|
||||
|
||||
/// <summary>
|
||||
/// Deletes a virtual tag. A missing row is treated as success (already gone). Uses last-write-wins
|
||||
/// optimistic concurrency on <see cref="Configuration.Entities.VirtualTag.RowVersion"/>.
|
||||
/// </summary>
|
||||
/// <param name="virtualTagId">The virtual tag to delete.</param>
|
||||
/// <param name="rowVersion">The concurrency token the caller last read.</param>
|
||||
/// <param name="ct">A token to cancel the operation.</param>
|
||||
/// <returns>Success, a concurrency failure, or a delete-failed failure.</returns>
|
||||
Task<UnsMutationResult> DeleteVirtualTagAsync(string virtualTagId, byte[] rowVersion, CancellationToken ct = default);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user