1.8 KiB
1.8 KiB
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 |