50 lines
1.4 KiB
Python
50 lines
1.4 KiB
Python
from repositories.match_coach_repository import get_match_coaches_grouped
|
|
from db import get_connection
|
|
|
|
def _normalize_coach(c: dict) -> dict:
|
|
return {
|
|
"coach_id": c.get("coach_id"),
|
|
"coach_name": c.get("coach_name", "") or "",
|
|
"role": c.get("role", "") or "",
|
|
}
|
|
|
|
|
|
def get_team_coaches_for_match_editor(
|
|
team_id: int,
|
|
match_id: int | None = None,
|
|
home_team_id: int | None = None,
|
|
away_team_id: int | None = None,
|
|
) -> list[dict]:
|
|
conn = get_connection()
|
|
try:
|
|
with conn.cursor() as cur:
|
|
cur.execute(
|
|
"""
|
|
SELECT
|
|
c.id AS coach_id,
|
|
COALESCE(c.player, c.name, '') AS coach_name,
|
|
COALESCE(c.amplua, '') AS role
|
|
FROM coaches c
|
|
WHERE c.team_id = %s
|
|
ORDER BY
|
|
CASE
|
|
WHEN LOWER(COALESCE(c.amplua, '')) LIKE '%%глав%%' THEN 0
|
|
ELSE 1
|
|
END,
|
|
COALESCE(c.player, c.name, ''),
|
|
c.id
|
|
""",
|
|
(team_id,),
|
|
)
|
|
rows = cur.fetchall()
|
|
|
|
return [
|
|
{
|
|
"coach_id": row[0],
|
|
"coach_name": row[1] or "",
|
|
"role": row[2] or "",
|
|
}
|
|
for row in rows
|
|
]
|
|
finally:
|
|
conn.close() |