131 lines
3.5 KiB
Python
131 lines
3.5 KiB
Python
from db import get_connection
|
|
|
|
|
|
def replace_match_referees2(match_id: int, rows: list[dict]) -> None:
|
|
delete_query = "DELETE FROM match_referees WHERE match_id = %s;"
|
|
insert_query = """
|
|
INSERT INTO match_referees (
|
|
match_id,
|
|
referee_id,
|
|
referee_name,
|
|
role,
|
|
source,
|
|
created_at,
|
|
updated_at
|
|
)
|
|
VALUES (%s, %s, %s, %s, %s, NOW(), NOW());
|
|
"""
|
|
|
|
conn = get_connection()
|
|
try:
|
|
with conn.cursor() as cur:
|
|
cur.execute(delete_query, (match_id,))
|
|
for row in rows:
|
|
cur.execute(
|
|
insert_query,
|
|
(
|
|
row["match_id"],
|
|
row.get("referee_id"),
|
|
row["referee_name"],
|
|
row.get("role"),
|
|
row.get("source", "parser"),
|
|
),
|
|
)
|
|
conn.commit()
|
|
except Exception:
|
|
conn.rollback()
|
|
raise
|
|
finally:
|
|
conn.close()
|
|
|
|
def replace_match_referees(match_id: int, rows: list[dict]) -> None:
|
|
delete_query = "DELETE FROM match_referees WHERE match_id = %s;"
|
|
insert_query = """
|
|
INSERT INTO match_referees (
|
|
match_id,
|
|
referee_id,
|
|
referee_name,
|
|
role,
|
|
source,
|
|
created_at,
|
|
updated_at
|
|
)
|
|
VALUES (%s, %s, %s, %s, %s, NOW(), NOW());
|
|
"""
|
|
|
|
conn = get_connection()
|
|
try:
|
|
with conn.cursor() as cur:
|
|
cur.execute(delete_query, (match_id,))
|
|
|
|
for row in rows or []:
|
|
referee_id = row.get("referee_id") or row.get("id")
|
|
referee_name = (
|
|
row.get("referee_name")
|
|
or row.get("full_name")
|
|
or row.get("name")
|
|
or ""
|
|
).strip()
|
|
role = (row.get("role") or "").strip()
|
|
|
|
if not referee_name or not role:
|
|
continue
|
|
|
|
cur.execute(
|
|
insert_query,
|
|
(
|
|
match_id,
|
|
referee_id,
|
|
referee_name,
|
|
role,
|
|
row.get("source", "admin"),
|
|
),
|
|
)
|
|
|
|
conn.commit()
|
|
except Exception:
|
|
conn.rollback()
|
|
raise
|
|
finally:
|
|
conn.close()
|
|
|
|
|
|
def get_match_referees(match_id: int) -> list[dict]:
|
|
conn = get_connection()
|
|
try:
|
|
with conn.cursor() as cur:
|
|
cur.execute(
|
|
"""
|
|
SELECT
|
|
mr.referee_name,
|
|
mr.role
|
|
FROM match_referees mr
|
|
WHERE mr.match_id = %s
|
|
ORDER BY
|
|
CASE mr.role
|
|
WHEN 'Главный судья' THEN 1
|
|
WHEN 'Ассистент судьи №1' THEN 2
|
|
WHEN 'Ассистент судьи №2' THEN 3
|
|
WHEN 'Резервный судья' THEN 4
|
|
WHEN 'Инспектор' THEN 5
|
|
WHEN 'Делегат' THEN 6
|
|
ELSE 99
|
|
END,
|
|
mr.referee_name
|
|
""",
|
|
(match_id,),
|
|
)
|
|
rows = cur.fetchall()
|
|
|
|
return [
|
|
{
|
|
"referee_name": row[0] or "",
|
|
"role": row[1] or "",
|
|
}
|
|
for row in rows
|
|
]
|
|
finally:
|
|
conn.close()
|
|
|
|
|