Merge pull request 'удаление старых функций в бд (добавление и обновление всп)' (#188) from del-old-func into test

Reviewed-on: #188
This commit is contained in:
PotapovaA 2026-10-13 16:08:39 +03:00
commit 4e002150d3

View File

@ -0,0 +1,102 @@
from alembic import op
revision = "0047"
down_revision = "0046"
branch_labels = None
depends_on = None
def upgrade() -> None:
# Verify that the implementations used by the API exist before removing
# historical signatures. CREATE OR REPLACE does not replace overloads.
op.execute(
"""
DO $migration$
BEGIN
IF to_regprocedure(
'v3.add_vsp(integer, varchar, varchar, varchar, date, '
'varchar, integer, numeric, date, boolean, boolean, varchar, '
'integer, varchar, text, varchar, date)'
) IS NULL THEN
RAISE EXCEPTION 'Current v3.add_vsp function is missing';
END IF;
IF to_regprocedure(
'v3.upd_vsp(integer, integer, varchar, varchar, varchar, '
'date, varchar, integer, numeric, date, boolean, boolean, '
'varchar, integer, varchar, text, varchar, date)'
) IS NULL THEN
RAISE EXCEPTION 'Current v3.upd_vsp function is missing';
END IF;
END
$migration$;
"""
)
# The first two may still have their temporary names in production.
for function_name in ("add_vsp", "add_vsp_1"):
op.execute(
f"""
DROP FUNCTION IF EXISTS v3.{function_name}(
integer, varchar, varchar, varchar, date, varchar,
integer, numeric, date, boolean, boolean, varchar,
integer, varchar, text, varchar, integer, varchar, date
) RESTRICT
"""
)
for function_name in ("add_vsp", "add_vsp_2"):
op.execute(
f"""
DROP FUNCTION IF EXISTS v3.{function_name}(
integer, varchar, varchar, varchar, date, varchar,
integer, numeric
) RESTRICT
"""
)
op.execute(
"""
DROP FUNCTION IF EXISTS v3.upd_vsp(
integer, integer, varchar, varchar, varchar, date, varchar,
integer, numeric, date, boolean, boolean, varchar, integer,
varchar, text, varchar, integer, varchar, date
) RESTRICT
"""
)
op.execute(
"""
DROP FUNCTION IF EXISTS v3.upd_vsp(
integer, integer, varchar, varchar, varchar, date, varchar,
integer, numeric
) RESTRICT
"""
)
op.execute(
"""
DO $migration$
BEGIN
IF (
SELECT count(*)
FROM pg_proc AS p
JOIN pg_namespace AS n ON n.oid = p.pronamespace
WHERE n.nspname = 'v3' AND p.proname = 'add_vsp'
) <> 1 OR (
SELECT count(*)
FROM pg_proc AS p
JOIN pg_namespace AS n ON n.oid = p.pronamespace
WHERE n.nspname = 'v3' AND p.proname = 'upd_vsp'
) <> 1 THEN
RAISE EXCEPTION 'Unexpected v3.add_vsp or v3.upd_vsp overload remains';
END IF;
END
$migration$;
"""
)
def downgrade() -> None:
# The obsolete function bodies are not part of the current schema.
pass