feat(hal): inventory existing Webmaker sites
This commit is contained in:
@@ -88,4 +88,20 @@ CREATE TABLE IF NOT EXISTS portal_events_outbox (id TEXT PRIMARY KEY, payload_js
|
||||
{ id: 'hal_0002_live_host', sql: `ALTER TABLE bootstrap_state ADD COLUMN live_host TEXT; ALTER TABLE bootstrap_state ADD COLUMN live_pid TEXT;` },
|
||||
// [legacy 메일 서비스 가져오기] HAL 관리형 메일 서비스 등록부·가져오기 단위(hal/mailsvc.mjs). 표 추가만(기존 표 변경 없음).
|
||||
...MAIL_MIGRATIONS,
|
||||
// Webmaker 전체 인벤토리는 heartbeat 2 MiB 한도를 넘을 수 있어 인증된 배치로 원자적으로 조립한다.
|
||||
{ id: 'hal_0004_webmaker_inventory_stage', sql: `
|
||||
CREATE TABLE IF NOT EXISTS agent_inventory_staging (
|
||||
agent_id TEXT NOT NULL REFERENCES agents(id) ON DELETE CASCADE, kind TEXT NOT NULL, scan_id TEXT NOT NULL, total INTEGER NOT NULL, next_offset INTEGER NOT NULL DEFAULT 0,
|
||||
meta_json TEXT NOT NULL, items_json TEXT NOT NULL DEFAULT '[]', updated_at TEXT NOT NULL,
|
||||
PRIMARY KEY(agent_id, kind)
|
||||
);
|
||||
` },
|
||||
// 사전 릴리스에서 FK 없이 같은 staging 표를 만든 경우에도 고아 row를 정리하고 이후 삭제를 보장한다.
|
||||
{ id: 'hal_0005_webmaker_inventory_cleanup', sql: `
|
||||
DELETE FROM agent_inventory_staging WHERE agent_id NOT IN (SELECT id FROM agents);
|
||||
CREATE TRIGGER IF NOT EXISTS agent_inventory_staging_agent_cleanup
|
||||
AFTER DELETE ON agents BEGIN
|
||||
DELETE FROM agent_inventory_staging WHERE agent_id=OLD.id;
|
||||
END;
|
||||
` },
|
||||
];
|
||||
|
||||
Reference in New Issue
Block a user