From 3e15fd4973af093f76e7a047a466d25f5d758dc3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CNaeel=E2=80=9D?= Date: Thu, 9 Jul 2026 00:26:31 +0400 Subject: [PATCH] =?UTF-8?q?Fix:=20DO$$=20=D0=B1=D0=BB=D0=BE=D0=BA=20=D0=BF?= =?UTF-8?q?=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D1=8F=D0=B5=D1=82=20RESTORE=20?= =?UTF-8?q?=D0=BF=D0=B5=D1=80=D0=B5=D0=B4=20DROP=20=E2=80=94=20=D0=B8?= =?UTF-8?q?=D0=B4=D0=B5=D0=BC=D0=BF=D0=BE=D1=82=D0=B5=D0=BD=D1=82=D0=BD?= =?UTF-8?q?=D0=BE.=20=D0=92=D0=B5=D1=80=D1=81=D0=B8=D1=8F=200.1.20?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 2 +- v2/src/config/index.js | 2 +- v2/src/db/schema.js | 13 ++++++++++++- 3 files changed, 14 insertions(+), 3 deletions(-) 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