Merge branch 'fix/migration-reopen-operation-check' into 'main'

fix(db): record_drafts_operation_check + REOPEN (500 на «Открыть заново»)

See merge request 2-6/2-6-4/terravault/ordinis!307
This commit is contained in:
Александр Зимин
2026-06-22 10:27:33 +00:00
2 changed files with 43 additions and 0 deletions
@@ -0,0 +1,42 @@
<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog
xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-4.27.xsd">
<!--
Расширяем record_drafts_operation_check на REOPEN.
Контекст: в 0019 (approval-workflow-v2) был добавлен CHECK constraint
`operation IN ('CREATE', 'UPDATE', 'CLOSE')`. В v2.55.0 добавлена
операция REOPEN (вернуть закрытую запись в active state), но DB
constraint про неё не знал → INSERT REOPEN-draft падал:
ERROR: new row for relation "record_drafts" violates check
constraint "record_drafts_operation_check"
→ 500 на submit REOPEN-draft (DraftService.submit).
Дроп + пересоздание с REOPEN. IF EXISTS — идемпотентно (на случай
если на каком-то env constraint уже снят вручную).
-->
<changeSet id="0032-1-record-drafts-allow-reopen" author="ordinis">
<comment>Extend record_drafts_operation_check: add REOPEN</comment>
<sql>
ALTER TABLE record_drafts
DROP CONSTRAINT IF EXISTS record_drafts_operation_check;
ALTER TABLE record_drafts
ADD CONSTRAINT record_drafts_operation_check
CHECK (operation IN ('CREATE', 'UPDATE', 'CLOSE', 'REOPEN'));
</sql>
<rollback>
ALTER TABLE record_drafts
DROP CONSTRAINT IF EXISTS record_drafts_operation_check;
ALTER TABLE record_drafts
ADD CONSTRAINT record_drafts_operation_check
CHECK (operation IN ('CREATE', 'UPDATE', 'CLOSE'));
</rollback>
</changeSet>
</databaseChangeLog>
@@ -41,5 +41,6 @@
<include file="changes/0029-drop-self-approve-constraints.xml" relativeToChangelogFile="true"/> <include file="changes/0029-drop-self-approve-constraints.xml" relativeToChangelogFile="true"/>
<include file="changes/0030-dictionary-delete-cascade.xml" relativeToChangelogFile="true"/> <include file="changes/0030-dictionary-delete-cascade.xml" relativeToChangelogFile="true"/>
<include file="changes/0031-dictionary-soft-delete-approval.xml" relativeToChangelogFile="true"/> <include file="changes/0031-dictionary-soft-delete-approval.xml" relativeToChangelogFile="true"/>
<include file="changes/0032-record-drafts-reopen-operation.xml" relativeToChangelogFile="true"/>
</databaseChangeLog> </databaseChangeLog>