diff --git a/package.json b/package.json index fac3b1a..a49dabf 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ipwhitelist", - "version": "0.1.19", + "version": "0.1.20", "description": "IP WhiteList microservice for cloud provider", "main": "server.js", "scripts": { diff --git a/v2/src/config/index.js b/v2/src/config/index.js index f3f29dd..698b12e 100644 --- a/v2/src/config/index.js +++ b/v2/src/config/index.js @@ -8,7 +8,7 @@ // ═══════════════════════════════════════════════════════════════════════════════ module.exports = { - version: '0.1.19', + version: '0.1.20', // ── Среда ───────────────────────────────────────────────────────────────── // APP_ENV=test → тестовый стенд (жёлтый баннер в UI, можно включать тестовый API) diff --git a/v2/src/db/schema.js b/v2/src/db/schema.js index 9acae6d..cf8e905 100644 --- a/v2/src/db/schema.js +++ b/v2/src/db/schema.js @@ -65,12 +65,23 @@ async function ensureSchema(pool) { ALTER TABLE audit_log ADD COLUMN IF NOT EXISTS impersonated_by VARCHAR(255) DEFAULT NULL `).catch(() => {}); - // Миграция: добавить RESTORE в CHECK (если ещё нет) + // Миграция: добавить RESTORE в CHECK — только если ещё нет (без DROP+ADD каждый раз) await pool.query(` DO $$ DECLARE cn text; + has_restore boolean; BEGIN + -- Проверяем, есть ли уже RESTORE в constraint + SELECT con.consrc LIKE '%RESTORE%' OR pg_get_constraintdef(con.oid) LIKE '%RESTORE%' INTO has_restore + FROM pg_constraint con + JOIN pg_class rel ON rel.oid = con.conrelid + WHERE rel.relname = 'audit_log' AND con.contype = 'c'; + -- Если уже есть — ничего не делаем + IF has_restore THEN + RAISE NOTICE 'audit_log CHECK already includes RESTORE, skipping'; + RETURN; + END IF; SELECT con.conname INTO cn FROM pg_constraint con JOIN pg_class rel ON rel.oid = con.conrelid