28 lines
1.1 KiB
Plaintext
28 lines
1.1 KiB
Plaintext
-- src.program_get: одна строка программы атлета (+ активная версия).
|
||
-- На основе: новая.
|
||
-- Параметры: p_athlete_id; p_program_id.
|
||
-- Возвращает: TABLE — строка program + денормализация; чужая — пустая таблица.
|
||
|
||
-- прежняя сигнатура (без external_id) снимается — row type меняется
|
||
DROP FUNCTION IF EXISTS src.program_get(int, int);
|
||
|
||
CREATE OR REPLACE FUNCTION src.program_get(
|
||
p_athlete_id int,
|
||
p_program_id int
|
||
)
|
||
RETURNS TABLE (
|
||
id int,
|
||
athlete_id int,
|
||
title text,
|
||
created_at timestamptz,
|
||
active_version_id uuid,
|
||
active_version int
|
||
) LANGUAGE sql AS $$
|
||
SELECT p.id, p.athlete_id, p.title, p.created_at,
|
||
v.id AS active_version_id, v.version AS active_version
|
||
FROM src.program p
|
||
LEFT JOIN src.program_version v
|
||
ON v.program_id = p.id AND v.status = 'active'
|
||
WHERE p.athlete_id = p_athlete_id AND p.id = p_program_id;
|
||
$$;
|