VEU.WathBody/1-docs/2-db/src/func_specs/break_insert.md

1.8 KiB
Raw Blame History

src.break_insert

Открытие перерыва (Ф-14): auto — сервер по пропускам, manual — телефон.

Параметр Тип Обяз. Описание
p_athlete_id int да атлет (🛡)
p_id uuid да uuid записи — телефон/сервер
p_kind text нет illness/vacation/workload/injury/other; NULL — атлет ещё не ответил
p_source text да auto / manual
p_started_on date да первый пропущенный день
p_planned_return date нет предполагаемый возврат (ответ атлета, Ф-14.2)
p_note text да причина-текст ('' — нет)

Возвращает uuid — id перерыва.

Логика/особенности: 🛡 идемпотентность по PK uuid (повтор → существующий id); source='auto' создаёт только сервер — от sync принимается только manual (проверка на стороне API; БД фиксирует оба значения); delete нет — журнал.

Пример вызова

SELECT src.break_insert(1, 'eeee…', NULL, 'manual', '2026-10-20', '2026-10-27', 'TEST-отпуск');

Тесты

№ Тип Условие Ожидаемый результат
1 основной сценарий manual без ответа (kind NULL) uuid = p_id; kind NULL
2 граничный случай повтор p_id тот же uuid; строка одна
3 исключение p_source = 'other' исключение CHECK
4 исключение p_kind = 'spacetravel' исключение CHECK