fix: tag_metadata orphan cleanup on metadata reload
This commit is contained in:
@@ -37,6 +37,13 @@ public class MetadataLoaderService : IMetadataLoaderService
|
||||
var baseTagSet = baseTags.ToHashSet(StringComparer.OrdinalIgnoreCase);
|
||||
if (baseTagSet.Count == 0) return 0;
|
||||
|
||||
// ── Step 0: realtime_table에 없는 orphan base_tag 삭제 ─────────────
|
||||
await _ctx.Database.ExecuteSqlRawAsync(@"
|
||||
DELETE FROM tag_metadata
|
||||
WHERE base_tag NOT IN (
|
||||
SELECT DISTINCT LOWER(split_part(tagname, '.', 1)) FROM realtime_table
|
||||
)");
|
||||
|
||||
// ── Step 1: node_map_master에서 실제 node_id 조회 ──────────────────
|
||||
// hostname을 직접 조성하지 않고 DB에 저장된 원본 node_id를 사용
|
||||
var masterNodes = await _ctx.NodeMapMasters
|
||||
|
||||
@@ -686,7 +686,7 @@
|
||||
태그의 desc, area, state descriptor 정보를 OPC UA에서 조회하여 저장합니다.
|
||||
</p>
|
||||
<div class="btn-row">
|
||||
<button class="btn-a" onclick="metaReload()">🔄 메타데이터 로드</button>
|
||||
<button class="btn-a" onclick="metaReload()">🔄 메타데이터 갱신</button>
|
||||
<button class="btn-b" onclick="metaView()">📋 메타데이터 조회</button>
|
||||
</div>
|
||||
<div id="meta-log" class="logbox hidden" style="margin-top:8px"></div>
|
||||
|
||||
@@ -954,7 +954,7 @@ async function metaReload() {
|
||||
};
|
||||
const logEl = document.getElementById('meta-log');
|
||||
logEl.classList.remove('hidden');
|
||||
logEl.innerHTML = '<div class="ll inf">⏳ 메타데이터 재로드 중...</div>';
|
||||
logEl.innerHTML = '<div class="ll inf">⏳ 메타데이터 갱신 중...</div>';
|
||||
try {
|
||||
const d = await api('POST', '/api/tags/metadata/reload', body);
|
||||
logEl.innerHTML = `<div class="ll ${d.success ? 'ok' : 'err'}">${d.success ? '✅' : '❌'} ${esc(d.message)}</div>`;
|
||||
|
||||
Reference in New Issue
Block a user