
    "\i	              
       (   d Z ddlmZmZmZ ddlmZ ddlmZ ddl	m	Z	 ddl
mZ ddlmZ ddlmZ dd	lmZ  e       Z G d
 de      Zej)                  d       edd       edd       eddd       ee      fdee   dee   dedefd       Zy)zPrediction API endpoints    )	APIRouterDependsQuery)Session)Optional)datetime)get_db)PredictionRepository)ModelRepository)	BaseModelc                       e Zd ZU eed<   eed<   eed<   eed<   eed<   eed<   eed<   eed<   ee   ed	<   eed
<    G d d      Z	y)PredictionResponseidmatch_idhome_team_nameaway_team_name
match_dateprob_home_win	prob_drawprob_away_win
confidencemodel_versionc                       e Zd ZdZy)PredictionResponse.ConfigTN)__name__
__module____qualname__from_attributes     /app/app/api/predictions.pyConfigr      s    r    r"   N)
r   r   r   int__annotations__strr   floatr   r"   r   r    r!   r   r      sJ    GM r    r   z/predictions/upcomingNz	League ID)descriptionlatestzModel versiond      i  )geleleaguer   limitdbc                   K   d }| r| j                         r	 t        |       }t	        |      }t        |      }|dk(  r|j                         }n|j                  |      }|sg S |j                  ||j                  |      }g }	|D ]  }
|
j                  }|	j                  t        |
j                  |
j                  |j                  j                  |j                   j                  |j"                  |
j$                  |
j&                  |
j(                  |
j*                  |j,                  t/        |
dd       t/        |
dd                     |	S # t        t        f$ r d }Y >w xY ww)Nr(   )	league_idmodel_idr.   analysis_textanalysis_generated_at)r   r   r   r   r   r   r   r   r   r   r3   r4   )stripr#   
ValueError	TypeErrorr
   r   
get_latestget_by_versionget_upcomingr   matchappendr   r   	home_teamname	away_teamr   r   r   r   r   versiongetattr)r-   r   r.   r/   r1   prediction_repo
model_repomodelpredictionsresultpredr;   s               r!   get_upcoming_predictionsrH      sM     I&,,.	FI +2.O $J %%'))-8	!.. / K F

(ww]] ??// ??//'',,nn,,--!$>")$0G"N
 	 " MM I& 	I	s(   E%E D*E%E"E%!E""E%)__doc__fastapir   r   r   sqlalchemy.ormr   typingr   r   app.core.db.databaser	   .app.core.db.repositories.prediction_repositoryr
   )app.core.db.repositories.model_repositoryr   pydanticr   routerr   getr%   r#   rH   r   r    r!   <module>rS      s     - - "   ' O E 	  #$!$K@#(#OsqT*&/	0SM0C=0 0 		0 %0r    