Files
predictV1/routes/match.py
mamonov.ep 8a134239d7 Initial commit: добавление проекта predictV1
Включает модели ML для предсказаний, API маршруты, скрипты обучения и данные.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-21 17:22:58 +03:00

63 lines
1.8 KiB
Python

from fastapi import APIRouter, HTTPException
from pydantic import BaseModel
from typing import List
import psycopg2
from psycopg2.extras import RealDictCursor
router = APIRouter()
def get_db_connection():
return psycopg2.connect(
host="localhost",
port=5432,
database="korobka_db",
user="postgres",
password="postgres"
)
class HeroDetail(BaseModel):
hero_id: int
team: int
order: int
class MatchData(BaseModel):
id: int
start_time: int
leagueid: int
radiant_team_id: int
dire_team_id: int
radiant_win: bool
heroes: List[HeroDetail]
@router.post("/match/pro/add")
def add_pro_match(match: MatchData):
conn = get_db_connection()
cursor = conn.cursor()
try:
# Добавляем матч в pro_matches
cursor.execute("""
INSERT INTO pro_matches (id, start_time, leagueid, radiant_team_id, dire_team_id, radiant_win)
VALUES (%s, %s, %s, %s, %s, %s)
ON CONFLICT (id) DO NOTHING
""", (match.id, match.start_time, match.leagueid, match.radiant_team_id, match.dire_team_id, match.radiant_win))
# Добавляем детали героев в pro_details_match
for hero in match.heroes:
cursor.execute("""
INSERT INTO pro_details_match (match_id, hero_id, team, "order")
VALUES (%s, %s, %s, %s)
""", (match.id, hero.hero_id, hero.team, hero.order))
conn.commit()
cursor.close()
conn.close()
return {"status": "success", "message": f"Match {match.id} added successfully"}
except Exception as e:
conn.rollback()
cursor.close()
conn.close()
raise HTTPException(status_code=500, detail=str(e))