@page "/yaml/import" @using RackPeek.Domain.Api @using RackPeek.Domain.Persistence Yaml Import @inject UpsertInventoryUseCase ImportUseCase
Import YAML
@if (!string.IsNullOrEmpty(_validationError)) {
@_validationError
}
@if (_isValid) {
Import Summary
@if (!_added.Any() && !_updated.Any() && !_replaced.Any()) {
No changes detected.
} @if (_added.Any()) {
+ @_added.Count added
@foreach (var name in _added) {
+ @name
@_newYaml[name]
                        
} } @if (_updated.Any()) {
~ @_updated.Count updated
@foreach (var name in _updated) {
~ @name
Current
@_oldYaml[name]
                                
Incoming (Merged)
@_newYaml[name]
                                
} } @if (_replaced.Any()) {
! @_replaced.Count replaced
@foreach (var name in _replaced) {
! @name
Current
@_oldYaml[name]
                                
Incoming (Replacement)
@_newYaml[name]
                                
} }
}
@code { private List _added = new(); private List _updated = new(); private List _replaced = new(); private Dictionary _oldYaml = new(StringComparer.OrdinalIgnoreCase); private Dictionary _newYaml = new(StringComparer.OrdinalIgnoreCase); private string _inputYaml = ""; private string? _validationError; private bool _isValid; private MergeMode _mode = MergeMode.Merge; async Task OnModeChanged(MergeMode mode) { _mode = mode; await ComputeDiff(); } async Task ComputeDiff() { _validationError = null; _isValid = false; _added.Clear(); _updated.Clear(); _replaced.Clear(); _oldYaml.Clear(); _newYaml.Clear(); if (string.IsNullOrWhiteSpace(_inputYaml)) return; try { var result = await ImportUseCase.ExecuteAsync(new ImportYamlRequest { Yaml = _inputYaml, Mode = _mode, DryRun = true }); _added = result.Added; _updated = result.Updated; _replaced = result.Replaced; _oldYaml = result.OldYaml; _newYaml = result.NewYaml; _isValid = true; } catch (Exception ex) { _validationError = $"YAML invalid: {ex.Message}"; } } async Task Apply() { if (!_isValid) return; try { await ImportUseCase.ExecuteAsync(new ImportYamlRequest { Yaml = _inputYaml, Mode = _mode, DryRun = false }); _inputYaml = ""; _isValid = false; _added.Clear(); _updated.Clear(); _replaced.Clear(); } catch (Exception ex) { _validationError = $"Apply failed: {ex.Message}"; } } }