Fix: DO$$ блок проверяет RESTORE перед DROP — идемпотентно. Версия 0.1.20
This commit is contained in:
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "ipwhitelist",
|
"name": "ipwhitelist",
|
||||||
"version": "0.1.19",
|
"version": "0.1.20",
|
||||||
"description": "IP WhiteList microservice for cloud provider",
|
"description": "IP WhiteList microservice for cloud provider",
|
||||||
"main": "server.js",
|
"main": "server.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
// ═══════════════════════════════════════════════════════════════════════════════
|
// ═══════════════════════════════════════════════════════════════════════════════
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
version: '0.1.19',
|
version: '0.1.20',
|
||||||
|
|
||||||
// ── Среда ─────────────────────────────────────────────────────────────────
|
// ── Среда ─────────────────────────────────────────────────────────────────
|
||||||
// APP_ENV=test → тестовый стенд (жёлтый баннер в UI, можно включать тестовый API)
|
// APP_ENV=test → тестовый стенд (жёлтый баннер в UI, можно включать тестовый API)
|
||||||
|
|||||||
+12
-1
@@ -65,12 +65,23 @@ async function ensureSchema(pool) {
|
|||||||
ALTER TABLE audit_log ADD COLUMN IF NOT EXISTS impersonated_by VARCHAR(255) DEFAULT NULL
|
ALTER TABLE audit_log ADD COLUMN IF NOT EXISTS impersonated_by VARCHAR(255) DEFAULT NULL
|
||||||
`).catch(() => {});
|
`).catch(() => {});
|
||||||
|
|
||||||
// Миграция: добавить RESTORE в CHECK (если ещё нет)
|
// Миграция: добавить RESTORE в CHECK — только если ещё нет (без DROP+ADD каждый раз)
|
||||||
await pool.query(`
|
await pool.query(`
|
||||||
DO $$
|
DO $$
|
||||||
DECLARE
|
DECLARE
|
||||||
cn text;
|
cn text;
|
||||||
|
has_restore boolean;
|
||||||
BEGIN
|
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
|
SELECT con.conname INTO cn
|
||||||
FROM pg_constraint con
|
FROM pg_constraint con
|
||||||
JOIN pg_class rel ON rel.oid = con.conrelid
|
JOIN pg_class rel ON rel.oid = con.conrelid
|
||||||
|
|||||||
Reference in New Issue
Block a user