-
Andrey Azeev authored
IntegrityError по unique uq_rate_limit_profiles_name Postgres поднимает уже на session.flush() (INSERT/UPDATE ради profile.id), а try/except IntegrityError оборачивал только commit(). Итог: клиент получал 500 вместо 400 при дублирующемся имени. Fix: try расширен на flush -> добавление правил -> commit. Ловит обе ветки: CREATE (вставка занятого имени) и UPDATE (переименование в занятое имя). rollback идемпотентен в рамках async with session. Тест-гэп: дубль-name в upsert не покрыт (CI был зелёный с багом).
61db3809Andrey Azeev authoredIntegrityError по unique uq_rate_limit_profiles_name Postgres поднимает уже на session.flush() (INSERT/UPDATE ради profile.id), а try/except IntegrityError оборачивал только commit(). Итог: клиент получал 500 вместо 400 при дублирующемся имени. Fix: try расширен на flush -> добавление правил -> commit. Ловит обе ветки: CREATE (вставка занятого имени) и UPDATE (переименование в занятое имя). rollback идемпотентен в рамках async with session. Тест-гэп: дубль-name в upsert не покрыт (CI был зелёный с багом).
Loading